1
0
Fork 0
arangodb/tests/js/server/shell/shell-foxx-manager-spec.js

47 lines
1.7 KiB
JavaScript

/* global describe, beforeEach, afterEach, it*/
'use strict';
var expect = require('chai').expect;
var FoxxManager = require('org/arangodb/foxx/manager');
var fs = require('fs');
var internal = require('internal');
var basePath = fs.makeAbsolute(fs.join(internal.pathForTesting('common'), 'test-data', 'apps'));
describe('Foxx Manager', function () {
describe('when manifest changes', function () {
var mount;
beforeEach(function () {
mount = '/unittest/clobbered-manifest';
FoxxManager.install(fs.join(basePath, 'minimal-working-manifest'), mount);
});
afterEach(function () {
FoxxManager.uninstall(mount, {force: true});
});
it("doesn't mutilate mounted apps", function () {
var deps1 = {hello: {name: 'world', required: true, version: '*', multiple: false}};
var deps2 = {clobbered: {name: 'completely', required: true, version: '*', multiple: false}};
var service = FoxxManager.lookupService(mount);
expect(service.manifest.dependencies).to.eql({});
var filename = service.main.context.fileName('manifest.json');
var rawJson = fs.readFileSync(filename, 'utf-8');
var json = JSON.parse(rawJson);
json.dependencies = deps1;
fs.writeFileSync(filename, JSON.stringify(json));
FoxxManager.reloadInstalledService(mount);
service = FoxxManager.lookupService(mount);
expect(service.manifest.dependencies).to.eql(deps1);
json.dependencies = deps2;
fs.writeFileSync(filename, JSON.stringify(json));
FoxxManager.reloadInstalledService(mount);
service = FoxxManager.lookupService(mount);
expect(service.manifest.dependencies).to.eql(deps2);
});
});
});