Merged from master
This commit is contained in:
@@ -28,19 +28,40 @@ define(
|
||||
|
||||
describe("The 'instantiation' capability", function () {
|
||||
var mockInjector,
|
||||
mockIdentifierService,
|
||||
mockInstantiate,
|
||||
mockIdentifier,
|
||||
mockDomainObject,
|
||||
instantiation;
|
||||
|
||||
beforeEach(function () {
|
||||
mockInjector = jasmine.createSpyObj("$injector", ["get"]);
|
||||
mockInstantiate = jasmine.createSpy("instantiate");
|
||||
mockIdentifierService = jasmine.createSpyObj(
|
||||
'identifierService',
|
||||
[ 'parse', 'generate' ]
|
||||
);
|
||||
mockIdentifier = jasmine.createSpyObj(
|
||||
'identifier',
|
||||
[ 'getSpace', 'getKey', 'getDefinedSpace' ]
|
||||
);
|
||||
mockDomainObject = jasmine.createSpyObj(
|
||||
'domainObject',
|
||||
[ 'getId', 'getCapability', 'getModel' ]
|
||||
);
|
||||
|
||||
mockInjector.get.andCallFake(function (key) {
|
||||
return key === 'instantiate' ?
|
||||
mockInstantiate : undefined;
|
||||
});
|
||||
mockIdentifierService.parse.andReturn(mockIdentifier);
|
||||
mockIdentifierService.generate.andReturn("some-id");
|
||||
|
||||
instantiation = new InstantiationCapability(mockInjector);
|
||||
instantiation = new InstantiationCapability(
|
||||
mockInjector,
|
||||
mockIdentifierService,
|
||||
mockDomainObject
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
@@ -59,7 +80,8 @@ define(
|
||||
mockInstantiate.andReturn(mockDomainObject);
|
||||
expect(instantiation.instantiate(testModel))
|
||||
.toBe(mockDomainObject);
|
||||
expect(mockInstantiate).toHaveBeenCalledWith(testModel);
|
||||
expect(mockInstantiate)
|
||||
.toHaveBeenCalledWith(testModel, jasmine.any(String));
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@@ -31,7 +31,9 @@ define(
|
||||
|
||||
describe("The persistence capability", function () {
|
||||
var mockPersistenceService,
|
||||
mockIdentifierService,
|
||||
mockDomainObject,
|
||||
mockIdentifier,
|
||||
id = "object id",
|
||||
model = { someKey: "some value"},
|
||||
SPACE = "some space",
|
||||
@@ -50,6 +52,14 @@ define(
|
||||
"persistenceService",
|
||||
[ "updateObject", "readObject", "createObject", "deleteObject" ]
|
||||
);
|
||||
mockIdentifierService = jasmine.createSpyObj(
|
||||
'identifierService',
|
||||
[ 'parse', 'generate' ]
|
||||
);
|
||||
mockIdentifier = jasmine.createSpyObj(
|
||||
'identifier',
|
||||
[ 'getSpace', 'getKey', 'getDefinedSpace' ]
|
||||
);
|
||||
mockDomainObject = {
|
||||
getId: function () { return id; },
|
||||
getModel: function () { return model; },
|
||||
@@ -61,9 +71,11 @@ define(
|
||||
model = mutator(model) || model;
|
||||
}
|
||||
});
|
||||
mockIdentifierService.parse.andReturn(mockIdentifier);
|
||||
mockIdentifier.getSpace.andReturn(SPACE);
|
||||
persistence = new PersistenceCapability(
|
||||
mockPersistenceService,
|
||||
SPACE,
|
||||
mockIdentifierService,
|
||||
mockDomainObject
|
||||
);
|
||||
});
|
||||
|
||||
58
platform/core/test/identifiers/IdentifierProviderSpec.js
Normal file
58
platform/core/test/identifiers/IdentifierProviderSpec.js
Normal file
@@ -0,0 +1,58 @@
|
||||
/*****************************************************************************
|
||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
||||
* as represented by the Administrator of the National Aeronautics and Space
|
||||
* Administration. All rights reserved.
|
||||
*
|
||||
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
* Open MCT Web includes source code licensed under additional open source
|
||||
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||
* this source code distribution or the Licensing information page available
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/
|
||||
/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/
|
||||
|
||||
define(
|
||||
["../../src/identifiers/IdentifierProvider"],
|
||||
function (IdentifierProvider) {
|
||||
'use strict';
|
||||
|
||||
describe("IdentifierProvider", function () {
|
||||
var defaultSpace,
|
||||
provider;
|
||||
|
||||
beforeEach(function () {
|
||||
defaultSpace = "some-default-space";
|
||||
provider = new IdentifierProvider(defaultSpace);
|
||||
});
|
||||
|
||||
it("generates unique identifiers", function () {
|
||||
expect(provider.generate())
|
||||
.not.toEqual(provider.generate());
|
||||
});
|
||||
|
||||
it("allows spaces to be specified for generated identifiers", function () {
|
||||
var specificSpace = "some-specific-space",
|
||||
id = provider.generate(specificSpace);
|
||||
expect(id).toEqual(jasmine.any(String));
|
||||
expect(provider.parse(id).getDefinedSpace())
|
||||
.toEqual(specificSpace);
|
||||
});
|
||||
|
||||
it("parses identifiers using the default space", function () {
|
||||
expect(provider.parse("some-unprefixed-id").getSpace())
|
||||
.toEqual(defaultSpace);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
);
|
||||
82
platform/core/test/identifiers/IdentifierSpec.js
Normal file
82
platform/core/test/identifiers/IdentifierSpec.js
Normal file
@@ -0,0 +1,82 @@
|
||||
/*****************************************************************************
|
||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
||||
* as represented by the Administrator of the National Aeronautics and Space
|
||||
* Administration. All rights reserved.
|
||||
*
|
||||
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
* Open MCT Web includes source code licensed under additional open source
|
||||
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||
* this source code distribution or the Licensing information page available
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/
|
||||
/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/
|
||||
|
||||
define(
|
||||
["../../src/identifiers/Identifier"],
|
||||
function (Identifier) {
|
||||
'use strict';
|
||||
|
||||
describe("A parsed domain object identifier", function () {
|
||||
var id,
|
||||
defaultSpace,
|
||||
identifier;
|
||||
|
||||
beforeEach(function () {
|
||||
defaultSpace = "someDefaultSpace";
|
||||
});
|
||||
|
||||
describe("when space is encoded", function () {
|
||||
var idSpace, idKey, spacedId;
|
||||
|
||||
beforeEach(function () {
|
||||
idSpace = "a-specific-space";
|
||||
idKey = "a-specific-key";
|
||||
id = idSpace + ":" + idKey;
|
||||
identifier = new Identifier(id, defaultSpace);
|
||||
});
|
||||
|
||||
it("provides the encoded space", function () {
|
||||
expect(identifier.getSpace()).toEqual(idSpace);
|
||||
});
|
||||
|
||||
it("provides the key within that space", function () {
|
||||
expect(identifier.getKey()).toEqual(idKey);
|
||||
});
|
||||
|
||||
it("provides the defined space", function () {
|
||||
expect(identifier.getDefinedSpace()).toEqual(idSpace);
|
||||
});
|
||||
});
|
||||
|
||||
describe("when space is not encoded", function () {
|
||||
beforeEach(function () {
|
||||
id = "a-generic-id";
|
||||
identifier = new Identifier(id, defaultSpace);
|
||||
});
|
||||
|
||||
it("provides the default space", function () {
|
||||
expect(identifier.getSpace()).toEqual(defaultSpace);
|
||||
});
|
||||
|
||||
it("provides the id as the key", function () {
|
||||
expect(identifier.getKey()).toEqual(id);
|
||||
});
|
||||
|
||||
it("provides no defined space", function () {
|
||||
expect(identifier.getDefinedSpace()).toEqual(undefined);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
);
|
||||
@@ -33,13 +33,12 @@ define(
|
||||
var mockQ,
|
||||
mockPersistenceService,
|
||||
SPACE = "space0",
|
||||
spaces = [ "space1" ],
|
||||
modTimes,
|
||||
mockNow,
|
||||
provider;
|
||||
|
||||
function mockPromise(value) {
|
||||
return {
|
||||
return (value || {}).then ? value : {
|
||||
then: function (callback) {
|
||||
return mockPromise(callback(value));
|
||||
},
|
||||
@@ -78,13 +77,14 @@ define(
|
||||
persisted: 0
|
||||
});
|
||||
});
|
||||
mockPersistenceService.listSpaces
|
||||
.andReturn(mockPromise([SPACE]));
|
||||
|
||||
provider = new PersistedModelProvider(
|
||||
mockPersistenceService,
|
||||
mockQ,
|
||||
mockNow,
|
||||
SPACE,
|
||||
spaces
|
||||
SPACE
|
||||
);
|
||||
});
|
||||
|
||||
@@ -103,25 +103,6 @@ define(
|
||||
});
|
||||
|
||||
|
||||
it("reads object models from multiple spaces", function () {
|
||||
var models;
|
||||
|
||||
modTimes.space1 = {
|
||||
'x': 12321
|
||||
};
|
||||
|
||||
provider.getModels(["a", "x", "zz"]).then(function (m) {
|
||||
models = m;
|
||||
});
|
||||
|
||||
expect(models).toEqual({
|
||||
a: { space: SPACE, id: "a", persisted: 0 },
|
||||
x: { space: 'space1', id: "x", modified: 12321, persisted: 0 },
|
||||
zz: { space: SPACE, id: "zz", persisted: 0 }
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
it("ensures that persisted timestamps are present", function () {
|
||||
var mockCallback = jasmine.createSpy("callback"),
|
||||
testModels = {
|
||||
|
||||
@@ -29,18 +29,27 @@ define(
|
||||
describe("The 'instantiate' service", function () {
|
||||
|
||||
var mockCapabilityService,
|
||||
mockIdentifierService,
|
||||
mockCapabilityConstructor,
|
||||
mockCapabilityInstance,
|
||||
mockCapabilities,
|
||||
mockIdentifier,
|
||||
idCounter,
|
||||
testModel,
|
||||
instantiate,
|
||||
domainObject;
|
||||
|
||||
beforeEach(function () {
|
||||
idCounter = 0;
|
||||
|
||||
mockCapabilityService = jasmine.createSpyObj(
|
||||
'capabilityService',
|
||||
['getCapabilities']
|
||||
);
|
||||
mockIdentifierService = jasmine.createSpyObj(
|
||||
'identifierService',
|
||||
[ 'parse', 'generate' ]
|
||||
);
|
||||
mockCapabilityConstructor = jasmine.createSpy('capability');
|
||||
mockCapabilityInstance = {};
|
||||
mockCapabilityService.getCapabilities.andReturn({
|
||||
@@ -48,9 +57,17 @@ define(
|
||||
});
|
||||
mockCapabilityConstructor.andReturn(mockCapabilityInstance);
|
||||
|
||||
mockIdentifierService.generate.andCallFake(function (space) {
|
||||
return (space ? (space + ":") : "") +
|
||||
"some-id-" + (idCounter += 1);
|
||||
});
|
||||
|
||||
testModel = { someKey: "some value" };
|
||||
|
||||
instantiate = new Instantiate(mockCapabilityService);
|
||||
instantiate = new Instantiate(
|
||||
mockCapabilityService,
|
||||
mockIdentifierService
|
||||
);
|
||||
domainObject = instantiate(testModel);
|
||||
});
|
||||
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
"capabilities/PersistenceCapability",
|
||||
"capabilities/RelationshipCapability",
|
||||
|
||||
"identifiers/Identifier",
|
||||
"identifiers/IdentifierProvider",
|
||||
|
||||
"models/ModelAggregator",
|
||||
"models/MissingModelDecorator",
|
||||
"models/PersistedModelProvider",
|
||||
|
||||
Reference in New Issue
Block a user