govuk-design-system-rails 0.10.1

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.
Files changed (137) hide show
  1. checksums.yaml +7 -0
  2. data/app/helpers/govuk_design_system/accordion_helper.rb +7 -0
  3. data/app/helpers/govuk_design_system/back_link_helper.rb +13 -0
  4. data/app/helpers/govuk_design_system/breadcrumbs_helper.rb +7 -0
  5. data/app/helpers/govuk_design_system/button_helper.rb +71 -0
  6. data/app/helpers/govuk_design_system/checkboxes_helper.rb +8 -0
  7. data/app/helpers/govuk_design_system/components_helper.rb +13 -0
  8. data/app/helpers/govuk_design_system/cookie_banner_helper.rb +7 -0
  9. data/app/helpers/govuk_design_system/date_input_helper.rb +8 -0
  10. data/app/helpers/govuk_design_system/details_helper.rb +32 -0
  11. data/app/helpers/govuk_design_system/error_message_helper.rb +7 -0
  12. data/app/helpers/govuk_design_system/error_summary_helper.rb +20 -0
  13. data/app/helpers/govuk_design_system/fieldset_helper.rb +9 -0
  14. data/app/helpers/govuk_design_system/file_upload_helper.rb +59 -0
  15. data/app/helpers/govuk_design_system/header_helper.rb +7 -0
  16. data/app/helpers/govuk_design_system/hint_helper.rb +7 -0
  17. data/app/helpers/govuk_design_system/hmcts_badge_helper.rb +7 -0
  18. data/app/helpers/govuk_design_system/hmcts_banner_helper.rb +7 -0
  19. data/app/helpers/govuk_design_system/input_helper.rb +8 -0
  20. data/app/helpers/govuk_design_system/inset_text_helper.rb +9 -0
  21. data/app/helpers/govuk_design_system/label_helper.rb +7 -0
  22. data/app/helpers/govuk_design_system/notification_banner_helper.rb +8 -0
  23. data/app/helpers/govuk_design_system/phase_banner_helper.rb +21 -0
  24. data/app/helpers/govuk_design_system/radios_helper.rb +8 -0
  25. data/app/helpers/govuk_design_system/select_helper.rb +8 -0
  26. data/app/helpers/govuk_design_system/skip_link_helper.rb +13 -0
  27. data/app/helpers/govuk_design_system/summary_list_helper.rb +7 -0
  28. data/app/helpers/govuk_design_system/tabs_helper.rb +7 -0
  29. data/app/helpers/govuk_design_system/tag_helper.rb +8 -0
  30. data/app/helpers/govuk_design_system/textarea_helper.rb +8 -0
  31. data/app/helpers/govuk_design_system/warning_text_helper.rb +20 -0
  32. data/app/views/components/_govuk_accordion.html.erb +44 -0
  33. data/app/views/components/_govuk_action_link.html.erb +12 -0
  34. data/app/views/components/_govuk_breadcrumbs.html.erb +25 -0
  35. data/app/views/components/_govuk_checkboxes.html.erb +125 -0
  36. data/app/views/components/_govuk_cookie_banner.html.erb +75 -0
  37. data/app/views/components/_govuk_date_input.html.erb +94 -0
  38. data/app/views/components/_govuk_error_message.html.erb +13 -0
  39. data/app/views/components/_govuk_error_summary.html.erb +32 -0
  40. data/app/views/components/_govuk_fieldset.html.erb +21 -0
  41. data/app/views/components/_govuk_header.html.erb +64 -0
  42. data/app/views/components/_govuk_hint.html.erb +7 -0
  43. data/app/views/components/_govuk_hr.html.erb +1 -0
  44. data/app/views/components/_govuk_input.html.erb +97 -0
  45. data/app/views/components/_govuk_inset_text.html.erb +10 -0
  46. data/app/views/components/_govuk_label.html.erb +18 -0
  47. data/app/views/components/_govuk_notification_banner.html.erb +68 -0
  48. data/app/views/components/_govuk_radios.html.erb +141 -0
  49. data/app/views/components/_govuk_select.html.erb +105 -0
  50. data/app/views/components/_govuk_summary_list.html.erb +39 -0
  51. data/app/views/components/_govuk_tabs.html.erb +46 -0
  52. data/app/views/components/_govuk_textarea.html.erb +70 -0
  53. data/app/views/components/_hmcts_banner.html.erb +33 -0
  54. data/app/views/form_components/_govuk_checkboxes.html.erb +21 -0
  55. data/app/views/form_components/_govuk_date_input.html.erb +32 -0
  56. data/app/views/form_components/_govuk_input.html.erb +11 -0
  57. data/app/views/form_components/_govuk_radios.html.erb +24 -0
  58. data/app/views/form_components/_govuk_select.html.erb +25 -0
  59. data/app/views/form_components/_govuk_textarea.html.erb +11 -0
  60. data/lib/govuk-design-system-rails.rb +1 -0
  61. data/lib/govuk_design_system/engine.rb +50 -0
  62. data/lib/govuk_design_system.rb +4 -0
  63. data/spec/dummy/Rakefile +6 -0
  64. data/spec/dummy/app/assets/config/manifest.js +2 -0
  65. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  66. data/spec/dummy/app/channels/application_cable/channel.rb +4 -0
  67. data/spec/dummy/app/channels/application_cable/connection.rb +4 -0
  68. data/spec/dummy/app/controllers/application_controller.rb +2 -0
  69. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  70. data/spec/dummy/app/javascript/packs/application.js +15 -0
  71. data/spec/dummy/app/jobs/application_job.rb +7 -0
  72. data/spec/dummy/app/mailers/application_mailer.rb +4 -0
  73. data/spec/dummy/app/models/application_record.rb +3 -0
  74. data/spec/dummy/app/views/layouts/application.html.erb +15 -0
  75. data/spec/dummy/app/views/layouts/mailer.html.erb +13 -0
  76. data/spec/dummy/app/views/layouts/mailer.text.erb +1 -0
  77. data/spec/dummy/bin/rails +4 -0
  78. data/spec/dummy/bin/rake +4 -0
  79. data/spec/dummy/bin/setup +33 -0
  80. data/spec/dummy/config/application.rb +38 -0
  81. data/spec/dummy/config/boot.rb +5 -0
  82. data/spec/dummy/config/cable.yml +10 -0
  83. data/spec/dummy/config/database.yml +25 -0
  84. data/spec/dummy/config/environment.rb +5 -0
  85. data/spec/dummy/config/environments/development.rb +76 -0
  86. data/spec/dummy/config/environments/production.rb +120 -0
  87. data/spec/dummy/config/environments/test.rb +59 -0
  88. data/spec/dummy/config/initializers/application_controller_renderer.rb +8 -0
  89. data/spec/dummy/config/initializers/assets.rb +12 -0
  90. data/spec/dummy/config/initializers/backtrace_silencers.rb +8 -0
  91. data/spec/dummy/config/initializers/content_security_policy.rb +28 -0
  92. data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
  93. data/spec/dummy/config/initializers/filter_parameter_logging.rb +6 -0
  94. data/spec/dummy/config/initializers/inflections.rb +16 -0
  95. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  96. data/spec/dummy/config/initializers/permissions_policy.rb +11 -0
  97. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  98. data/spec/dummy/config/locales/en.yml +33 -0
  99. data/spec/dummy/config/puma.rb +43 -0
  100. data/spec/dummy/config/routes.rb +3 -0
  101. data/spec/dummy/config/storage.yml +34 -0
  102. data/spec/dummy/config.ru +6 -0
  103. data/spec/dummy/db/development.sqlite3 +0 -0
  104. data/spec/dummy/db/test.sqlite3 +0 -0
  105. data/spec/dummy/public/404.html +67 -0
  106. data/spec/dummy/public/422.html +67 -0
  107. data/spec/dummy/public/500.html +66 -0
  108. data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
  109. data/spec/dummy/public/apple-touch-icon.png +0 -0
  110. data/spec/dummy/public/favicon.ico +0 -0
  111. data/spec/dummy/tmp/development_secret.txt +1 -0
  112. data/spec/helpers/govuk_design_system/accordion_helper_spec.rb +353 -0
  113. data/spec/helpers/govuk_design_system/breadcrumbs_helper_spec.rb +90 -0
  114. data/spec/helpers/govuk_design_system/button_helper_spec.rb +34 -0
  115. data/spec/helpers/govuk_design_system/checkboxes_helper_spec.rb +146 -0
  116. data/spec/helpers/govuk_design_system/cookie_banner_helper_spec.rb +65 -0
  117. data/spec/helpers/govuk_design_system/date_input_helper_spec.rb +63 -0
  118. data/spec/helpers/govuk_design_system/details_helper_spec.rb +42 -0
  119. data/spec/helpers/govuk_design_system/error_message_helper_spec.rb +18 -0
  120. data/spec/helpers/govuk_design_system/error_summary_helper_spec.rb +39 -0
  121. data/spec/helpers/govuk_design_system/header_helper_spec.rb +138 -0
  122. data/spec/helpers/govuk_design_system/hint_helper_spec.rb +20 -0
  123. data/spec/helpers/govuk_design_system/hmcts_badge_helper_spec.rb +16 -0
  124. data/spec/helpers/govuk_design_system/hmcts_banner_helper_spec.rb +59 -0
  125. data/spec/helpers/govuk_design_system/input_helper_spec.rb +157 -0
  126. data/spec/helpers/govuk_design_system/inset_text_helper_spec.rb +58 -0
  127. data/spec/helpers/govuk_design_system/label_helper_spec.rb +21 -0
  128. data/spec/helpers/govuk_design_system/notification_banner_helper_spec.rb +98 -0
  129. data/spec/helpers/govuk_design_system/radios_helper_spec.rb +270 -0
  130. data/spec/helpers/govuk_design_system/select_helper_spec.rb +85 -0
  131. data/spec/helpers/govuk_design_system/summary_list_helper_spec.rb +138 -0
  132. data/spec/helpers/govuk_design_system/tabs_helper_spec.rb +129 -0
  133. data/spec/helpers/govuk_design_system/tag_helper_spec.rb +17 -0
  134. data/spec/helpers/govuk_design_system/textarea_helper_spec.rb +67 -0
  135. data/spec/rails_helper.rb +64 -0
  136. data/spec/spec_helper.rb +116 -0
  137. metadata +401 -0
