From 963fa8f9ffa15050294c7e6e01da7f2535cfb7b1 Mon Sep 17 00:00:00 2001 From: Alan Plum Date: Wed, 30 Mar 2016 15:09:14 +0200 Subject: [PATCH] Port #1742 test to 3.0 --- .../tests/shell/shell-foxx-manager-spec.js | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 js/server/tests/shell/shell-foxx-manager-spec.js diff --git a/js/server/tests/shell/shell-foxx-manager-spec.js b/js/server/tests/shell/shell-foxx-manager-spec.js new file mode 100644 index 0000000000..e8b37ebb1f --- /dev/null +++ b/js/server/tests/shell/shell-foxx-manager-spec.js @@ -0,0 +1,46 @@ +/*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.startupPath, "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: '*'}}; + var deps2 = {clobbered: {name: 'completely', required: true, version: '*'}}; + + var app = FoxxManager.lookupApp(mount); + expect(app.manifest.dependencies).to.eql({}); + var filename = app.main.context.applicationContext.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.scanFoxx(mount, {replace: true}); + app = FoxxManager.lookupApp(mount); + expect(app.manifest.dependencies).to.eql(deps1); + + json.dependencies = deps2; + fs.writeFileSync(filename, JSON.stringify(json)); + FoxxManager.scanFoxx(mount, {replace: true}); + app = FoxxManager.lookupApp(mount); + expect(app.manifest.dependencies).to.eql(deps2); + }); + }); +});