/*global describe:false, it:false */ "use client"; require(["lib/architect/architect", "lib/chai/chai"], function (architect, chai) { var expect = chai.expect; var defSettings = { user: { "@bar": "foo", "bar": {"json()": "test"} }, state: { oi : { hi : 10 } }, project: { hi: 0 } }; var copySettings = JSON.parse(JSON.stringify(defSettings)); expect.setupArchitectTest([ { packagePath: "plugins/c9.core/c9", workspaceId: "user/javruben/dev", env: "test", }, "plugins/c9.vfs.client/vfs_client", "plugins/c9.vfs.client/endpoint", "plugins/c9.ide.auth/auth", "plugins/c9.core/ext", "plugins/c9.core/http-xhr", "plugins/c9.ide.ui/lib_apf", { packagePath: "plugins/c9.core/settings", settings: defSettings, debug: true }, "plugins/c9.ide.ui/ui", "plugins/c9.core/api", // Mock plugins { consumes: [], provides: ["fs", "auth.bootstrap", "info", "proc", "dialog.error"], setup: expect.html.mocked }, { consumes: ["settings"], provides: [], setup: main } ], architect); function main(options, imports, register) { var settings = imports.settings; describe('settings', function() { it('should expose the settings in it\'s model', function(done) { expect(settings.model.project).to.deep.equal(defSettings.project); expect(settings.model.user).to.deep.equal(defSettings.user); expect(settings.model.state).to.deep.equal(defSettings.state); done(); }); it('should expose the tree via the get method', function(done) { expect(settings.get('user/@bar')).to.equal("foo"); expect(settings.get('user/bar')).to.equal("test"); done(); }); it('should allow altering the tree via the set method', function(done) { var v = Math.random().toString(); settings.set('user/@bar', v) expect(settings.get('user/@bar')).to.equal(v); v = Math.random().toString(); settings.set('user/bar', v) expect(settings.get('user/bar')).to.equal(v); done(); }); it('should allow new settings to be read from json', function(done) { settings.read(copySettings); settings.once("read", function(){ expect(settings.get("user/@bar")).to.equal("foo"); done(); }); }); it('should call event listener on tree node', function(done) { settings.once("user", function(){ expect(settings.get("user/@bar")).to.equal("test"); done(); }); settings.set("user/@bar", "test"); }); it('should allow type conversion for JSON and Booleans', function(done) { settings.set('user/@bar', "true") expect(settings.getBool('user/@bar')).to.equal(true); settings.setJson('user/bar', {test:1}) expect(settings.getJson('user/bar')).property("test").to.equal(1); done(); }); it('should set default values only when they are not set already', function(done) { settings.setDefaults('user', [ ["bar", "10"], ["test", "15"] ]); expect(settings.exist('user')).to.equal(true); expect(settings.get('user/@bar')).to.not.equal("10"); expect(settings.get('user/@test')).to.equal("15"); done(); }); it('should set default values the node doesn\'t exist yet', function(done) { settings.setDefaults('new', [ ["bar", "10"], ["test", "15"] ]); expect(settings.exist('new')).to.equal(true); expect(settings.get('new/@bar')).to.equal("10"); expect(settings.get('new/@test')).to.equal("15"); done(); }); }); onload && onload(); } });