/
details-spec.js
79 lines (58 loc) · 2.32 KB
/
details-spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/* eslint-env jasmine, jquery */
/* global GOVUK */
describe('Details component', function () {
var FIXTURE
GOVUK.analytics = {
trackEvent: function () {}
}
var callback = jasmine.createSpy()
GOVUK.Modules.TrackClick = function () {
this.start = function () {
callback()
}
}
function loadDetailsComponent () {
var details = new GOVUK.Modules.GovukDetails()
details.start($('.gem-c-details'))
}
beforeEach(function () {
spyOn(GOVUK.analytics, 'trackEvent')
FIXTURE =
'<details class="gem-c-details govuk-details govuk-!-margin-bottom-3" data-track-category="track-category" data-track-action="track-action" data-track-label="track-label" data-module="govuk-details">' +
'<summary class="govuk-details__summary" data-details-track-click="">' +
'<span>Toggle text</span>' +
'</summary>' +
'</details>'
window.setFixtures(FIXTURE)
})
afterEach(function () {
GOVUK.analytics.trackEvent.calls.reset()
})
it('uses built in tracking module when provided with a track-label', function () {
loadDetailsComponent()
$('.govuk-details__summary').click()
expect(GOVUK.analytics.trackEvent.calls.count()).toEqual(0)
expect(callback).toHaveBeenCalled()
})
it('does not fire an event if track category and track action are not present', function () {
$('.gem-c-details').attr('data-track-action', null)
$('.gem-c-details').attr('data-track-category', null)
$('.gem-c-details').attr('data-track-label', null)
loadDetailsComponent()
$('.govuk-details__summary').click()
expect(GOVUK.analytics.trackEvent.calls.count()).toEqual(0)
})
it('tracks open state by default if no track label provided', function () {
$('.gem-c-details').attr('data-track-label', null)
loadDetailsComponent()
$('.govuk-details__summary').click()
expect(GOVUK.analytics.trackEvent).toHaveBeenCalledWith('track-category', 'track-action', { label: 'open' })
})
it('tracks closed state by default if no track label provided', function () {
$('.gem-c-details').attr('data-track-label', null)
$('.gem-c-details').attr('open', true)
loadDetailsComponent()
$('.govuk-details__summary').click()
expect(GOVUK.analytics.trackEvent).toHaveBeenCalledWith('track-category', 'track-action', { label: 'closed' })
})
})