slimmer 7.0.0 → 8.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/lib/slimmer.rb +1 -1
- data/lib/slimmer/headers.rb +0 -1
- data/lib/slimmer/processors/metadata_inserter.rb +34 -0
- data/lib/slimmer/skin.rb +1 -1
- data/lib/slimmer/version.rb +1 -1
- data/test/fixtures/wrapper.html.erb +0 -5
- data/test/processors/metadata_inserter_test.rb +149 -0
- metadata +5 -5
- data/lib/slimmer/processors/google_analytics_configurator.rb +0 -47
- data/test/processors/google_analytics_test.rb +0 -198
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f23b920aad27dfc980397b64f2f9e401b96d863
|
4
|
+
data.tar.gz: 79a169c43fcc6d616172ff4dcc637857cf2d1419
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 34a7a53a6e06102e2f2db641c9971bc25891a76ed726739ed5a66fcc0db731b7535238884adb97d449616a04e57c259baea0498dd4cf9df67e152bb8755dac9f
|
7
|
+
data.tar.gz: 328d89ec79ca51cfd76a4fb7ebb80d59f53461eb8832115750d6f4998b4adf9f7ac6beced889fba4f71705f980ae6c3a306d51b2ae5872450525e12eb00f9535
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
# 8.0.0
|
2
|
+
|
3
|
+
* Switch from JS custom variables to HTML meta tags
|
4
|
+
|
5
|
+
Slimmer now appends page metadata as meta tags instead of setting Google
|
6
|
+
custom variables within a script tag. The Google-specific implementation
|
7
|
+
details have been removed.
|
8
|
+
|
9
|
+
Any apps that need to report analytics events will require additional
|
10
|
+
Javascript that reads the meta tags and sends the relevant data to the
|
11
|
+
analytics platform. The current best practice for doing this is using
|
12
|
+
the GOV.UK Analytics API - you can find the [code, examples and documentation
|
13
|
+
in `govuk_frontend_toolkit`](https://github.com/alphagov/govuk_frontend_toolkit/blob/master/docs/analytics.md).
|
14
|
+
|
15
|
+
* Remove Proposition header, since this information wasn't being used
|
16
|
+
|
1
17
|
# 7.0.0
|
2
18
|
|
3
19
|
* Remove AlphaLabelInserter, BetaNoticeInserter, BetaLabelInserter. These are
|
data/lib/slimmer.rb
CHANGED
@@ -26,7 +26,7 @@ module Slimmer
|
|
26
26
|
autoload :BodyInserter, 'slimmer/processors/body_inserter'
|
27
27
|
autoload :ConditionalCommentMover, 'slimmer/processors/conditional_comment_mover'
|
28
28
|
autoload :FooterRemover, 'slimmer/processors/footer_remover'
|
29
|
-
autoload :
|
29
|
+
autoload :MetadataInserter, 'slimmer/processors/metadata_inserter'
|
30
30
|
autoload :HeaderContextInserter, 'slimmer/processors/header_context_inserter'
|
31
31
|
autoload :NavigationMover, 'slimmer/processors/navigation_mover'
|
32
32
|
autoload :MetaViewportRemover, 'slimmer/processors/meta_viewport_remover'
|
data/lib/slimmer/headers.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
module Slimmer::Processors
|
2
|
+
class MetadataInserter
|
3
|
+
def initialize(response, artefact)
|
4
|
+
@headers = response.headers
|
5
|
+
@artefact = artefact
|
6
|
+
end
|
7
|
+
|
8
|
+
def filter(src, dest)
|
9
|
+
head = dest.at_css('head')
|
10
|
+
|
11
|
+
if @artefact
|
12
|
+
add_meta_tag('section', @artefact.primary_root_section["title"].downcase, head) if @artefact.primary_root_section
|
13
|
+
add_meta_tag('need-ids', @artefact.need_ids.join(',').downcase, head) if @artefact.need_ids
|
14
|
+
end
|
15
|
+
|
16
|
+
add_meta_tag('analytics:organisations', @headers[Slimmer::Headers::ORGANISATIONS_HEADER], head)
|
17
|
+
add_meta_tag('analytics:world-locations', @headers[Slimmer::Headers::WORLD_LOCATIONS_HEADER], head)
|
18
|
+
add_meta_tag('format', @headers[Slimmer::Headers::FORMAT_HEADER], head)
|
19
|
+
add_meta_tag('search-result-count', @headers[Slimmer::Headers::RESULT_COUNT_HEADER], head)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def add_meta_tag(name, content, head)
|
25
|
+
if content
|
26
|
+
meta_node = Nokogiri::XML::Node.new('meta', head)
|
27
|
+
meta_node['name'] = "govuk:#{name}"
|
28
|
+
meta_node['content'] = content
|
29
|
+
|
30
|
+
head.add_child(meta_node)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/slimmer/skin.rb
CHANGED
@@ -117,7 +117,7 @@ module Slimmer
|
|
117
117
|
Processors::BodyClassCopier.new,
|
118
118
|
Processors::HeaderContextInserter.new(),
|
119
119
|
Processors::SectionInserter.new(artefact),
|
120
|
-
Processors::
|
120
|
+
Processors::MetadataInserter.new(response, artefact),
|
121
121
|
Processors::SearchParameterInserter.new(response),
|
122
122
|
Processors::SearchPathSetter.new(response),
|
123
123
|
Processors::RelatedItemsInserter.new(self, artefact),
|
data/lib/slimmer/version.rb
CHANGED
@@ -2,11 +2,6 @@
|
|
2
2
|
<html>
|
3
3
|
<head>
|
4
4
|
<title>Slimmer, yay!</title>
|
5
|
-
<script id="ga-params" type="text/javascript">
|
6
|
-
var GOVUK = GOVUK || {};
|
7
|
-
GOVUK.Analytics = GOVUK.Analytics || {};
|
8
|
-
var _gaq = _gaq || [];
|
9
|
-
</script>
|
10
5
|
</head>
|
11
6
|
<body>
|
12
7
|
<header id="global-header"><h1>I AM A TITLE</h1></header>
|
@@ -0,0 +1,149 @@
|
|
1
|
+
require_relative "../test_helper"
|
2
|
+
|
3
|
+
module MetadataInserterTest
|
4
|
+
|
5
|
+
GENERIC_DOCUMENT = <<-END
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>The title of the page</title>
|
9
|
+
</head>
|
10
|
+
<body class="body_class">
|
11
|
+
<div id="wrapper">The body of the page</div>
|
12
|
+
</body>
|
13
|
+
</html>
|
14
|
+
END
|
15
|
+
|
16
|
+
module MetaTagAssertions
|
17
|
+
def assert_meta_tag(name, content)
|
18
|
+
template = Nokogiri::HTML(last_response.body)
|
19
|
+
assert_in template, "head meta[name='govuk:#{name}'][content='#{content}']"
|
20
|
+
end
|
21
|
+
|
22
|
+
def refute_meta_tag(name)
|
23
|
+
template = Nokogiri::HTML(last_response.body)
|
24
|
+
assert_not_in template, "head meta[name='govuk:#{name}']"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class WithHeadersTest < SlimmerIntegrationTest
|
29
|
+
include MetaTagAssertions
|
30
|
+
|
31
|
+
def setup
|
32
|
+
super
|
33
|
+
|
34
|
+
artefact = artefact_for_slug_in_a_subsection("something", "rhubarb/in-puddings")
|
35
|
+
artefact["details"].merge!(
|
36
|
+
"need_ids" => [100001,100002],
|
37
|
+
)
|
38
|
+
headers = {
|
39
|
+
Slimmer::Headers::FORMAT_HEADER => "custard",
|
40
|
+
Slimmer::Headers::RESULT_COUNT_HEADER => "3",
|
41
|
+
Slimmer::Headers::ARTEFACT_HEADER => artefact.to_json,
|
42
|
+
Slimmer::Headers::ORGANISATIONS_HEADER => "<P1><D422>",
|
43
|
+
Slimmer::Headers::WORLD_LOCATIONS_HEADER => "<WL3>"
|
44
|
+
}
|
45
|
+
|
46
|
+
given_response 200, GENERIC_DOCUMENT, headers
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_should_include_section_meta_tag
|
50
|
+
assert_meta_tag "section", "rhubarb"
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_should_include_format_meta_tag
|
54
|
+
assert_meta_tag "format", "custard"
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_should_include_need_ids_meta_tag
|
58
|
+
assert_meta_tag "need-ids", "100001,100002"
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_should_include_organisations_meta_tag
|
62
|
+
assert_meta_tag "analytics:organisations", "<P1><D422>"
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_should_include_world_locations_meta_tag
|
66
|
+
assert_meta_tag "analytics:world-locations", "<WL3>"
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_should_include_search_result_count_meta_tag
|
70
|
+
assert_meta_tag "search-result-count", "3"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
class WithInvalidAttributes < SlimmerIntegrationTest
|
75
|
+
include MetaTagAssertions
|
76
|
+
|
77
|
+
def setup
|
78
|
+
super
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_should_skip_passing_need_ids_if_they_are_nil
|
82
|
+
artefact = artefact_for_slug_in_a_subsection("something", "rhubarb/in-puddings")
|
83
|
+
headers = {
|
84
|
+
Slimmer::Headers::ARTEFACT_HEADER => artefact.to_json,
|
85
|
+
Slimmer::Headers::FORMAT_HEADER => "custard"
|
86
|
+
}
|
87
|
+
given_response 200, GENERIC_DOCUMENT, headers
|
88
|
+
|
89
|
+
refute_meta_tag "need-ids"
|
90
|
+
# the presence of these attributes tests that the nil check worked
|
91
|
+
assert_meta_tag "section", "rhubarb"
|
92
|
+
assert_meta_tag "format", "custard"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
class WithoutHeadersTest < SlimmerIntegrationTest
|
97
|
+
include MetaTagAssertions
|
98
|
+
|
99
|
+
given_response 200, GENERIC_DOCUMENT, {}
|
100
|
+
|
101
|
+
def test_should_omit_section
|
102
|
+
refute_meta_tag "section"
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_should_omit_internal_format_name
|
106
|
+
refute_meta_tag "format"
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_should_omit_need_ID
|
110
|
+
refute_meta_tag "need-ids"
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_should_omit_organisations
|
114
|
+
refute_meta_tag "analytics:organisations"
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_should_omit_world_locations
|
118
|
+
refute_meta_tag "analytics:world-locations"
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_should_omit_result_count
|
122
|
+
refute_meta_tag "search-result-count"
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
class WithNilHeaderTest < SlimmerIntegrationTest
|
127
|
+
include MetaTagAssertions
|
128
|
+
|
129
|
+
def setup
|
130
|
+
super
|
131
|
+
|
132
|
+
artefact = artefact_for_slug_in_a_subsection("something", "rhubarb/in-puddings")
|
133
|
+
artefact["details"].merge!(
|
134
|
+
"need_ids" => [100001, 100002],
|
135
|
+
)
|
136
|
+
headers = {
|
137
|
+
Slimmer::Headers::RESULT_COUNT_HEADER => "3",
|
138
|
+
Slimmer::Headers::ARTEFACT_HEADER => artefact.to_json,
|
139
|
+
Slimmer::Headers::ORGANISATIONS_HEADER => "<P1><D422>"
|
140
|
+
}
|
141
|
+
|
142
|
+
given_response 200, GENERIC_DOCUMENT, headers
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_should_include_organisation_meta_tag_without_crashing
|
146
|
+
assert_meta_tag "analytics:organisations", "<P1><D422>"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slimmer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 8.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Griffiths
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-03-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -266,9 +266,9 @@ files:
|
|
266
266
|
- lib/slimmer/processors/body_inserter.rb
|
267
267
|
- lib/slimmer/processors/conditional_comment_mover.rb
|
268
268
|
- lib/slimmer/processors/footer_remover.rb
|
269
|
-
- lib/slimmer/processors/google_analytics_configurator.rb
|
270
269
|
- lib/slimmer/processors/header_context_inserter.rb
|
271
270
|
- lib/slimmer/processors/meta_viewport_remover.rb
|
271
|
+
- lib/slimmer/processors/metadata_inserter.rb
|
272
272
|
- lib/slimmer/processors/navigation_mover.rb
|
273
273
|
- lib/slimmer/processors/related_items_inserter.rb
|
274
274
|
- lib/slimmer/processors/report_a_problem_inserter.rb
|
@@ -300,9 +300,9 @@ files:
|
|
300
300
|
- test/fixtures/wrapper.html.erb
|
301
301
|
- test/headers_test.rb
|
302
302
|
- test/processors/body_inserter_test.rb
|
303
|
-
- test/processors/google_analytics_test.rb
|
304
303
|
- test/processors/header_context_inserter_test.rb
|
305
304
|
- test/processors/meta_viewport_remover_test.rb
|
305
|
+
- test/processors/metadata_inserter_test.rb
|
306
306
|
- test/processors/navigation_mover_test.rb
|
307
307
|
- test/processors/related_items_inserter_test.rb
|
308
308
|
- test/processors/report_a_problem_inserter_test.rb
|
@@ -361,9 +361,9 @@ test_files:
|
|
361
361
|
- test/processors/navigation_mover_test.rb
|
362
362
|
- test/processors/related_items_inserter_test.rb
|
363
363
|
- test/processors/search_path_setter_test.rb
|
364
|
-
- test/processors/google_analytics_test.rb
|
365
364
|
- test/processors/meta_viewport_remover_test.rb
|
366
365
|
- test/processors/search_parameter_inserter_test.rb
|
367
366
|
- test/processors/section_inserter_test.rb
|
368
367
|
- test/processors/report_a_problem_inserter_test.rb
|
369
368
|
- test/processors/tag_mover_test.rb
|
369
|
+
- test/processors/metadata_inserter_test.rb
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require "json"
|
2
|
-
|
3
|
-
module Slimmer::Processors
|
4
|
-
class GoogleAnalyticsConfigurator
|
5
|
-
PAGE_LEVEL_EVENT = 3
|
6
|
-
|
7
|
-
def initialize(response, artefact)
|
8
|
-
@headers = response.headers
|
9
|
-
@artefact = artefact
|
10
|
-
end
|
11
|
-
|
12
|
-
def filter(src, dest)
|
13
|
-
custom_vars = []
|
14
|
-
if @artefact
|
15
|
-
custom_vars << set_custom_var_downcase(1, "Section", @artefact.primary_root_section["title"]) if @artefact.primary_root_section
|
16
|
-
custom_vars << set_multivalue_custom_var(3, "NeedID", @artefact.need_ids)
|
17
|
-
custom_vars << set_custom_var_downcase(4, "Proposition", (@artefact.business_proposition ? 'business' : 'citizen')) unless @artefact.business_proposition.nil?
|
18
|
-
end
|
19
|
-
custom_vars << set_custom_var(9, "Organisations", @headers[Slimmer::Headers::ORGANISATIONS_HEADER])
|
20
|
-
custom_vars << set_custom_var(10, "WorldLocations", @headers[Slimmer::Headers::WORLD_LOCATIONS_HEADER])
|
21
|
-
custom_vars << set_custom_var_downcase(2, "Format", @headers[Slimmer::Headers::FORMAT_HEADER])
|
22
|
-
custom_vars << set_custom_var_downcase(5, "ResultCount", @headers[Slimmer::Headers::RESULT_COUNT_HEADER])
|
23
|
-
|
24
|
-
if dest.at_css("#ga-params")
|
25
|
-
dest.at_css("#ga-params").content += custom_vars.compact.join("\n")
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
def set_custom_var_downcase(slot, name, value)
|
31
|
-
return nil unless value
|
32
|
-
set_custom_var(slot, name, value.downcase)
|
33
|
-
end
|
34
|
-
|
35
|
-
def set_multivalue_custom_var(slot, name, values)
|
36
|
-
return nil if !values.is_a?(Array) || values.empty?
|
37
|
-
set_custom_var(slot, name, values.join(',').downcase)
|
38
|
-
end
|
39
|
-
|
40
|
-
def set_custom_var(slot, name, value)
|
41
|
-
return nil unless value
|
42
|
-
response = "_gaq.push(#{JSON.dump([ "_setCustomVar", slot, name, value, PAGE_LEVEL_EVENT])});\n"
|
43
|
-
response + "GOVUK.Analytics.#{name} = \"#{value}\";"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
@@ -1,198 +0,0 @@
|
|
1
|
-
require_relative "../test_helper"
|
2
|
-
require "v8"
|
3
|
-
|
4
|
-
module GoogleAnalyticsTest
|
5
|
-
PAGE_LEVEL_EVENT = 3
|
6
|
-
|
7
|
-
GENERIC_DOCUMENT = <<-END
|
8
|
-
<html>
|
9
|
-
<head>
|
10
|
-
<title>The title of the page</title>
|
11
|
-
</head>
|
12
|
-
<body class="body_class">
|
13
|
-
<div id="wrapper">The body of the page</div>
|
14
|
-
</body>
|
15
|
-
</html>
|
16
|
-
END
|
17
|
-
|
18
|
-
module JavaScriptAssertions
|
19
|
-
def gaq
|
20
|
-
js = Nokogiri::HTML(last_response.body).at_css("#ga-params").text
|
21
|
-
context = V8::Context.new
|
22
|
-
context.eval(js)
|
23
|
-
context.eval("_gaq");
|
24
|
-
end
|
25
|
-
|
26
|
-
def govuk
|
27
|
-
js = Nokogiri::HTML(last_response.body).at_css("#ga-params").text
|
28
|
-
context = V8::Context.new
|
29
|
-
context.eval(js)
|
30
|
-
context.eval("GOVUK.Analytics");
|
31
|
-
end
|
32
|
-
|
33
|
-
def assert_custom_var(slot, name, value, page_level)
|
34
|
-
# Ruby Racer JS arrays don't accept range indexing, so we must
|
35
|
-
# use a slightly longer workaround
|
36
|
-
vars = gaq.select { |a| a[0] == "_setCustomVar" }.
|
37
|
-
map { |a| (1..4).map { |i| a[i] } }
|
38
|
-
assert_includes vars, [slot, name, value, page_level]
|
39
|
-
end
|
40
|
-
|
41
|
-
def assert_set_var(name, value, object)
|
42
|
-
assert_equal value, object.find { |each| each[0] == name }[1]
|
43
|
-
end
|
44
|
-
|
45
|
-
def refute_custom_var(name)
|
46
|
-
vars = gaq.select { |a| a[0] == "_setCustomVar" }.map { |a| a[2] }
|
47
|
-
refute_includes vars, name
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
class WithHeadersTest < SlimmerIntegrationTest
|
52
|
-
include JavaScriptAssertions
|
53
|
-
|
54
|
-
def setup
|
55
|
-
super
|
56
|
-
|
57
|
-
artefact = artefact_for_slug_in_a_subsection("something", "rhubarb/in-puddings")
|
58
|
-
artefact["details"].merge!(
|
59
|
-
"need_ids" => [100001,100002],
|
60
|
-
"business_proposition" => true,
|
61
|
-
)
|
62
|
-
headers = {
|
63
|
-
Slimmer::Headers::FORMAT_HEADER => "custard",
|
64
|
-
Slimmer::Headers::RESULT_COUNT_HEADER => "3",
|
65
|
-
Slimmer::Headers::ARTEFACT_HEADER => artefact.to_json,
|
66
|
-
Slimmer::Headers::ORGANISATIONS_HEADER => "<P1><D422>",
|
67
|
-
Slimmer::Headers::WORLD_LOCATIONS_HEADER => "<WL3>"
|
68
|
-
}
|
69
|
-
|
70
|
-
given_response 200, GENERIC_DOCUMENT, headers
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_should_pass_section_to_GA
|
74
|
-
assert_custom_var 1, "Section", "rhubarb", PAGE_LEVEL_EVENT
|
75
|
-
end
|
76
|
-
|
77
|
-
def test_should_set_section_in_GOVUK_object
|
78
|
-
assert_set_var "Section", "rhubarb", govuk
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_should_pass_internal_format_name_to_GA
|
82
|
-
assert_custom_var 2, "Format", "custard", PAGE_LEVEL_EVENT
|
83
|
-
end
|
84
|
-
|
85
|
-
def test_should_set_internal_format_name_in_GOVUK_object
|
86
|
-
assert_set_var "Format", "custard", govuk
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_should_pass_need_ids_to_GA
|
90
|
-
assert_custom_var 3, "NeedID", "100001,100002", PAGE_LEVEL_EVENT
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_should_set_need_ids_in_GOVUK_object
|
94
|
-
assert_set_var "NeedID", "100001,100002", govuk
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_should_pass_proposition_to_GA
|
98
|
-
assert_custom_var 4, "Proposition", "business", PAGE_LEVEL_EVENT
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_should_pass_organisation_to_GA
|
102
|
-
assert_custom_var 9, "Organisations", "<P1><D422>", PAGE_LEVEL_EVENT
|
103
|
-
end
|
104
|
-
|
105
|
-
def test_should_pass_world_location_to_GA
|
106
|
-
assert_custom_var 10, "WorldLocations", "<WL3>", PAGE_LEVEL_EVENT
|
107
|
-
end
|
108
|
-
|
109
|
-
def test_should_set_proposition_in_GOVUK_object
|
110
|
-
assert_set_var "Proposition", "business", govuk
|
111
|
-
end
|
112
|
-
|
113
|
-
def test_should_pass_result_count_to_GA
|
114
|
-
assert_custom_var 5, "ResultCount", "3", PAGE_LEVEL_EVENT
|
115
|
-
end
|
116
|
-
|
117
|
-
def test_should_set_result_count_in_GOVUK_object
|
118
|
-
assert_set_var "ResultCount", "3", govuk
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
class WithInvalidAttributes < SlimmerIntegrationTest
|
123
|
-
include JavaScriptAssertions
|
124
|
-
|
125
|
-
def setup
|
126
|
-
super
|
127
|
-
end
|
128
|
-
|
129
|
-
def test_should_skip_passing_need_ids_if_they_are_nil
|
130
|
-
artefact = artefact_for_slug_in_a_subsection("something", "rhubarb/in-puddings")
|
131
|
-
headers = {
|
132
|
-
Slimmer::Headers::ARTEFACT_HEADER => artefact.to_json,
|
133
|
-
Slimmer::Headers::FORMAT_HEADER => "custard"
|
134
|
-
}
|
135
|
-
given_response 200, GENERIC_DOCUMENT, headers
|
136
|
-
|
137
|
-
refute_custom_var "NeedID"
|
138
|
-
# the presence of these attributes tests that the nil check worked
|
139
|
-
assert_custom_var 1, "Section", "rhubarb", PAGE_LEVEL_EVENT
|
140
|
-
assert_custom_var 2, "Format", "custard", PAGE_LEVEL_EVENT
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
class WithoutHeadersTest < SlimmerIntegrationTest
|
145
|
-
include JavaScriptAssertions
|
146
|
-
|
147
|
-
given_response 200, GENERIC_DOCUMENT, {}
|
148
|
-
|
149
|
-
def test_should_omit_section
|
150
|
-
refute_custom_var "Section"
|
151
|
-
end
|
152
|
-
|
153
|
-
def test_should_omit_internal_format_name
|
154
|
-
refute_custom_var "Format"
|
155
|
-
end
|
156
|
-
|
157
|
-
def test_should_omit_need_ID
|
158
|
-
refute_custom_var "NeedID"
|
159
|
-
end
|
160
|
-
|
161
|
-
def test_should_omit_proposition
|
162
|
-
refute_custom_var "Proposition"
|
163
|
-
end
|
164
|
-
|
165
|
-
def test_should_omit_organisations
|
166
|
-
refute_custom_var "Organisations"
|
167
|
-
end
|
168
|
-
|
169
|
-
def test_should_omit_result_count
|
170
|
-
refute_custom_var "ResultCount"
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
|
-
class WithNilHeaderTest < SlimmerIntegrationTest
|
175
|
-
include JavaScriptAssertions
|
176
|
-
|
177
|
-
def setup
|
178
|
-
super
|
179
|
-
|
180
|
-
artefact = artefact_for_slug_in_a_subsection("something", "rhubarb/in-puddings")
|
181
|
-
artefact["details"].merge!(
|
182
|
-
"need_ids" => [100001, 100002],
|
183
|
-
"business_proposition" => true
|
184
|
-
)
|
185
|
-
headers = {
|
186
|
-
Slimmer::Headers::RESULT_COUNT_HEADER => "3",
|
187
|
-
Slimmer::Headers::ARTEFACT_HEADER => artefact.to_json,
|
188
|
-
Slimmer::Headers::ORGANISATIONS_HEADER => "<P1><D422>"
|
189
|
-
}
|
190
|
-
|
191
|
-
given_response 200, GENERIC_DOCUMENT, headers
|
192
|
-
end
|
193
|
-
|
194
|
-
def test_should_pass_organisation_to_GA_without_crashing
|
195
|
-
assert_custom_var 9, "Organisations", "<P1><D422>", PAGE_LEVEL_EVENT
|
196
|
-
end
|
197
|
-
end
|
198
|
-
end
|