define(
    ["../src/CompositionModelPolicy"],
    function (CompositionModelPolicy) {

        describe("The composition model policy", function () {
            var mockObject,
                mockType,
                policy;

            beforeEach(function () {
                mockType = jasmine.createSpyObj('type', ['getInitialModel']);
                mockObject = {
                    getCapability: function () {
                        return mockType;
                    }
                };
                policy = new CompositionModelPolicy();
            });

            it("only allows composition for types which will have a composition property", function () {
                mockType.getInitialModel.and.returnValue({});
                expect(policy.allow(mockObject)).toBeFalsy();
                mockType.getInitialModel.and.returnValue({ composition: [] });
                expect(policy.allow(mockObject)).toBeTruthy();
            });
        });

    }
);