diff --git a/app/helpers/browse_helper.rb b/app/helpers/browse_helper.rb index 5231e1fb6..3b750515e 100644 --- a/app/helpers/browse_helper.rb +++ b/app/helpers/browse_helper.rb @@ -1,50 +1,32 @@ module BrowseHelper - def variant_a_popular_links?(slug) - I18n.exists?("#{slug}.variant_a", scope: "browse.popular_links") - end - - def variant_a_popular_links(slug) - I18n.t("#{slug}.variant_a", scope: "browse.popular_links") - end - - def variant_b_popular_links?(slug) - I18n.exists?("#{slug}.variant_b", scope: "browse.popular_links") - end - - def variant_b_popular_links(slug) - I18n.t("#{slug}.variant_b", scope: "browse.popular_links") + def display_popular_links_for_slug?(slug) + popular_links_data(slug).present? end - def control_popular_links?(slug) + def control_key_is_present?(slug) I18n.exists?("#{slug}.control", scope: "browse.popular_links") end - def control_popular_links(slug) - I18n.t("#{slug}.control", scope: "browse.popular_links") - end - - def display_popular_links_for_slug?(slug) - if popular_tasks_variant_a_page? - variant_a_popular_links?(slug) - elsif popular_tasks_variant_b_page? - variant_b_popular_links?(slug) + def control_data(slug) + if control_key_is_present?(slug) + I18n.t("browse.popular_links.#{slug}.control") else - control_popular_links?(slug) + [] end end - def variant_popular_links_for_slug(slug) + def popular_links_data(slug) if popular_tasks_variant_a_page? - variant_a_popular_links(slug) + I18n.t("browse.popular_links.#{slug}.variant_a") elsif popular_tasks_variant_b_page? - variant_b_popular_links(slug) + I18n.t("browse.popular_links.#{slug}.variant_b") else - control_popular_links(slug) + control_data(slug) end end def popular_links_for_slug(slug) - links = variant_popular_links_for_slug(slug) + links = popular_links_data(slug) count = links.length links.map.with_index(1) do |link, index| { diff --git a/spec/features/mainstream_browsing_spec.rb b/spec/features/mainstream_browsing_spec.rb index 9569f477d..9f815f888 100644 --- a/spec/features/mainstream_browsing_spec.rb +++ b/spec/features/mainstream_browsing_spec.rb @@ -42,6 +42,74 @@ end end + context "Control variants" do + scenario "when visiting business and benefits i.e. pages that originally had popular tasks" do + with_variant PopularTasks: "C" do + content_item["base_path"] = "/browse/business" + stub_content_store_has_item("/browse/business", content_item) + visit "/browse/business" + expect(page).to have_content("Popular tasks") + + links = I18n.t("browse.popular_links.business.control") + links.each do |link| + expect(page).to have_link(link["title"]) + end + + content_item["base_path"] = "/browse/benefits" + stub_content_store_has_item("/browse/benefits", content_item) + visit "/browse/benefits" + expect(page).to have_content("Popular tasks") + + links = I18n.t("browse.popular_links.benefits.control") + links.each do |link| + expect(page).to have_link(link["title"]) + end + end + + with_variant PopularTasks: "Z" do + content_item["base_path"] = "/browse/business" + stub_content_store_has_item("/browse/business", content_item) + visit "/browse/business" + expect(page).to have_content("Popular tasks") + + links = I18n.t("browse.popular_links.business.control") + links.each do |link| + expect(page).to have_link(link["title"]) + end + + content_item["base_path"] = "/browse/benefits" + stub_content_store_has_item("/browse/benefits", content_item) + visit "/browse/benefits" + expect(page).to have_content("Popular tasks") + + links = I18n.t("browse.popular_links.benefits.control") + links.each do |link| + expect(page).to have_link(link["title"]) + end + end + end + + scenario "when visiting pages that originally had no popular tasks" do + slugs_with_no_popular_tasks_originally = browse_slugs - %i[benefits business] + + slugs_with_no_popular_tasks_originally.each do |browse_slug| + browse_path = "/browse/#{browse_slug}" + content_item["base_path"] = browse_path + stub_content_store_has_item(browse_path, content_item) + + with_variant PopularTasks: "C" do + visit browse_path + expect(page).not_to have_content("Popular tasks") + end + + with_variant PopularTasks: "Z" do + visit browse_path + expect(page).not_to have_content("Popular tasks") + end + end + end + end + browse_slugs.each do |browse_slug| browse_path = "/browse/#{browse_slug}"