@@ -0,0 +1,270 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe GovukDesignSystem::RadiosHelper, type: :helper do
4
+ describe "#govukRadios" do
5
+ it "returns the correct HTML when there is a hint" do
6
+ html = helper.govukRadios({
7
+ classes: "govuk-radios--inline",
8
+ idPrefix: "changed-name",
9
+ name: "changed-name",
10
+ fieldset: {
11
+ legend: {
12
+ text: "Have you changed your name?",
13
+ isPageHeading: true,
14
+ classes: "govuk-fieldset__legend--l"
15
+ }
16
+ },
17
+ hint: {
18
+ text: "This includes changing your last name or spelling your name differently."
19
+ },
20
+ items: [
21
+ {
22
+ value: "yes",
23
+ text: "Yes"
24
+ },
25
+ {
26
+ value: "no",
27
+ text: "No"
28
+ }
29
+ ]
30
+ })
31
+
32
+ expect(html).to match_html(<<~HTML)
33
+ <div class="govuk-form-group">
34
+ <fieldset class="govuk-fieldset" aria-describedby="changed-name-hint">
35
+ <legend class="govuk-fieldset__legend govuk-fieldset__legend--l">
36
+ <h1 class="govuk-fieldset__heading">
37
+ Have you changed your name?
38
+ </h1>
39
+ </legend>
40
+ <div id="changed-name-hint" class="govuk-hint">
41
+ This includes changing your last name or spelling your name differently.
42
+ </div>
43
+ <div class="govuk-radios govuk-radios--inline" data-module="govuk-radios">
44
+ <div class="govuk-radios__item">
45
+ <input class="govuk-radios__input" id="changed-name-1" name="changed-name" type="radio" value="yes">
46
+ <label class="govuk-label govuk-radios__label" for="changed-name-1">
47
+ Yes
48
+ </label>
49
+ </div>
50
+ <div class="govuk-radios__item">
51
+ <input class="govuk-radios__input" id="changed-name-2" name="changed-name" type="radio" value="no">
52
+ <label class="govuk-label govuk-radios__label" for="changed-name-2">
53
+ No
54
+ </label>
55
+ </div>
56
+ </div>
57
+ </fieldset>
58
+ </div>
59
+ HTML
60
+ end
61
+
62
+ it "returns the correct HTML when there is an error message" do
63
+ html = helper.govukRadios({
64
+ idPrefix: "where-do-you-live",
65
+ name: "where-do-you-live",
66
+ fieldset: {
67
+ legend: {
68
+ text: "Where do you live?",
69
+ isPageHeading: true,
70
+ classes: "govuk-fieldset__legend--l"
71
+ }
72
+ },
73
+ items: [
74
+ {
75
+ value: "england",
76
+ text: "England"
77
+ },
78
+ {
79
+ value: "scotland",
80
+ text: "Scotland"
81
+ },
82
+ {
83
+ value: "wales",
84
+ text: "Wales"
85
+ },
86
+ {
87
+ value: "northern-ireland",
88
+ text: "Northern Ireland"
89
+ }
90
+ ],
91
+ errorMessage: {
92
+ text: "Select the country where you live"
93
+ }
94
+ })
95
+
96
+ expect(html).to match_html(<<~HTML)
97
+ <div class="govuk-form-group govuk-form-group--error">
98
+ <fieldset class="govuk-fieldset" aria-describedby="where-do-you-live-error">
99
+ <legend class="govuk-fieldset__legend govuk-fieldset__legend--l">
100
+ <h1 class="govuk-fieldset__heading">
101
+ Where do you live?
102
+ </h1>
103
+ </legend>
104
+ <p id="where-do-you-live-error" class="govuk-error-message">
105
+ <span class="govuk-visually-hidden">Error:</span> Select the country where you live
106
+ </p>
107
+ <div class="govuk-radios" data-module="govuk-radios">
108
+ <div class="govuk-radios__item">
109
+ <input class="govuk-radios__input" id="where-do-you-live-1" name="where-do-you-live" type="radio" value="england">
110
+ <label class="govuk-label govuk-radios__label" for="where-do-you-live-1">
111
+ England
112
+ </label>
113
+ </div>
114
+ <div class="govuk-radios__item">
115
+ <input class="govuk-radios__input" id="where-do-you-live-2" name="where-do-you-live" type="radio" value="scotland">
116
+ <label class="govuk-label govuk-radios__label" for="where-do-you-live-2">
117
+ Scotland
118
+ </label>
119
+ </div>
120
+ <div class="govuk-radios__item">
121
+ <input class="govuk-radios__input" id="where-do-you-live-3" name="where-do-you-live" type="radio" value="wales">
122
+ <label class="govuk-label govuk-radios__label" for="where-do-you-live-3">
123
+ Wales
124
+ </label>
125
+ </div>
126
+ <div class="govuk-radios__item">
127
+ <input class="govuk-radios__input" id="where-do-you-live-4" name="where-do-you-live" type="radio" value="northern-ireland">
128
+ <label class="govuk-label govuk-radios__label" for="where-do-you-live-4">
129
+ Northern Ireland
130
+ </label>
131
+ </div>
132
+ </div>
133
+ </fieldset>
134
+ </div>
135
+ HTML
136
+ end
137
+
138
+ it "returns the correct HTML when there is a conditional" do
139
+ email_htmltml = helper.govukInput({
140
+ id: "contact-by-email",
141
+ name: "contact-by-email",
142
+ type: "email",
143
+ autocomplete: "email",
144
+ spellcheck: false,
145
+ classes: "govuk-!-width-one-third",
146
+ label: {
147
+ text: "Email address"
148
+ }
149
+ })
150
+
151
+ phone_html = helper.govukInput({
152
+ id: "contact-by-phone",
153
+ name: "contact-by-phone",
154
+ type: "tel",
155
+ autocomplete: "tel",
156
+ classes: "govuk-!-width-one-third",
157
+ label: {
158
+ text: "Phone number"
159
+ }
160
+ })
161
+
162
+ text_html = helper.govukInput({
163
+ id: "contact-by-text",
164
+ name: "contact-by-text",
165
+ type: "tel",
166
+ autocomplete: "tel",
167
+ classes: "govuk-!-width-one-third",
168
+ label: {
169
+ text: "Mobile phone number"
170
+ }
171
+ })
172
+
173
+ helper.govukRadios({
174
+ idPrefix: "contact",
175
+ name: "contact",
176
+ fieldset: {
177
+ legend: {
178
+ text: "How would you prefer to be contacted?",
179
+ isPageHeading: true,
180
+ classes: "govuk-fieldset__legend--l"
181
+ }
182
+ },
183
+ hint: {
184
+ text: "Select one option."
185
+ },
186
+ items: [
187
+ {
188
+ value: "email",
189
+ text: "Email",
190
+ conditional: {
191
+ html: email_htmltml
192
+ }
193
+ },
194
+ {
195
+ value: "phone",
196
+ text: "Phone",
197
+ conditional: {
198
+ html: phone_html
199
+ }
200
+ },
201
+ {
202
+ value: "text",
203
+ text: "Text message",
204
+ conditional: {
205
+ html: text_html
206
+ }
207
+ }
208
+ ]
209
+ })
210
+ end
211
+
212
+ it "returns the correct HTML when there is a fieldset css class" do
213
+ html = helper.govukRadios({
214
+ classes: "govuk-radios--inline",
215
+ idPrefix: "changed-name",
216
+ name: "changed-name",
217
+ fieldset: {
218
+ classes: "app-grouping",
219
+ legend: {
220
+ text: "Have you changed your name?",
221
+ isPageHeading: true,
222
+ classes: "govuk-fieldset__legend--l"
223
+ }
224
+ },
225
+ hint: {
226
+ text: "This includes changing your last name or spelling your name differently."
227
+ },
228
+ items: [
229
+ {
230
+ value: "yes",
231
+ text: "Yes"
232
+ },
233
+ {
234
+ value: "no",
235
+ text: "No"
236
+ }
237
+ ]
238
+ })
239
+
240
+ expect(html).to match_html(<<~HTML)
241
+ <div class="govuk-form-group">
242
+ <fieldset class="govuk-fieldset app-grouping" aria-describedby="changed-name-hint">
243
+ <legend class="govuk-fieldset__legend govuk-fieldset__legend--l">
244
+ <h1 class="govuk-fieldset__heading">
245
+ Have you changed your name?
246
+ </h1>
247
+ </legend>
248
+ <div id="changed-name-hint" class="govuk-hint">
249
+ This includes changing your last name or spelling your name differently.
250
+ </div>
251
+ <div class="govuk-radios govuk-radios--inline" data-module="govuk-radios">
252
+ <div class="govuk-radios__item">
253
+ <input class="govuk-radios__input" id="changed-name-1" name="changed-name" type="radio" value="yes">
254
+ <label class="govuk-label govuk-radios__label" for="changed-name-1">
255
+ Yes
256
+ </label>
257
+ </div>
258
+ <div class="govuk-radios__item">
259
+ <input class="govuk-radios__input" id="changed-name-2" name="changed-name" type="radio" value="no">
260
+ <label class="govuk-label govuk-radios__label" for="changed-name-2">
261
+ No
262
+ </label>
263
+ </div>
264
+ </div>
265
+ </fieldset>
266
+ </div>
267
+ HTML
268
+ end
269
+ end
270
+ end
@@ -0,0 +1,85 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe GovukDesignSystem::SelectHelper, type: :helper do
4
+ describe "#govukSelect" do
5
+ it "returns the correct HTML for the default example" do
6
+ html = helper.govukSelect({
7
+ id: "sort",
8
+ name: "sort",
9
+ label: {
10
+ text: "Sort by"
11
+ },
12
+ items: [
13
+ {
14
+ value: "published",
15
+ text: "Recently published"
16
+ },
17
+ {
18
+ value: "updated",
19
+ text: "Recently updated",
20
+ selected: true
21
+ },
22
+ {
23
+ value: "views",
24
+ text: "Most views"
25
+ },
26
+ {
27
+ value: "comments",
28
+ text: "Most comments"
29
+ }
30
+ ]
31
+ })
32
+
33
+ expect(html).to match_html(<<~HTML)
34
+ <div class="govuk-form-group">
35
+ <label class="govuk-label" for="sort">
36
+ Sort by
37
+ </label>
38
+ <select class="govuk-select" id="sort" name="sort">
39
+ <option value="published">Recently published</option>
40
+ <option value="updated" selected="selected">Recently updated</option>
41
+ <option value="views">Most views</option>
42
+ <option value="comments">Most comments</option>
43
+ </select>
44
+ </div>
45
+ HTML
46
+ end
47
+
48
+ it "allows attributes to be passed" do
49
+ html = helper.govukSelect({
50
+ id: "sort",
51
+ name: "sort",
52
+ label: {
53
+ text: "Sort by"
54
+ },
55
+ items: [
56
+ {
57
+ value: "published",
58
+ text: "Recently published"
59
+ },
60
+ {
61
+ value: "updated",
62
+ text: "Recently updated",
63
+ selected: true
64
+ }
65
+ ],
66
+ attributes: {
67
+ disabled: true,
68
+ data: { test: "testing" }
69
+ }
70
+ })
71
+
72
+ expect(html).to match_html(<<~HTML)
73
+ <div class="govuk-form-group">
74
+ <label class="govuk-label" for="sort">
75
+ Sort by
76
+ </label>
77
+ <select class="govuk-select" id="sort" name="sort" disabled="disabled" data-test="testing">
78
+ <option value="published">Recently published</option>
79
+ <option value="updated" selected="selected">Recently updated</option>
80
+ </select>
81
+ </div>
82
+ HTML
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,138 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe GovukDesignSystem::SummaryListHelper, type: :helper do
4
+ describe "#govukSummaryList" do
5
+ it "returns the correct HTML for the default example" do
6
+ html = helper.govukSummaryList({
7
+ rows: [
8
+ {
9
+ key: {
10
+ text: "Name"
11
+ },
12
+ value: {
13
+ text: "Sarah Philips"
14
+ },
15
+ actions: {
16
+ items: [
17
+ {
18
+ href: "#",
19
+ text: "Change",
20
+ visuallyHiddenText: "name"
21
+ }
22
+ ]
23
+ }
24
+ },
25
+ {
26
+ key: {
27
+ text: "Date of birth"
28
+ },
29
+ value: {
30
+ text: "5 January 1978"
31
+ },
32
+ actions: {
33
+ items: [
34
+ {
35
+ href: "#",
36
+ text: "Change",
37
+ visuallyHiddenText: "date of birth"
38
+ }
39
+ ]
40
+ }
41
+ },
42
+ {
43
+ key: {
44
+ text: "Address"
45
+ },
46
+ value: {
47
+ html: "72 Guild Street<br>London<br>SE23 6FH".html_safe
48
+ },
49
+ actions: {
50
+ items: [
51
+ {
52
+ href: "#",
53
+ text: "Change",
54
+ visuallyHiddenText: "address"
55
+ }
56
+ ]
57
+ }
58
+ },
59
+ {
60
+ key: {
61
+ text: "Contact details"
62
+ },
63
+ value: {
64
+ html: '<p class="govuk-body">07700 900457</p><p class="govuk-body">sarah.phillips@example.com</p>'.html_safe
65
+ },
66
+ actions: {
67
+ items: [
68
+ {
69
+ href: "#",
70
+ text: "Change",
71
+ visuallyHiddenText: "contact details"
72
+ }
73
+ ]
74
+ }
75
+ }
76
+ ]
77
+ })
78
+
79
+ expect(html).to match_html(<<~HTML)
80
+ <dl class="govuk-summary-list">
81
+ <div class="govuk-summary-list__row">
82
+ <dt class="govuk-summary-list__key">
83
+ Name
84
+ </dt>
85
+ <dd class="govuk-summary-list__value">
86
+ Sarah Philips
87
+ </dd>
88
+ <dd class="govuk-summary-list__actions">
89
+ <a class="govuk-link" href="#">
90
+ Change<span class="govuk-visually-hidden"> name</span>
91
+ </a>
92
+ </dd>
93
+ </div>
94
+ <div class="govuk-summary-list__row">
95
+ <dt class="govuk-summary-list__key">
96
+ Date of birth
97
+ </dt>
98
+ <dd class="govuk-summary-list__value">
99
+ 5 January 1978
100
+ </dd>
101
+ <dd class="govuk-summary-list__actions">
102
+ <a class="govuk-link" href="#">
103
+ Change<span class="govuk-visually-hidden"> date of birth</span>
104
+ </a>
105
+ </dd>
106
+ </div>
107
+ <div class="govuk-summary-list__row">
108
+ <dt class="govuk-summary-list__key">
109
+ Address
110
+ </dt>
111
+ <dd class="govuk-summary-list__value">
112
+ 72 Guild Street<br>London<br>SE23 6FH
113
+ </dd>
114
+ <dd class="govuk-summary-list__actions">
115
+ <a class="govuk-link" href="#">
116
+ Change<span class="govuk-visually-hidden"> address</span>
117
+ </a>
118
+ </dd>
119
+ </div>
120
+ <div class="govuk-summary-list__row">
121
+ <dt class="govuk-summary-list__key">
122
+ Contact details
123
+ </dt>
124
+ <dd class="govuk-summary-list__value">
125
+ <p class="govuk-body">07700 900457</p>
126
+ <p class="govuk-body">sarah.phillips@example.com</p>
127
+ </dd>
128
+ <dd class="govuk-summary-list__actions">
129
+ <a class="govuk-link" href="#">
130
+ Change<span class="govuk-visually-hidden"> contact details</span>
131
+ </a>
132
+ </dd>
133
+ </div>
134
+ </dl>
135
+ HTML
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,129 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe GovukDesignSystem::TabsHelper, type: :helper do
4
+ describe "#govukTabs" do
5
+ it "returns the correct HTML for the default example" do
6
+ html = helper.govukTabs({
7
+ items: [
8
+ {
9
+ label: "Past day",
10
+ id: "past-day",
11
+ panel: {
12
+ html: "<strong>Past day</strong>".html_safe
13
+ }
14
+ },
15
+ {
16
+ label: "Past week",
17
+ id: "past-week",
18
+ panel: {
19
+ html: "<strong>Past week</strong>".html_safe
20
+ }
21
+ },
22
+ {
23
+ label: "Past month",
24
+ id: "past-month",
25
+ panel: {
26
+ html: "<strong>Past month</strong>".html_safe
27
+ }
28
+ },
29
+ {
30
+ label: "Past year",
31
+ id: "past-year",
32
+ panel: {
33
+ html: "<strong>Past year</strong>".html_safe
34
+ }
35
+ }
36
+ ]
37
+ })
38
+
39
+ expect(html).to match_html(<<~HTML)
40
+ <div class="govuk-tabs" data-module="govuk-tabs">
41
+ <h2 class="govuk-tabs__title">
42
+ Contents
43
+ </h2>
44
+ <ul class="govuk-tabs__list">
45
+ <li class="govuk-tabs__list-item govuk-tabs__list-item--selected">
46
+ <a class="govuk-tabs__tab" href="#past-day">
47
+ Past day
48
+ </a>
49
+ </li>
50
+ <li class="govuk-tabs__list-item">
51
+ <a class="govuk-tabs__tab" href="#past-week">
52
+ Past week
53
+ </a>
54
+ </li>
55
+ <li class="govuk-tabs__list-item">
56
+ <a class="govuk-tabs__tab" href="#past-month">
57
+ Past month
58
+ </a>
59
+ </li>
60
+ <li class="govuk-tabs__list-item">
61
+ <a class="govuk-tabs__tab" href="#past-year">
62
+ Past year
63
+ </a>
64
+ </li>
65
+ </ul>
66
+ <div class="govuk-tabs__panel" id="past-day">
67
+ <strong>Past day</strong>
68
+ </div>
69
+ <div class="govuk-tabs__panel govuk-tabs__panel--hidden" id="past-week">
70
+ <strong>Past week</strong>
71
+ </div>
72
+ <div class="govuk-tabs__panel govuk-tabs__panel--hidden" id="past-month">
73
+ <strong>Past month</strong>
74
+ </div>
75
+ <div class="govuk-tabs__panel govuk-tabs__panel--hidden" id="past-year">
76
+ <strong>Past year</strong>
77
+ </div>
78
+ </div>
79
+ HTML
80
+ end
81
+
82
+ it "returns the correct HTML for a text panel item" do
83
+ html = helper.govukTabs({
84
+ items: [
85
+ {
86
+ label: "Past day",
87
+ id: "past-day",
88
+ panel: {
89
+ text: "Past day"
90
+ }
91
+ },
92
+ {
93
+ label: "Past week",
94
+ id: "past-week",
95
+ panel: {
96
+ html: "<strong>Past week</strong>".html_safe
97
+ }
98
+ }
99
+ ]
100
+ })
101
+
102
+ expect(html).to match_html(<<~HTML)
103
+ <div class="govuk-tabs" data-module="govuk-tabs">
104
+ <h2 class="govuk-tabs__title">
105
+ Contents
106
+ </h2>
107
+ <ul class="govuk-tabs__list">
108
+ <li class="govuk-tabs__list-item govuk-tabs__list-item--selected">
109
+ <a class="govuk-tabs__tab" href="#past-day">
110
+ Past day
111
+ </a>
112
+ </li>
113
+ <li class="govuk-tabs__list-item">
114
+ <a class="govuk-tabs__tab" href="#past-week">
115
+ Past week
116
+ </a>
117
+ </li>
118
+ </ul>
119
+ <div class="govuk-tabs__panel" id="past-day">
120
+ <p class="govuk-body">Past day</p>
121
+ </div>
122
+ <div class="govuk-tabs__panel govuk-tabs__panel--hidden" id="past-week">
123
+ <strong>Past week</strong>
124
+ </div>
125
+ </div>
126
+ HTML
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,17 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe GovukDesignSystem::TagHelper, type: :helper do
4
+ describe "#govukTag" do
5
+ it "returns the correct HTML for the default example" do
6
+ html = helper.govukTag({
7
+ text: "completed"
8
+ })
9
+
10
+ expect(html).to match_html(<<~HTML)
11
+ <strong class="govuk-tag">
12
+ completed
13
+ </strong>
14
+ HTML
15
+ end
16
+ end
17
+ end