govuk_navigation_helpers 7.3.0 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/config/tasklists/end-a-civil-partnership.json +339 -0
- data/config/tasklists/get-a-divorce.json +321 -0
- data/config/tasklists/learn-to-drive-a-car.json +262 -0
- data/govuk_navigation_helpers.gemspec +2 -0
- data/lib/govuk_navigation_helpers.rb +17 -8
- data/lib/govuk_navigation_helpers/current_tasklist_ab_test.rb +70 -0
- data/lib/govuk_navigation_helpers/tasklist_content.rb +120 -0
- data/lib/govuk_navigation_helpers/version.rb +1 -1
- data/spec/tasklist_content_spec.rb +269 -0
- metadata +37 -2
@@ -0,0 +1,269 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module GovukNavigationHelpers
|
4
|
+
RSpec.describe TasklistContent do
|
5
|
+
let(:path) { '/pass-plus' }
|
6
|
+
let(:tasklist_content) { described_class.new(file_name: "learn-to-drive-a-car", path: path) }
|
7
|
+
|
8
|
+
context '.current_tasklist' do
|
9
|
+
context 'based on the request' do
|
10
|
+
context 'when the path is /pass-plus' do
|
11
|
+
it 'returns "Learn to Drive" tasklist' do
|
12
|
+
current_tasklist = described_class.current_tasklist(path)
|
13
|
+
|
14
|
+
expect(
|
15
|
+
current_tasklist.title
|
16
|
+
).to eql('Learn to drive a car: step by step')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when the path is /divorce/respond-to-a-divorce-petition' do
|
21
|
+
let(:path) { '/divorce/respond-to-a-divorce-petition' }
|
22
|
+
|
23
|
+
it 'returns "Get Divorce" tasklist' do
|
24
|
+
current_tasklist = described_class.current_tasklist(path)
|
25
|
+
|
26
|
+
expect(
|
27
|
+
current_tasklist.title
|
28
|
+
).to eql('Get a divorce: step by step')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when the path is /end-civil-partnership' do
|
33
|
+
let(:path) { '/end-civil-partnership' }
|
34
|
+
|
35
|
+
it 'returns "End Civil Partnership" tasklist' do
|
36
|
+
current_tasklist = described_class.current_tasklist(path)
|
37
|
+
|
38
|
+
expect(
|
39
|
+
current_tasklist.title
|
40
|
+
).to eql('End a civil partnership: step by step')
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'when the path is in "Get Divorce" and "End Civil Partnership"' do
|
45
|
+
let(:path) { '/money-property-when-relationship-ends' }
|
46
|
+
|
47
|
+
it 'returns "Get Divorce" tasklist by default' do
|
48
|
+
current_tasklist = described_class.current_tasklist(path)
|
49
|
+
|
50
|
+
expect(
|
51
|
+
current_tasklist.title
|
52
|
+
).to eql('Get a divorce: step by step')
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context '#is_page_included_in_ab_test?' do
|
59
|
+
context 'when the requested path is part of the current tasklist' do
|
60
|
+
it 'returns true' do
|
61
|
+
expect(
|
62
|
+
tasklist_content.is_page_included_in_ab_test?
|
63
|
+
).to be true
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'when the requested path is not part of the current tasklist' do
|
68
|
+
let(:path) { '/pink-plus' }
|
69
|
+
|
70
|
+
it 'returns false' do
|
71
|
+
expect(
|
72
|
+
tasklist_content.is_page_included_in_ab_test?
|
73
|
+
).to be false
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context '#set_current_task' do
|
79
|
+
it 'sets /pass-plus as active' do
|
80
|
+
tasklist_content.set_current_task
|
81
|
+
|
82
|
+
expect(
|
83
|
+
tasklist_content.groups.last[0][:contents].last[:contents][0][:href]
|
84
|
+
).to eql('/pass-plus')
|
85
|
+
|
86
|
+
expect(
|
87
|
+
tasklist_content.tasklist[:show_step]
|
88
|
+
).to eql(7)
|
89
|
+
|
90
|
+
expect(
|
91
|
+
tasklist_content.groups.last[0][:contents].last[:contents][0][:active]
|
92
|
+
).to be true
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context "learning to drive a car tasklist content" do
|
97
|
+
it "has symbolized keys" do
|
98
|
+
tasklist_content.tasklist.keys.each do |key|
|
99
|
+
expect(key.is_a?(Symbol)).to be true
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
it "has a title" do
|
104
|
+
expect(tasklist_content.title).to eql("Learn to drive a car: step by step")
|
105
|
+
end
|
106
|
+
|
107
|
+
it "has a base_path" do
|
108
|
+
expect(tasklist_content.base_path).to eql("/learn-to-drive-a-car")
|
109
|
+
end
|
110
|
+
|
111
|
+
it "configures a sidebar" do
|
112
|
+
expect(tasklist_content.tasklist[:heading_level]).to eql(3)
|
113
|
+
expect(tasklist_content.tasklist[:small]).to be true
|
114
|
+
end
|
115
|
+
|
116
|
+
it "has a link in the correct structure" do
|
117
|
+
first_link = tasklist_content.tasklist[:groups][0][0][:contents][1][:contents][0]
|
118
|
+
expect(first_link[:href]).to eql("/vehicles-can-drive")
|
119
|
+
expect(first_link[:text]).to eql("Check what age you can drive")
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'has all the primary paths' do
|
123
|
+
primary_paths = %w(
|
124
|
+
/apply-first-provisional-driving-licence
|
125
|
+
/book-driving-test
|
126
|
+
/book-theory-test
|
127
|
+
/cancel-driving-test
|
128
|
+
/cancel-theory-test
|
129
|
+
/change-driving-test
|
130
|
+
/change-theory-test
|
131
|
+
/check-driving-test
|
132
|
+
/check-theory-test
|
133
|
+
/driving-eyesight-rules
|
134
|
+
/driving-lessons-learning-to-drive
|
135
|
+
/driving-test/what-to-take
|
136
|
+
/find-driving-schools-and-lessons
|
137
|
+
/government/publications/car-show-me-tell-me-vehicle-safety-questions
|
138
|
+
/guidance/the-highway-code
|
139
|
+
/legal-obligations-drivers-riders
|
140
|
+
/pass-plus
|
141
|
+
/take-practice-theory-test
|
142
|
+
/theory-test/revision-and-practice
|
143
|
+
/theory-test/what-to-take
|
144
|
+
/vehicles-can-drive
|
145
|
+
).sort
|
146
|
+
|
147
|
+
expect(
|
148
|
+
tasklist_content.primary_paths.sort
|
149
|
+
).to match_array(primary_paths)
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'has related paths' do
|
153
|
+
related_paths = %w(
|
154
|
+
/apply-for-your-full-driving-licence
|
155
|
+
/automatic-driving-licence-to-manual
|
156
|
+
/complain-about-a-driving-instructor
|
157
|
+
/driving-licence-fees
|
158
|
+
/driving-test-cost
|
159
|
+
/dvlaforms
|
160
|
+
/find-theory-test-pass-number
|
161
|
+
/government/publications/application-for-refunding-out-of-pocket-expenses
|
162
|
+
/government/publications/drivers-record-for-learner-drivers
|
163
|
+
/government/publications/driving-instructor-grades-explained
|
164
|
+
/government/publications/know-your-traffic-signs
|
165
|
+
/government/publications/l-plate-size-rules
|
166
|
+
/guidance/rules-for-observing-driving-tests
|
167
|
+
/report-an-illegal-driving-instructor
|
168
|
+
/report-driving-medical-condition
|
169
|
+
/report-driving-test-impersonation
|
170
|
+
/seat-belts-law
|
171
|
+
/speed-limits
|
172
|
+
/track-your-driving-licence-application
|
173
|
+
/vehicle-insurance
|
174
|
+
/driving-lessons-learning-to-drive/practising-with-family-or-friends
|
175
|
+
/driving-lessons-learning-to-drive/taking-driving-lessons
|
176
|
+
/driving-lessons-learning-to-drive/using-l-and-p-plates
|
177
|
+
/driving-test
|
178
|
+
/driving-test/changes-december-2017
|
179
|
+
/driving-test/disability-health-condition-or-learning-difficulty
|
180
|
+
/driving-test/driving-test-faults-result
|
181
|
+
/driving-test/test-cancelled-bad-weather
|
182
|
+
/driving-test/using-your-own-car
|
183
|
+
/driving-test/what-happens-during-test
|
184
|
+
/pass-plus/apply-for-a-pass-plus-certificate
|
185
|
+
/pass-plus/booking-pass-plus
|
186
|
+
/pass-plus/car-insurance-discounts
|
187
|
+
/pass-plus/local-councils-offering-discounts
|
188
|
+
/pass-plus/how-pass-plus-training-works
|
189
|
+
/theory-test
|
190
|
+
/theory-test/hazard-perception-test
|
191
|
+
/theory-test/if-you-have-safe-road-user-award
|
192
|
+
/theory-test/multiple-choice-questions
|
193
|
+
/theory-test/pass-mark-and-result
|
194
|
+
/theory-test/reading-difficulty-disability-or-health-condition
|
195
|
+
).sort
|
196
|
+
|
197
|
+
expect(
|
198
|
+
tasklist_content.related_paths.sort
|
199
|
+
).to match_array(related_paths)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
context "get a divorce tasklist content" do
|
204
|
+
let(:tasklist_content) { described_class.new(file_name: "get-a-divorce", path: path) }
|
205
|
+
|
206
|
+
it "has symbolized keys" do
|
207
|
+
tasklist_content.tasklist.keys.each do |key|
|
208
|
+
expect(key.is_a?(Symbol)).to be true
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
it "has a title" do
|
213
|
+
expect(tasklist_content.title).to eql("Get a divorce: step by step")
|
214
|
+
end
|
215
|
+
|
216
|
+
it "has a base_path" do
|
217
|
+
expect(tasklist_content.base_path).to eql("/get-a-divorce")
|
218
|
+
end
|
219
|
+
|
220
|
+
it "configures a sidebar" do
|
221
|
+
expect(tasklist_content.tasklist[:heading_level]).to eql(3)
|
222
|
+
expect(tasklist_content.tasklist[:small]).to be true
|
223
|
+
end
|
224
|
+
|
225
|
+
it 'has all the primary paths' do
|
226
|
+
primary_paths = %w(
|
227
|
+
/divorce
|
228
|
+
/looking-after-children-divorce
|
229
|
+
/money-property-when-relationship-ends
|
230
|
+
/benefits-calculators
|
231
|
+
/report-benefits-change-circumstances
|
232
|
+
/contact-pension-service
|
233
|
+
/visas-when-you-separate-or-divorce
|
234
|
+
/stay-in-home-during-separation-or-divorce
|
235
|
+
/divorce/file-for-divorce
|
236
|
+
/divorce/grounds-for-divorce
|
237
|
+
/get-help-with-court-fees
|
238
|
+
/find-a-legal-adviser
|
239
|
+
/divorce-missing-husband-wife
|
240
|
+
/divorce/if-your-husband-or-wife-lacks-mental-capacity
|
241
|
+
/divorce/apply-for-decree-nisi
|
242
|
+
/divorce/apply-for-a-decree-absolute
|
243
|
+
).sort
|
244
|
+
|
245
|
+
# there are two primary paths twice in the JSON structure
|
246
|
+
# that's legit.
|
247
|
+
expect(
|
248
|
+
tasklist_content.primary_paths.sort.uniq
|
249
|
+
).to match_array(primary_paths)
|
250
|
+
end
|
251
|
+
|
252
|
+
it 'has related paths' do
|
253
|
+
related_paths = %w(
|
254
|
+
/divorce/respond-to-a-divorce-petition
|
255
|
+
).sort
|
256
|
+
|
257
|
+
expect(
|
258
|
+
tasklist_content.related_paths.sort
|
259
|
+
).to match_array(related_paths)
|
260
|
+
end
|
261
|
+
|
262
|
+
it "has a link in the correct structure" do
|
263
|
+
first_link = tasklist_content.tasklist[:groups][0][0][:contents][1][:contents][0]
|
264
|
+
expect(first_link[:href]).to eql("https://www.relate.org.uk/relationship-help/help-separation-and-divorce")
|
265
|
+
expect(first_link[:text]).to eql("Get advice from Relate")
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_navigation_helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GOV.UK Dev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gds-api-adapters
|
@@ -24,6 +24,34 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '43.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: govuk_ab_testing
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.4'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.4'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activesupport
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.1'
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: bundler
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -168,17 +196,22 @@ files:
|
|
168
196
|
- LICENCE.txt
|
169
197
|
- README.md
|
170
198
|
- Rakefile
|
199
|
+
- config/tasklists/end-a-civil-partnership.json
|
200
|
+
- config/tasklists/get-a-divorce.json
|
201
|
+
- config/tasklists/learn-to-drive-a-car.json
|
171
202
|
- govuk_navigation_helpers.gemspec
|
172
203
|
- lib/govuk_navigation_helpers.rb
|
173
204
|
- lib/govuk_navigation_helpers/breadcrumbs.rb
|
174
205
|
- lib/govuk_navigation_helpers/configuration.rb
|
175
206
|
- lib/govuk_navigation_helpers/content_item.rb
|
176
207
|
- lib/govuk_navigation_helpers/curated_taxonomy_sidebar_links.rb
|
208
|
+
- lib/govuk_navigation_helpers/current_tasklist_ab_test.rb
|
177
209
|
- lib/govuk_navigation_helpers/grouped_related_links.rb
|
178
210
|
- lib/govuk_navigation_helpers/related_items.rb
|
179
211
|
- lib/govuk_navigation_helpers/related_navigation_sidebar.rb
|
180
212
|
- lib/govuk_navigation_helpers/rummager_taxonomy_sidebar_links.rb
|
181
213
|
- lib/govuk_navigation_helpers/services.rb
|
214
|
+
- lib/govuk_navigation_helpers/tasklist_content.rb
|
182
215
|
- lib/govuk_navigation_helpers/taxon_breadcrumbs.rb
|
183
216
|
- lib/govuk_navigation_helpers/taxonomy_sidebar.rb
|
184
217
|
- lib/govuk_navigation_helpers/version.rb
|
@@ -187,6 +220,7 @@ files:
|
|
187
220
|
- spec/related_items_spec.rb
|
188
221
|
- spec/related_navigation_sidebar_spec.rb
|
189
222
|
- spec/spec_helper.rb
|
223
|
+
- spec/tasklist_content_spec.rb
|
190
224
|
- spec/taxon_breadcrumbs_spec.rb
|
191
225
|
- spec/taxonomy_sidebar_spec.rb
|
192
226
|
homepage: https://github.com/alphagov/govuk_navigation_helpers
|
@@ -219,5 +253,6 @@ test_files:
|
|
219
253
|
- spec/related_items_spec.rb
|
220
254
|
- spec/related_navigation_sidebar_spec.rb
|
221
255
|
- spec/spec_helper.rb
|
256
|
+
- spec/tasklist_content_spec.rb
|
222
257
|
- spec/taxon_breadcrumbs_spec.rb
|
223
258
|
- spec/taxonomy_sidebar_spec.rb
|