[Actions] Update specs

Update specs for actions which change domain objects to
reflect their restriction to types that are creatable,
WTD-723.
This commit is contained in:
Victor Woeltjen 2015-01-27 13:09:23 -08:00
parent 4c42d4de28
commit aa9ceeb2be
4 changed files with 26 additions and 4 deletions

View File

@ -81,7 +81,7 @@ define(
var object = (context || {}).domainObject, var object = (context || {}).domainObject,
contextCapability = object && object.getCapability("context"), contextCapability = object && object.getCapability("context"),
parent = contextCapability && contextCapability.getParent(), parent = contextCapability && contextCapability.getParent(),
parentType = parent.getCapability('type'), parentType = parent && parent.getCapability('type'),
parentCreatable = parentType && parentType.hasFeature('creation'); parentCreatable = parentType && parentType.hasFeature('creation');
// Only creatable types should be modifiable // Only creatable types should be modifiable

View File

@ -10,6 +10,7 @@ define(
mockNavigationService, mockNavigationService,
mockLog, mockLog,
mockDomainObject, mockDomainObject,
mockType,
actionContext, actionContext,
action; action;
@ -30,6 +31,13 @@ define(
"domainObject", "domainObject",
[ "getId", "getModel", "getCapability" ] [ "getId", "getModel", "getCapability" ]
); );
mockType = jasmine.createSpyObj(
"type",
[ "hasFeature" ]
);
mockDomainObject.getCapability.andReturn(mockType);
mockType.hasFeature.andReturn(true);
actionContext = { domainObject: mockDomainObject }; actionContext = { domainObject: mockDomainObject };
@ -44,6 +52,8 @@ define(
it("is only applicable when a domain object is present", function () { it("is only applicable when a domain object is present", function () {
expect(EditAction.appliesTo(actionContext)).toBeTruthy(); expect(EditAction.appliesTo(actionContext)).toBeTruthy();
expect(EditAction.appliesTo({})).toBeFalsy(); expect(EditAction.appliesTo({})).toBeFalsy();
// Should have checked for creatability
expect(mockType.hasFeature).toHaveBeenCalledWith('creation');
}); });
it("changes URL path to edit mode when performed", function () { it("changes URL path to edit mode when performed", function () {

View File

@ -18,7 +18,10 @@ define(
beforeEach(function () { beforeEach(function () {
capabilities = { capabilities = {
type: { getProperties: function () { return []; } }, type: {
getProperties: function () { return []; },
hasFeature: jasmine.createSpy('hasFeature')
},
persistence: jasmine.createSpyObj("persistence", ["persist"]), persistence: jasmine.createSpyObj("persistence", ["persist"]),
mutation: jasmine.createSpy("mutation") mutation: jasmine.createSpy("mutation")
}; };
@ -38,6 +41,7 @@ define(
} }
}; };
capabilities.type.hasFeature.andReturn(true);
capabilities.mutation.andReturn(true); capabilities.mutation.andReturn(true);
action = new PropertiesAction(dialogService, context); action = new PropertiesAction(dialogService, context);
@ -65,6 +69,8 @@ define(
it("is only applicable when a domain object is in context", function () { it("is only applicable when a domain object is in context", function () {
expect(PropertiesAction.appliesTo(context)).toBeTruthy(); expect(PropertiesAction.appliesTo(context)).toBeTruthy();
expect(PropertiesAction.appliesTo({})).toBeFalsy(); expect(PropertiesAction.appliesTo({})).toBeFalsy();
// Make sure it checked for creatability
expect(capabilities.type.hasFeature).toHaveBeenCalledWith('creation');
}); });
}); });
} }

View File

@ -12,6 +12,7 @@ define(
mockContext, mockContext,
mockMutation, mockMutation,
mockPersistence, mockPersistence,
mockType,
actionContext, actionContext,
model, model,
capabilities, capabilities,
@ -47,16 +48,18 @@ define(
mockContext = jasmine.createSpyObj("context", [ "getParent" ]); mockContext = jasmine.createSpyObj("context", [ "getParent" ]);
mockMutation = jasmine.createSpyObj("mutation", [ "invoke" ]); mockMutation = jasmine.createSpyObj("mutation", [ "invoke" ]);
mockPersistence = jasmine.createSpyObj("persistence", [ "persist" ]); mockPersistence = jasmine.createSpyObj("persistence", [ "persist" ]);
mockType = jasmine.createSpyObj("type", [ "hasFeature" ]);
mockDomainObject.getId.andReturn("test"); mockDomainObject.getId.andReturn("test");
mockDomainObject.getCapability.andReturn(mockContext); mockDomainObject.getCapability.andReturn(mockContext);
mockContext.getParent.andReturn(mockParent); mockContext.getParent.andReturn(mockParent);
mockType.hasFeature.andReturn(true);
capabilities = { capabilities = {
mutation: mockMutation, mutation: mockMutation,
persistence: mockPersistence persistence: mockPersistence,
type: mockType
}; };
model = { model = {
composition: [ "a", "test", "b", "c" ] composition: [ "a", "test", "b", "c" ]
@ -73,6 +76,9 @@ define(
mockContext.getParent.andReturn(undefined); mockContext.getParent.andReturn(undefined);
expect(RemoveAction.appliesTo(actionContext)).toBeFalsy(); expect(RemoveAction.appliesTo(actionContext)).toBeFalsy();
// Also verify that creatability was checked
expect(mockType.hasFeature).toHaveBeenCalledWith('creation');
}); });
it("mutates the parent when performed", function () { it("mutates the parent when performed", function () {