[Containment] Disallow composition in immutable objects

Disallow composition in objects which cannot be created, under
the rationale that creatable objects must also be immutable.
WTD-1098.
This commit is contained in:
Victor Woeltjen
2015-04-10 19:24:16 -07:00
parent a55f8e1ab5
commit 036722b275
4 changed files with 62 additions and 0 deletions

View File

@ -0,0 +1,26 @@
/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/
define(
["../src/CompositionMutabilityPolicy"],
function (CompositionMutabilityPolicy) {
"use strict";
describe("The composition mutability policy", function () {
var mockType,
policy;
beforeEach(function () {
mockType = jasmine.createSpyObj('type', ['hasFeature']);
policy = new CompositionMutabilityPolicy();
});
it("only allows composition for types which will have a composition capability", function () {
expect(policy.allow(mockType)).toBeFalsy();
mockType.hasFeature.andReturn(true);
expect(policy.allow(mockType)).toBeTruthy();
expect(mockType.hasFeature).toHaveBeenCalledWith('creation');
});
});
}
);