mirror of
https://github.com/nasa/openmct.git
synced 2025-01-24 13:28:12 +00:00
[Edit] Add model cache spec
Add a spec for an editable model cache; this will behave similarly to the existing domain object cache, except that it will cache only models. Use of this will permit multiple instances of editable objects to be created with unique contexts (that is, distinct parent objects accessible via the context capability) which in turn will avoid the ambiguous parentage which results in unexpected behavior of the Remove action in Edit mode, WTD-473.
This commit is contained in:
parent
5c34382933
commit
7c44365037
@ -0,0 +1,60 @@
|
||||
/*global define,describe,it,expect,beforeEach,jasmine*/
|
||||
|
||||
define(
|
||||
["../../src/objects/EditableModelCache"],
|
||||
function (EditableModelCache) {
|
||||
"use strict";
|
||||
|
||||
describe("The editable model cache", function () {
|
||||
var mockObject,
|
||||
mockOtherObject,
|
||||
testModel,
|
||||
testId,
|
||||
otherModel,
|
||||
otherId,
|
||||
cache;
|
||||
|
||||
beforeEach(function () {
|
||||
testId = "test";
|
||||
testModel = { someKey: "some value" };
|
||||
otherId = "other";
|
||||
otherModel = { someKey: "some other value" };
|
||||
|
||||
mockObject = jasmine.createSpyObj(
|
||||
"domainObject",
|
||||
[ "getId", "getModel" ]
|
||||
);
|
||||
mockOtherObject = jasmine.createSpyObj(
|
||||
"domainObject",
|
||||
[ "getId", "getModel" ]
|
||||
);
|
||||
|
||||
mockObject.getId.andReturn(testId);
|
||||
mockObject.getModel.andReturn(testModel);
|
||||
mockOtherObject.getId.andReturn(otherId);
|
||||
mockOtherObject.getModel.andReturn(otherModel);
|
||||
|
||||
cache = new EditableModelCache();
|
||||
});
|
||||
|
||||
it("provides clones of domain object models", function () {
|
||||
var model = cache.getCachedModel(mockObject);
|
||||
// Should be identical...
|
||||
expect(model).toEqual(testModel);
|
||||
// ...but not pointer-identical
|
||||
expect(model).not.toBe(testModel);
|
||||
});
|
||||
|
||||
it("provides only one clone per object", function () {
|
||||
var model = cache.getCachedModel(mockObject);
|
||||
expect(cache.getCachedModel(mockObject)).toBe(model);
|
||||
});
|
||||
|
||||
it("maintains separate caches per-object", function () {
|
||||
expect(cache.getCachedModel(mockObject))
|
||||
.not.toEqual(cache.getCachedModel(mockOtherObject));
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
);
|
@ -12,5 +12,6 @@
|
||||
"capabilities/EditablePersistenceCapability",
|
||||
"capabilities/EditorCapability",
|
||||
"objects/EditableDomainObject",
|
||||
"objects/EditableDomainObjectCache"
|
||||
"objects/EditableDomainObjectCache",
|
||||
"objects/EditableModelCache"
|
||||
]
|
Loading…
Reference in New Issue
Block a user