diff --git a/platform/commonUI/edit/src/actions/RemoveAction.js b/platform/commonUI/edit/src/actions/RemoveAction.js index 1a7d5f8ea1..68d3296112 100644 --- a/platform/commonUI/edit/src/actions/RemoveAction.js +++ b/platform/commonUI/edit/src/actions/RemoveAction.js @@ -81,7 +81,7 @@ define( var object = (context || {}).domainObject, contextCapability = object && object.getCapability("context"), parent = contextCapability && contextCapability.getParent(), - parentType = parent.getCapability('type'), + parentType = parent && parent.getCapability('type'), parentCreatable = parentType && parentType.hasFeature('creation'); // Only creatable types should be modifiable diff --git a/platform/commonUI/edit/test/actions/EditActionSpec.js b/platform/commonUI/edit/test/actions/EditActionSpec.js index e0a47feb18..b0fb481b35 100644 --- a/platform/commonUI/edit/test/actions/EditActionSpec.js +++ b/platform/commonUI/edit/test/actions/EditActionSpec.js @@ -10,6 +10,7 @@ define( mockNavigationService, mockLog, mockDomainObject, + mockType, actionContext, action; @@ -30,6 +31,13 @@ define( "domainObject", [ "getId", "getModel", "getCapability" ] ); + mockType = jasmine.createSpyObj( + "type", + [ "hasFeature" ] + ); + + mockDomainObject.getCapability.andReturn(mockType); + mockType.hasFeature.andReturn(true); actionContext = { domainObject: mockDomainObject }; @@ -44,6 +52,8 @@ define( it("is only applicable when a domain object is present", function () { expect(EditAction.appliesTo(actionContext)).toBeTruthy(); expect(EditAction.appliesTo({})).toBeFalsy(); + // Should have checked for creatability + expect(mockType.hasFeature).toHaveBeenCalledWith('creation'); }); it("changes URL path to edit mode when performed", function () { diff --git a/platform/commonUI/edit/test/actions/PropertiesActionSpec.js b/platform/commonUI/edit/test/actions/PropertiesActionSpec.js index ad0f6ad895..604da4bc69 100644 --- a/platform/commonUI/edit/test/actions/PropertiesActionSpec.js +++ b/platform/commonUI/edit/test/actions/PropertiesActionSpec.js @@ -18,7 +18,10 @@ define( beforeEach(function () { capabilities = { - type: { getProperties: function () { return []; } }, + type: { + getProperties: function () { return []; }, + hasFeature: jasmine.createSpy('hasFeature') + }, persistence: jasmine.createSpyObj("persistence", ["persist"]), mutation: jasmine.createSpy("mutation") }; @@ -38,6 +41,7 @@ define( } }; + capabilities.type.hasFeature.andReturn(true); capabilities.mutation.andReturn(true); action = new PropertiesAction(dialogService, context); @@ -65,6 +69,8 @@ define( it("is only applicable when a domain object is in context", function () { expect(PropertiesAction.appliesTo(context)).toBeTruthy(); expect(PropertiesAction.appliesTo({})).toBeFalsy(); + // Make sure it checked for creatability + expect(capabilities.type.hasFeature).toHaveBeenCalledWith('creation'); }); }); } diff --git a/platform/commonUI/edit/test/actions/RemoveActionSpec.js b/platform/commonUI/edit/test/actions/RemoveActionSpec.js index 459c14a31e..e6f73e06b1 100644 --- a/platform/commonUI/edit/test/actions/RemoveActionSpec.js +++ b/platform/commonUI/edit/test/actions/RemoveActionSpec.js @@ -12,6 +12,7 @@ define( mockContext, mockMutation, mockPersistence, + mockType, actionContext, model, capabilities, @@ -47,16 +48,18 @@ define( mockContext = jasmine.createSpyObj("context", [ "getParent" ]); mockMutation = jasmine.createSpyObj("mutation", [ "invoke" ]); mockPersistence = jasmine.createSpyObj("persistence", [ "persist" ]); + mockType = jasmine.createSpyObj("type", [ "hasFeature" ]); mockDomainObject.getId.andReturn("test"); mockDomainObject.getCapability.andReturn(mockContext); mockContext.getParent.andReturn(mockParent); - + mockType.hasFeature.andReturn(true); capabilities = { mutation: mockMutation, - persistence: mockPersistence + persistence: mockPersistence, + type: mockType }; model = { composition: [ "a", "test", "b", "c" ] @@ -73,6 +76,9 @@ define( mockContext.getParent.andReturn(undefined); expect(RemoveAction.appliesTo(actionContext)).toBeFalsy(); + + // Also verify that creatability was checked + expect(mockType.hasFeature).toHaveBeenCalledWith('creation'); }); it("mutates the parent when performed", function () {