Files
openfoodnetwork/spec/system/consumer/cookies_spec.rb
2024-05-09 12:24:41 +10:00

186 lines
5.4 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# frozen_string_literal: true
require 'system_helper'
RSpec.describe "Cookies", caching: true do
describe "banner" do
# keeps banner toggle config unchanged
around do |example|
original_banner_toggle = Spree::Config[:cookies_consent_banner_toggle]
example.run
Spree::Config[:cookies_consent_banner_toggle] = original_banner_toggle
end
context "in the homepage" do
before do
Spree::Config[:cookies_consent_banner_toggle] = true
visit_root_path_and_wait
end
scenario "does not show after cookies are accepted" do
accept_cookies_and_wait
expect_not_visible_cookies_banner
visit_root_path_and_wait
expect_not_visible_cookies_banner
end
scenario "banner contains cookies policy link that opens coookies policy page and " \
"closes banner" do
click_banner_cookies_policy_link_and_wait
expect_visible_cookies_policy_page
expect_not_visible_cookies_banner
close_cookies_policy_page_and_wait
expect_visible_cookies_banner
end
scenario "does not show after cookies are accepted, and policy page is opened through the " \
"footer, and closed again (bug #2599)" do
accept_cookies_and_wait
expect_not_visible_cookies_banner
click_footer_cookies_policy_link_and_wait
expect_visible_cookies_policy_page
expect_not_visible_cookies_banner
close_cookies_policy_page_and_wait
expect_not_visible_cookies_banner
end
end
context "in product listing page" do
before do
Spree::Config[:cookies_consent_banner_toggle] = true
end
scenario "it is showing" do
visit "/shops"
expect_visible_cookies_banner
end
end
context "disabled in the settings" do
scenario "it is not showing" do
Spree::Config[:cookies_consent_banner_toggle] = false
visit root_path
expect(page).not_to have_content(
'This site uses cookies in order to make your navigation ' \
'frictionless and secure, and to help us understand how ' \
'you use it in order to improve the features we offer.'
)
end
end
end
describe "policy page" do
# keeps config unchanged
around do |example|
original_matomo_config = Spree::Config[:cookies_policy_matomo_section]
original_matomo_url_config = Spree::Config[:matomo_url]
example.run
Spree::Config[:cookies_policy_matomo_section] = original_matomo_config
Spree::Config[:matomo_url] = original_matomo_url_config
end
scenario "shows session_id cookies description with correct instance domain" do
visit '/#/policies/cookies'
expect(page).to have_content('_ofn_session_id')
.and have_content('127.0.0.1')
end
context "without Matomo section configured" do
scenario "does not show Matomo cookies details and does not show Matomo optout text" do
Spree::Config[:cookies_policy_matomo_section] = false
visit_cookies_policy_page
expect(page).not_to have_content matomo_description_text
expect(page).not_to have_content matomo_opt_out_iframe
end
end
context "with Matomo section configured" do
before do
Spree::Config[:cookies_policy_matomo_section] = true
end
scenario "shows Matomo cookies details" do
visit_cookies_policy_page
expect(page).to have_content matomo_description_text
end
context "with Matomo integration enabled" do
scenario "shows Matomo optout iframe" do
Spree::Config[:matomo_url] = "https://0000.innocraft.cloud/"
visit_cookies_policy_page
expect(page).to have_content matomo_opt_out_iframe
expect(page).to have_selector("iframe")
end
end
context "with Matomo integration disabled" do
scenario "does not show Matomo iframe" do
Spree::Config[:cookies_policy_matomo_section] = true
Spree::Config[:matomo_url] = ""
visit_cookies_policy_page
expect(page).not_to have_content matomo_opt_out_iframe
expect(page).not_to have_selector("iframe")
end
end
end
end
def expect_visible_cookies_policy_page
expect(page).to have_content 'How We Use Cookies'
end
def expect_visible_cookies_banner
expect(page).to have_css("button", text: accept_cookies_button_text)
end
def expect_not_visible_cookies_banner
expect(page).not_to have_css("button", text: accept_cookies_button_text)
end
def accept_cookies_button_text
'Accept Cookies'
end
def visit_root_path_and_wait
visit root_path
sleep 1
end
def accept_cookies_and_wait
click_button accept_cookies_button_text
sleep 2
end
def click_banner_cookies_policy_link_and_wait
find("p.ng-binding > a", text: "cookies policy").click
sleep 2
end
def click_footer_cookies_policy_link_and_wait
find(".legal a", text: "cookies policy").click
sleep 2
end
def close_cookies_policy_page_and_wait
find("a.close-reveal-modal").click
sleep 2
end
def visit_cookies_policy_page
visit '/#/policies/cookies'
end
def matomo_description_text
'Matomo first party cookies to collect statistics.'
end
def matomo_opt_out_iframe
'Do you want to opt-out of Matomo analytics? We dont collect any personal data, and Matomo ' \
'helps us to improve our service, but we respect your choice :-)'
end
end