Files
nairobi/spec/system/cookies_consent_spec.rb

158 lines
5.3 KiB
Ruby

require "rails_helper"
describe "Cookies consent" do
before do
Setting["feature.cookies_consent"] = true
script = "$('body').append('Running third party script');"
create(:cookies_vendor, name: "Third party", cookie: "third_party", script: script)
end
context "Banner consent" do
scenario "Hides the banner when accepting essential cookies and for consecutive visits" do
visit root_path
expect(cookie_by_name("cookies_consent")).to be nil
expect(cookie_by_name("third_party")).to be nil
expect(page).not_to have_content "Running third party script"
within ".cookies-consent-banner" do
click_button "Accept essential cookies"
end
expect(cookie_by_name("cookies_consent")[:value]).to eq "essential"
expect(cookie_by_name("third_party")[:value]).to eq "false"
expect(page).not_to have_content "Cookies policy"
expect(page).not_to have_content "Running third party script"
refresh
expect(page).not_to have_content "Cookies policy"
expect(page).not_to have_content "Running third party script"
end
scenario "Hides the banner when accepting all cookies and for consecutive visits" do
visit root_path
expect(cookie_by_name("cookies_consent")).to be nil
expect(cookie_by_name("third_party")).to be nil
expect(page).not_to have_content "Running third party script"
within ".cookies-consent-banner" do
click_button "Accept all"
end
expect(cookie_by_name("cookies_consent")[:value]).to eq "all"
expect(cookie_by_name("third_party")[:value]).to eq "true"
expect(page).not_to have_content "Cookies policy"
expect(page).not_to have_content "Running third party script"
refresh
expect(page).not_to have_content "Cookies policy"
expect(page).to have_content "Running third party script", count: 1
end
end
context "Management modal" do
scenario "Allow users to accept essential cookies and hide management modal" do
visit root_path
expect(cookie_by_name("cookies_consent")).to be nil
expect(cookie_by_name("third_party")).to be nil
expect(page).not_to have_content "Running third party script"
within ".cookies-consent-banner" do
click_button "Manage cookies"
end
within ".cookies-consent-management" do
click_button "Accept essential cookies"
end
expect(cookie_by_name("cookies_consent")[:value]).to eq "essential"
expect(cookie_by_name("third_party")[:value]).to eq "false"
expect(page).not_to have_content "Cookies policy"
expect(page).not_to have_content "Cookies management"
expect(page).not_to have_content "Running third party script"
refresh
expect(page).not_to have_content "Cookies policy"
expect(page).not_to have_content "Running third party script"
end
scenario "Allow users to accept all cookies from the cookies management modal" do
visit root_path
expect(cookie_by_name("cookies_consent")).to be nil
expect(cookie_by_name("third_party")).to be nil
expect(page).not_to have_content "Running third party script"
within ".cookies-consent-banner" do
click_button "Manage cookies"
end
within ".cookies-consent-management" do
click_button "Accept all"
end
expect(cookie_by_name("cookies_consent")[:value]).to eq "all"
expect(cookie_by_name("third_party")[:value]).to eq "true"
expect(page).not_to have_content "Cookies policy"
expect(page).not_to have_content "Cookies management"
expect(page).not_to have_content "Running third party script"
refresh
expect(page).not_to have_content "Cookies policy"
expect(page).to have_content "Running third party script", count: 1
end
scenario "Allow users to accept custom cookies from the cookies management modal" do
visit root_path
expect(cookie_by_name("cookies_consent")).to be nil
expect(cookie_by_name("third_party")).to be nil
within ".cookies-consent-banner" do
click_button "Manage cookies"
end
within ".cookies-consent-management" do
expect(page).to have_unchecked_field "Third party", visible: :none
find("label[for='third_party']").click
expect(page).to have_checked_field "Third party", visible: :none
click_button "Save preferences"
end
expect(cookie_by_name("cookies_consent")[:value]).to eq "custom"
expect(cookie_by_name("third_party")[:value]).to eq "true"
expect(page).not_to have_content "Cookies policy"
expect(page).not_to have_content "Cookies management"
expect(page).not_to have_content "Running third party script"
refresh
expect(page).to have_content "Running third party script", count: 1
expect(page).not_to have_content "Cookies policy"
click_link "Manage cookies"
within ".cookies-consent-management" do
expect(page).to have_checked_field "third_party", visible: :none
find("label[for='third_party']").click
expect(page).to have_unchecked_field "third_party", visible: :none
click_button "Save preferences"
end
expect(page).to have_content "Running third party script", count: 1
refresh
expect(page).not_to have_content "Running third party script"
end
end
end