2019-09-04 21:46:33 -07:00

50 lines
1.8 KiB
TypeScript

import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
import { TestContext } from 'ember-test-helpers';
import { IBaseTrackingEvent } from '@datahub/tracking/types/event-tracking';
import { TrackingEventCategory, TrackingGoal } from '@datahub/tracking/constants/event-tracking';
import { getPiwikActivityQueue } from '@datahub/tracking/utils/piwik';
import UnifiedTracking from '@datahub/tracking/services/unified-tracking';
import Metrics from 'ember-metrics';
import MetricsServiceStub from 'dummy/tests/stubs/services/metrics';
module('Unit | Service | tracking', function(hooks) {
setupTest(hooks);
hooks.beforeEach(function(this: TestContext) {
this.owner.register('service:metrics', MetricsServiceStub);
});
test('service exists and is registered', function(assert) {
assert.ok(this.owner.lookup('service:unified-tracking'));
});
test('service methods proxy to metrics service and display expected behavior', function(assert) {
assert.expect(2);
const trackingService: UnifiedTracking = this.owner.lookup('service:unified-tracking');
const metricsService: Metrics = this.owner.lookup('service:metrics');
const event: IBaseTrackingEvent = {
category: TrackingEventCategory.Entity,
action: ''
};
metricsService.trackEvent = (trackedEvent: IBaseTrackingEvent) =>
assert.deepEqual(
event,
trackedEvent,
'expected metrics service trackEvent method to be called by Tracking Service method'
);
trackingService.trackEvent(event);
const activityQueue = getPiwikActivityQueue(true);
trackingService.trackGoal({ name: TrackingGoal.SatClick });
assert.deepEqual(
activityQueue,
[['trackGoal', TrackingGoal.SatClick]],
'expected TrackingService#trackGoal to add "trackGoal" to activity queue'
);
});
});