1 changed files with 57 additions and 0 deletions
@ -0,0 +1,57 @@
|
||||
require "rails_helper" |
||||
|
||||
RSpec.describe "layouts/application" do |
||||
shared_examples "analytics cookie elements" do |banner:, scripts:| |
||||
define_negated_matcher :not_match, :match |
||||
|
||||
it "#{banner ? 'includes' : 'omits'} the cookie banner" do |
||||
banner_text = "We’d like to use analytics cookies so we can understand how you use the service and make improvements." |
||||
if banner |
||||
expect(rendered).to match(banner_text) |
||||
else |
||||
expect(rendered).not_to match(banner_text) |
||||
end |
||||
end |
||||
|
||||
it "#{scripts ? 'includes' : 'omits'} the analytics scripts" do |
||||
gtm_script_tag = /<script.*googletagmanager/ |
||||
gtm_iframe_tag = /<iframe.*googletagmanager/ |
||||
if scripts |
||||
expect(rendered).to match(gtm_script_tag).and match(gtm_iframe_tag) |
||||
else |
||||
expect(rendered).to not_match(gtm_script_tag).and not_match(gtm_iframe_tag) |
||||
end |
||||
end |
||||
end |
||||
|
||||
context "with no cookie set" do |
||||
before do |
||||
cookies[:accept_analytics_cookies] = nil |
||||
render |
||||
end |
||||
|
||||
include_examples "analytics cookie elements", banner: true, scripts: false |
||||
|
||||
it "sets window.analyticsScript for the JS to refer to if the user accepts" do |
||||
expect(rendered).to match(/window\.analyticsScript = "https:\/\/www\.googletagmanager\.com\/gtag\/js\?id=G-[\w\d]+"/) |
||||
end |
||||
end |
||||
|
||||
context "with analytics accepted" do |
||||
before do |
||||
cookies[:accept_analytics_cookies] = "on" |
||||
render |
||||
end |
||||
|
||||
include_examples "analytics cookie elements", banner: false, scripts: true |
||||
end |
||||
|
||||
context "with analytics rejected" do |
||||
before do |
||||
cookies[:accept_analytics_cookies] = "off" |
||||
render |
||||
end |
||||
|
||||
include_examples "analytics cookie elements", banner: false, scripts: false |
||||
end |
||||
end |
||||
Loading…
Reference in new issue