[Core] Spec for domain objects
Spec for DomainObject and DomainObjectProvider; part of ongoing test coverage for transition of platform/core bundle, WTD-573.
This commit is contained in:
@@ -9,6 +9,65 @@ define(
|
||||
"use strict";
|
||||
|
||||
describe("The domain object provider", function () {
|
||||
var mockModelService,
|
||||
mockCapabilityService,
|
||||
mockQ,
|
||||
provider;
|
||||
|
||||
function mockPromise(value) {
|
||||
return (value && value.then) ? value : {
|
||||
then: function (callback) {
|
||||
return mockPromise(callback(value));
|
||||
},
|
||||
// Provide a synchronous way to get a value out
|
||||
// of this phony promise.
|
||||
testValue: value
|
||||
};
|
||||
}
|
||||
|
||||
function mockAll(mockPromises) {
|
||||
return mockPromise(mockPromises.map(function (p) {
|
||||
return mockPromise(p).testValue;
|
||||
}));
|
||||
}
|
||||
|
||||
beforeEach(function () {
|
||||
mockModelService = jasmine.createSpyObj(
|
||||
"modelService",
|
||||
[ "getModels" ]
|
||||
);
|
||||
mockCapabilityService = jasmine.createSpyObj(
|
||||
"capabilityService",
|
||||
[ "getCapabilities" ]
|
||||
);
|
||||
mockQ = {
|
||||
when: mockPromise,
|
||||
all: mockAll
|
||||
};
|
||||
provider = new DomainObjectProvider(
|
||||
mockModelService,
|
||||
mockCapabilityService,
|
||||
mockQ
|
||||
);
|
||||
});
|
||||
|
||||
it("requests models from the model service", function () {
|
||||
var ids = [ "a", "b", "c" ];
|
||||
mockModelService.getModels.andReturn(mockPromise({}));
|
||||
provider.getObjects(ids);
|
||||
expect(mockModelService.getModels).toHaveBeenCalledWith(ids);
|
||||
});
|
||||
|
||||
|
||||
it("instantiates objects with provided models", function () {
|
||||
var ids = [ "a", "b", "c"],
|
||||
model = { someKey: "some value"},
|
||||
result;
|
||||
mockModelService.getModels.andReturn(mockPromise({ a: model }));
|
||||
result = provider.getObjects(ids).testValue;
|
||||
expect(result.a.getId()).toEqual("a");
|
||||
expect(result.a.getModel()).toEqual(model);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user