[Telemetry] Update specs
Update telemetry bundle specs to account for subscription functionality added to support autoflow tabular views, WTD-614.
This commit is contained in:
@@ -8,6 +8,7 @@ define(
|
|||||||
describe("The telemetry aggregator", function () {
|
describe("The telemetry aggregator", function () {
|
||||||
var mockQ,
|
var mockQ,
|
||||||
mockProviders,
|
mockProviders,
|
||||||
|
mockUnsubscribes,
|
||||||
aggregator;
|
aggregator;
|
||||||
|
|
||||||
function mockPromise(value) {
|
function mockPromise(value) {
|
||||||
@@ -20,10 +21,15 @@ define(
|
|||||||
|
|
||||||
function mockProvider(key, index) {
|
function mockProvider(key, index) {
|
||||||
var provider = jasmine.createSpyObj(
|
var provider = jasmine.createSpyObj(
|
||||||
"provider" + index,
|
"provider" + index,
|
||||||
[ "requestTelemetry" ]
|
[ "requestTelemetry", "subscribe" ]
|
||||||
);
|
),
|
||||||
|
unsubscribe = jasmine.createSpy("unsubscribe" + index);
|
||||||
provider.requestTelemetry.andReturn({ someKey: key });
|
provider.requestTelemetry.andReturn({ someKey: key });
|
||||||
|
provider.subscribe.andReturn(unsubscribe);
|
||||||
|
|
||||||
|
// Store to verify interactions later
|
||||||
|
mockUnsubscribes[index] = unsubscribe;
|
||||||
return provider;
|
return provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,6 +37,7 @@ define(
|
|||||||
mockQ = jasmine.createSpyObj("$q", [ "all" ]);
|
mockQ = jasmine.createSpyObj("$q", [ "all" ]);
|
||||||
mockQ.all.andReturn(mockPromise([]));
|
mockQ.all.andReturn(mockPromise([]));
|
||||||
|
|
||||||
|
mockUnsubscribes = [];
|
||||||
mockProviders = [ "a", "b", "c" ].map(mockProvider);
|
mockProviders = [ "a", "b", "c" ].map(mockProvider);
|
||||||
|
|
||||||
aggregator = new TelemetryAggregator(mockQ, mockProviders);
|
aggregator = new TelemetryAggregator(mockQ, mockProviders);
|
||||||
@@ -74,6 +81,24 @@ define(
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("broadcasts subscriptions from all providers", function () {
|
||||||
|
var mockCallback = jasmine.createSpy("callback"),
|
||||||
|
subscription = aggregator.subscribe(mockCallback);
|
||||||
|
|
||||||
|
// Make sure all providers got subscribed to
|
||||||
|
mockProviders.forEach(function (mockProvider) {
|
||||||
|
expect(mockProvider.subscribe).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Verify that unsubscription gets broadcast too
|
||||||
|
mockUnsubscribes.forEach(function (mockUnsubscribe) {
|
||||||
|
expect(mockUnsubscribe).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
subscription(); // unsubscribe
|
||||||
|
mockUnsubscribes.forEach(function (mockUnsubscribe) {
|
||||||
|
expect(mockUnsubscribe).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ define(
|
|||||||
mockDomainObject,
|
mockDomainObject,
|
||||||
mockTelemetryService,
|
mockTelemetryService,
|
||||||
mockReject,
|
mockReject,
|
||||||
|
mockUnsubscribe,
|
||||||
telemetry;
|
telemetry;
|
||||||
|
|
||||||
|
|
||||||
@@ -33,9 +34,10 @@ define(
|
|||||||
);
|
);
|
||||||
mockTelemetryService = jasmine.createSpyObj(
|
mockTelemetryService = jasmine.createSpyObj(
|
||||||
"telemetryService",
|
"telemetryService",
|
||||||
[ "requestTelemetry" ]
|
[ "requestTelemetry", "subscribe" ]
|
||||||
);
|
);
|
||||||
mockReject = jasmine.createSpyObj("reject", ["then"]);
|
mockReject = jasmine.createSpyObj("reject", ["then"]);
|
||||||
|
mockUnsubscribe = jasmine.createSpy("unsubscribe");
|
||||||
|
|
||||||
mockInjector.get.andReturn(mockTelemetryService);
|
mockInjector.get.andReturn(mockTelemetryService);
|
||||||
|
|
||||||
@@ -52,6 +54,8 @@ define(
|
|||||||
|
|
||||||
mockTelemetryService.requestTelemetry
|
mockTelemetryService.requestTelemetry
|
||||||
.andReturn(mockPromise({}));
|
.andReturn(mockPromise({}));
|
||||||
|
mockTelemetryService.subscribe
|
||||||
|
.andReturn(mockUnsubscribe);
|
||||||
|
|
||||||
// Bubble up...
|
// Bubble up...
|
||||||
mockReject.then.andReturn(mockReject);
|
mockReject.then.andReturn(mockReject);
|
||||||
@@ -127,6 +131,36 @@ define(
|
|||||||
expect(mockLog.warn).toHaveBeenCalled();
|
expect(mockLog.warn).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("allows subscriptions to updates", function () {
|
||||||
|
var mockCallback = jasmine.createSpy("callback"),
|
||||||
|
subscription = telemetry.subscribe(mockCallback);
|
||||||
|
|
||||||
|
// Verify subscription to the appropriate object
|
||||||
|
expect(mockTelemetryService.subscribe).toHaveBeenCalledWith(
|
||||||
|
jasmine.any(Function),
|
||||||
|
[{
|
||||||
|
id: "testId", // from domain object
|
||||||
|
source: "testSource",
|
||||||
|
key: "testKey"
|
||||||
|
}]
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check that the callback gets invoked
|
||||||
|
expect(mockCallback).not.toHaveBeenCalled();
|
||||||
|
mockTelemetryService.subscribe.mostRecentCall.args[0]({
|
||||||
|
testSource: { testKey: { someKey: "some value" } }
|
||||||
|
});
|
||||||
|
expect(mockCallback).toHaveBeenCalledWith(
|
||||||
|
{ someKey: "some value" }
|
||||||
|
);
|
||||||
|
|
||||||
|
// Finally, unsubscribe
|
||||||
|
expect(mockUnsubscribe).not.toHaveBeenCalled();
|
||||||
|
subscription(); // should be an unsubscribe function
|
||||||
|
expect(mockUnsubscribe).toHaveBeenCalled();
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -187,6 +187,13 @@ define(
|
|||||||
.toHaveBeenCalledWith("telemetryUpdate");
|
.toHaveBeenCalledWith("telemetryUpdate");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("listens for scope destruction to clean up", function () {
|
||||||
|
expect(mockScope.$on).toHaveBeenCalledWith(
|
||||||
|
"$destroy",
|
||||||
|
jasmine.any(Function)
|
||||||
|
);
|
||||||
|
mockScope.$on.mostRecentCall.args[1]();
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user