From 8dc10ffc6ed005c02deb74915645fdfa02b1f5e3 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Tue, 28 Aug 2018 22:54:48 +0100 Subject: [PATCH] Added new test to cookies spec to cover bug on cookies banner and fixed it. See issue #2599. Also, improved readability on cookies spec with some extracted methods. --- .../cookies_banner_controller.js.coffee | 1 + .../cookies_banner_directive.js.coffee | 2 +- .../cookies_banner_service.js.coffee | 13 +++-- spec/features/consumer/cookies_spec.rb | 52 +++++++++++++++---- 4 files changed, 52 insertions(+), 16 deletions(-) diff --git a/app/assets/javascripts/darkswarm/cookies_banner/cookies_banner_controller.js.coffee b/app/assets/javascripts/darkswarm/cookies_banner/cookies_banner_controller.js.coffee index 69b8554c37..a35951943a 100644 --- a/app/assets/javascripts/darkswarm/cookies_banner/cookies_banner_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/cookies_banner/cookies_banner_controller.js.coffee @@ -3,3 +3,4 @@ Darkswarm.controller "CookiesBannerCtrl", ($scope, CookiesBannerService, $http, $scope.acceptCookies = -> $http.post('/api/cookies/consent') CookiesBannerService.close() + CookiesBannerService.disable() diff --git a/app/assets/javascripts/darkswarm/cookies_banner/cookies_banner_directive.js.coffee b/app/assets/javascripts/darkswarm/cookies_banner/cookies_banner_directive.js.coffee index ede3b1c9bf..0599646cb7 100644 --- a/app/assets/javascripts/darkswarm/cookies_banner/cookies_banner_directive.js.coffee +++ b/app/assets/javascripts/darkswarm/cookies_banner/cookies_banner_directive.js.coffee @@ -2,5 +2,5 @@ Darkswarm.directive 'cookiesBanner', (CookiesBannerService) -> restrict: 'A' link: (scope, elm, attr)-> return if not attr.cookiesBanner? || attr.cookiesBanner == 'false' - CookiesBannerService.setActive() + CookiesBannerService.enable() CookiesBannerService.open() diff --git a/app/assets/javascripts/darkswarm/cookies_banner/cookies_banner_service.js.coffee b/app/assets/javascripts/darkswarm/cookies_banner/cookies_banner_service.js.coffee index 8d8a9e4960..139552a214 100644 --- a/app/assets/javascripts/darkswarm/cookies_banner/cookies_banner_service.js.coffee +++ b/app/assets/javascripts/darkswarm/cookies_banner/cookies_banner_service.js.coffee @@ -2,10 +2,10 @@ Darkswarm.factory "CookiesBannerService", (Navigation, $modal, $location, Redire new class CookiesBannerService modalMessage: null - isActive: false + isEnabled: false open: (path, template = 'darkswarm/cookies_banner/cookies_banner.html') => - return unless @isActive + return unless @isEnabled @modalInstance = $modal.open templateUrl: template windowClass: "cookies-banner full" @@ -13,8 +13,11 @@ Darkswarm.factory "CookiesBannerService", (Navigation, $modal, $location, Redire keyboard: false close: => - return unless @isActive + return unless @isEnabled @modalInstance.close() - setActive: => - @isActive = true + enable: => + @isEnabled = true + + disable: => + @isEnabled = false diff --git a/spec/features/consumer/cookies_spec.rb b/spec/features/consumer/cookies_spec.rb index 8401c17ce9..e9f421e4ad 100644 --- a/spec/features/consumer/cookies_spec.rb +++ b/spec/features/consumer/cookies_spec.rb @@ -5,30 +5,37 @@ feature "Cookies", js: true do describe "in the homepage" do before do Spree::Config[:cookies_consent_banner_toggle] = true - visit root_path + visit_root_path_and_wait end scenario "does not show after cookies are accepted" do - sleep 1 - click_button I18n.t('legal.cookies_banner.cookies_accept_button') - sleep 2 + accept_cookies_and_wait expect_not_visible_cookies_banner - visit root_path - sleep 1 + 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 - sleep 1 - find("p.ng-binding > a", :text => "cookies policy").click - sleep 2 + click_banner_cookies_policy_link_and_wait expect_visible_cookies_policy_page expect_not_visible_cookies_banner - find("a.close-reveal-modal").click + 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 describe "in product listing page" do @@ -94,4 +101,29 @@ feature "Cookies", js: true do def accept_cookies_button_text I18n.t('legal.cookies_banner.cookies_accept_button') 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("div > a", :text => "cookies policy").click + sleep 2 + end + + def close_cookies_policy_page_and_wait + find("a.close-reveal-modal").click + sleep 2 + end end