diff --git a/platform/commonUI/edit/test/actions/PropertiesActionSpec.js b/platform/commonUI/edit/test/actions/PropertiesActionSpec.js new file mode 100644 index 0000000000..c7e917e264 --- /dev/null +++ b/platform/commonUI/edit/test/actions/PropertiesActionSpec.js @@ -0,0 +1,67 @@ +/*global define,describe,it,xit,expect,beforeEach*/ + +define( + ['../../src/actions/PropertiesAction'], + function (PropertiesAction) { + "use strict"; + + describe("Properties action", function () { + var captured, model, object, context, input, dialogService, action; + + function capture(k) { return function (v) { captured[k] = v; }; } + + beforeEach(function () { + var capabilities = { + type: { getProperties: function () { return []; } }, + persistence: { + persist: function () { + captured.persisted = true; + return promises.as(true); + } + }, + mutation: { + mutate: function (c) { + captured.mutated = true; + return promises.as(c(model)); + } + } + }; + model = {}; + input = {}; + object = { + getId: function () { return 'test-id'; }, + getCapability: function (k) { + return promises.as(capabilities[k]); + }, + getModel: function () { return model; } + }; + context = { someKey: "some value "}; + dialogService = { + getUserInput: function () { + return promises.as(input); + } + }; + captured = {}; + action = new PropertiesAction(object, context, dialogService); + }); + + + it("provides action metadata", function () { + var metadata = action.metadata(); + expect(metadata.context).toEqual(context); + expect(metadata.category).toEqual('contextual'); + }); + + it("persists when an action is performed", function () { + action.perform(); + expect(captured.persisted).toBeTruthy(); + }); + + it("does not persist any changes upon cancel", function () { + input = undefined; + action.perform(); + expect(captured.persisted).toBeFalsy(); + }); + }); + } +); diff --git a/platform/commonUI/edit/test/actions/PropertiesDialogSpec.js b/platform/commonUI/edit/test/actions/PropertiesDialogSpec.js new file mode 100644 index 0000000000..741e92c981 --- /dev/null +++ b/platform/commonUI/edit/test/actions/PropertiesDialogSpec.js @@ -0,0 +1,51 @@ +/*global define,describe,it,xit,expect,beforeEach*/ + +define( + ["../../src/actions/PropertiesDialog"], + function (PropertiesDialog) { + "use strict"; + + describe("Properties dialog", function () { + + var type, properties, domainObject, model, dialog; + + beforeEach(function () { + type = { + getProperties: function () { return properties; } + }; + domainObject = { + getModel: function () { return model; } + }; + model = { x: "initial value" }; + + dialog = new PropertiesDialog(type, domainObject); + }); + + it("provides sections based on type properties", function () { + expect( + dialog.getSections()[0].rows.length + ).toEqual(properties.length); + }); + + it("pulls initial values from object model", function () { + expect( + dialog.getSections()[0].rows[0].value + ).toEqual("initial value"); + }); + + it("populates models with form results", function () { + dialog.updateModel(model, { + a: "new value", + b: "other new value", + c: 42 + }); + expect(model).toEqual({ + x: "new value", + y: "other new value", + z: 42 + }); + }); + + }); + } +); diff --git a/platform/commonUI/edit/test/suite.json b/platform/commonUI/edit/test/suite.json index ccfc84e53a..1456a1f621 100644 --- a/platform/commonUI/edit/test/suite.json +++ b/platform/commonUI/edit/test/suite.json @@ -3,6 +3,8 @@ "EditController", "actions/CancelAction", "actions/EditAction", + "actions/PropertiesAction", + "actions/PropertiesDialog", "actions/RemoveAction", "actions/SaveAction", "capabilities/EditableContextCapability",