From 9ccd0b9188c341f9727cdf355a79ef9a9ba2cae5 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Fri, 4 Sep 2015 10:47:38 -0700 Subject: [PATCH] [Time Conductor] Test capability decorator WTD-1515 --- .../src/ConductorCapabilityDecorator.js | 2 +- .../test/ConductorCapabilityDecoratorSpec.js | 65 +++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/platform/features/conductor/src/ConductorCapabilityDecorator.js b/platform/features/conductor/src/ConductorCapabilityDecorator.js index b88d5cdbad..2ad5982e34 100644 --- a/platform/features/conductor/src/ConductorCapabilityDecorator.js +++ b/platform/features/conductor/src/ConductorCapabilityDecorator.js @@ -31,7 +31,7 @@ define( this.capabilityService = capabilityService; } - ConductorCapabilityDecorator.getCapabilities = function (model) { + ConductorCapabilityDecorator.prototype.getCapabilities = function (model) { var capabilities = this.capabilityService.getCapabilities(model), TelemetryCapability = capabilities.telemetry, conductorService = this.conductorService; diff --git a/platform/features/conductor/test/ConductorCapabilityDecoratorSpec.js b/platform/features/conductor/test/ConductorCapabilityDecoratorSpec.js index d0f4dda4fc..b98270148b 100644 --- a/platform/features/conductor/test/ConductorCapabilityDecoratorSpec.js +++ b/platform/features/conductor/test/ConductorCapabilityDecoratorSpec.js @@ -30,7 +30,72 @@ define( "use strict"; describe("ConductorCapabilityDecorator", function () { + var mockCapabilityService, + mockConductorService, + testModel, + testCapabilities, + decorator; + function instantiate(Constructor) { + return new Constructor(); + } + + beforeEach(function () { + testCapabilities = { + telemetry: jasmine.createSpy('Telemetry'), + other: jasmine.createSpy('Other') + }; + + mockCapabilityService = jasmine.createSpyObj( + 'capabilityService', + [ 'getCapabilities' ] + ); + mockConductorService = jasmine.createSpyObj( + 'conductorService', + [ 'getConductor' ] + ); + testModel = { someKey: "some value" }; + + mockCapabilityService.getCapabilities.andCallFake(function () { + // Wrap with object.create so we can still + // reliably expect properties of testCapabilities itself + return Object.create(testCapabilities); + }); + + decorator = new ConductorCapabilityDecorator( + mockConductorService, + mockCapabilityService + ); + }); + + it("delegates to the decorated capability service", function () { + expect(mockCapabilityService.getCapabilities).not.toHaveBeenCalled(); + decorator.getCapabilities(testModel); + expect(mockCapabilityService.getCapabilities).toHaveBeenCalled(); + }); + + it("wraps the 'telemetry' capability of objects", function () { + var capabilities = decorator.getCapabilities(testModel); + expect(capabilities.telemetry) + .not.toBe(testCapabilities.telemetry); + + // Should wrap - verify by invocation + expect(testCapabilities.telemetry).not.toHaveBeenCalled(); + instantiate(capabilities.telemetry); + expect(testCapabilities.telemetry).toHaveBeenCalled(); + }); + + it("does not wrap other capabilities", function () { + var capabilities = decorator.getCapabilities(testModel); + expect(capabilities.other) + .toBe(testCapabilities.other); + }); + + it("gets a time conductor from the conductorService", function () { + expect(mockConductorService.getConductor).not.toHaveBeenCalled(); + instantiate(decorator.getCapabilities(testModel).telemetry); + expect(mockConductorService.getConductor).toHaveBeenCalled(); + }); }); } );