[Creation] Update CreationService spec

This commit is contained in:
Victor Woeltjen
2015-11-05 15:36:44 -08:00
parent 62b9eb5180
commit 09bae63de7

View File

@ -30,9 +30,7 @@ define(
"use strict"; "use strict";
describe("The creation service", function () { describe("The creation service", function () {
var mockPersistenceService, var mockQ,
mockNow,
mockQ,
mockLog, mockLog,
mockParentObject, mockParentObject,
mockNewObject, mockNewObject,
@ -40,7 +38,9 @@ define(
mockPersistenceCapability, mockPersistenceCapability,
mockCompositionCapability, mockCompositionCapability,
mockContextCapability, mockContextCapability,
mockCreationCapability,
mockCapabilities, mockCapabilities,
mockNewPersistenceCapability,
creationService; creationService;
function mockPromise(value) { function mockPromise(value) {
@ -60,11 +60,6 @@ define(
} }
beforeEach(function () { beforeEach(function () {
mockPersistenceService = jasmine.createSpyObj(
"persistenceService",
[ "createObject" ]
);
mockNow = jasmine.createSpy('now');
mockQ = { when: mockPromise, reject: mockReject }; mockQ = { when: mockPromise, reject: mockReject };
mockLog = jasmine.createSpyObj( mockLog = jasmine.createSpyObj(
"$log", "$log",
@ -76,7 +71,7 @@ define(
); );
mockNewObject = jasmine.createSpyObj( mockNewObject = jasmine.createSpyObj(
"newObject", "newObject",
[ "getId" ] [ "getId", "getCapability", "useCapability" ]
); );
mockMutationCapability = jasmine.createSpyObj( mockMutationCapability = jasmine.createSpyObj(
"mutation", "mutation",
@ -94,19 +89,22 @@ define(
"context", "context",
["getPath"] ["getPath"]
); );
mockCreationCapability = jasmine.createSpyObj(
"creation",
["create", "invoke"]
);
mockCapabilities = { mockCapabilities = {
mutation: mockMutationCapability, mutation: mockMutationCapability,
persistence: mockPersistenceCapability, persistence: mockPersistenceCapability,
composition: mockCompositionCapability, composition: mockCompositionCapability,
context: mockContextCapability context: mockContextCapability,
creation: mockCreationCapability
}; };
mockNewPersistenceCapability = jasmine.createSpyObj(
mockPersistenceService.createObject.andReturn( "new-persistence",
mockPromise(true) [ "persist", "getSpace" ]
); );
mockNow.andReturn(12321);
mockParentObject.getCapability.andCallFake(function (key) { mockParentObject.getCapability.andCallFake(function (key) {
return mockCapabilities[key]; return mockCapabilities[key];
}); });
@ -115,9 +113,16 @@ define(
}); });
mockParentObject.getId.andReturn('parentId'); mockParentObject.getId.andReturn('parentId');
mockPersistenceCapability.persist.andReturn( mockNewObject.getId.andReturn('newId');
mockPromise(true) mockNewObject.getCapability.andCallFake(function (c) {
); return c === 'persistence' ?
mockNewPersistenceCapability : undefined;
});
mockPersistenceCapability.persist
.andReturn(mockPromise(true));
mockNewPersistenceCapability.persist
.andReturn(mockPromise(true));
mockMutationCapability.invoke.andReturn(mockPromise(true)); mockMutationCapability.invoke.andReturn(mockPromise(true));
mockPersistenceCapability.getSpace.andReturn("testSpace"); mockPersistenceCapability.getSpace.andReturn("testSpace");
@ -125,10 +130,12 @@ define(
mockPromise([mockNewObject]) mockPromise([mockNewObject])
); );
mockCompositionCapability.add.andReturn(mockPromise(true)); mockCompositionCapability.add.andReturn(mockPromise(true));
mockCreationCapability.create.andReturn(mockNewObject);
mockCreationCapability.invoke.andCallFake(function (model) {
return mockCreationCapability.create(model);
});
creationService = new CreationService( creationService = new CreationService(
mockPersistenceService,
mockNow,
mockQ, mockQ,
mockLog mockLog
); );
@ -137,21 +144,18 @@ define(
it("allows new objects to be created", function () { it("allows new objects to be created", function () {
var model = { someKey: "some value" }; var model = { someKey: "some value" };
creationService.createObject(model, mockParentObject); creationService.createObject(model, mockParentObject);
expect(mockPersistenceService.createObject).toHaveBeenCalledWith( expect(mockCreationCapability.create)
"testSpace", .toHaveBeenCalledWith(model);
jasmine.any(String), // the object id; generated UUID
model
);
}); });
it("adds new id's to the parent's composition", function () { it("adds new objects to the parent's composition", function () {
var model = { someKey: "some value" }, var model = { someKey: "some value" },
parentModel = { composition: ["notAnyUUID"] }; parentModel = { composition: ["notAnyUUID"] };
creationService.createObject(model, mockParentObject); creationService.createObject(model, mockParentObject);
// Verify that a new ID was added // Verify that a new ID was added
expect(mockCompositionCapability.add) expect(mockCompositionCapability.add)
.toHaveBeenCalledWith(jasmine.any(String)); .toHaveBeenCalledWith(mockNewObject);
}); });
it("provides the newly-created object", function () { it("provides the newly-created object", function () {
@ -207,11 +211,6 @@ define(
expect(mockLog.error).toHaveBeenCalled(); expect(mockLog.error).toHaveBeenCalled();
}); });
it("attaches a 'persisted' timestamp", function () {
var model = { someKey: "some value" };
creationService.createObject(model, mockParentObject);
expect(model.persisted).toEqual(mockNow());
});
}); });
} }