diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 1b5eb623f..ef20b6cb4 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -3,7 +3,7 @@ class ApplicationController < ActionController::Base # For APIs, you may want to use :null_session instead. protect_from_forgery except: :service_sign_in_options - include AATestable + include ABTestable private diff --git a/app/controllers/concerns/aa_testable.rb b/app/controllers/concerns/ab_testable.rb similarity index 92% rename from app/controllers/concerns/aa_testable.rb rename to app/controllers/concerns/ab_testable.rb index 032b17b92..df3964fd9 100644 --- a/app/controllers/concerns/aa_testable.rb +++ b/app/controllers/concerns/ab_testable.rb @@ -1,4 +1,4 @@ -module AATestable +module ABTestable RELATED_LINKS_DIMENSION = 65 def self.included(base) @@ -16,7 +16,7 @@ def related_links_variant def related_links_test @related_links_test ||= GovukAbTesting::AbTest.new( - "RelatedLinksAATest", + "RelatedLinksABTest1", dimension: RELATED_LINKS_DIMENSION, allowed_variants: %w(A B), control_variant: "A" diff --git a/app/controllers/content_items_controller.rb b/app/controllers/content_items_controller.rb index a3d0eb42d..0c74bb87f 100644 --- a/app/controllers/content_items_controller.rb +++ b/app/controllers/content_items_controller.rb @@ -56,6 +56,11 @@ def set_guide_draft_access_token def load_content_item content_item = Services.content_store.content_item(content_item_path) + + if related_links_variant.variant?('B') && content_item.dig('links') + content_item['links']['ordered_related_items'] = content_item['links'].fetch('suggested_ordered_related_items', []) + end + @content_item = PresenterBuilder.new(content_item, content_item_path).presenter end diff --git a/test/controllers/content_items_controller_test.rb b/test/controllers/content_items_controller_test.rb index a6481479d..bdbaf990d 100644 --- a/test/controllers/content_items_controller_test.rb +++ b/test/controllers/content_items_controller_test.rb @@ -3,6 +3,7 @@ class ContentItemsControllerTest < ActionController::TestCase include GdsApi::TestHelpers::ContentStore include GdsApi::TestHelpers::Rummager + include GovukAbTesting::MinitestHelpers test 'routing handles paths with no format or locale' do assert_routing( @@ -129,6 +130,36 @@ class ContentItemsControllerTest < ActionController::TestCase assert_equal content_item['title'], assigns[:content_item].title end + test "gets item from the content store and keeps ordered_related_items when running RelatedLinksABTest1 control variant" do + with_variant RelatedLinksABTest1: 'A' do + content_item = content_store_has_schema_example('case_study', 'case_study') + + get :show, params: { path: path_for(content_item) } + assert_response :success + assert_equal content_item['links']['ordered_related_items'], assigns[:content_item].content_item['links']['ordered_related_items'] + end + end + + test "gets item from the content store and replaces ordered_related_items when running RelatedLinksABTest1 test variant" do + with_variant RelatedLinksABTest1: 'B' do + content_item = content_store_has_schema_example('case_study', 'case_study') + + get :show, params: { path: path_for(content_item) } + assert_response :success + assert_equal assigns[:content_item].content_item['links']['ordered_related_items'], assigns[:content_item].content_item['links']['suggested_ordered_related_items'] + end + end + + test "gets item from the content store and replaces ordered_related_items when empty array when RelatedLinksABTest1 test variant has no suggestions" do + with_variant RelatedLinksABTest1: 'B' do + content_item = content_store_has_schema_example('guide', 'guide') + + get :show, params: { path: path_for(content_item) } + assert_response :success + assert_equal [], assigns[:content_item].content_item['links']['ordered_related_items'] + end + end + test "sets the expiry as sent by content-store" do content_item = content_store_has_schema_example('coming_soon', 'coming_soon') content_store_has_item(content_item['base_path'], content_item, max_age: 20) diff --git a/test/controllers/development_controller_test.rb b/test/controllers/development_controller_test.rb index 5bc0164be..2008594cf 100644 --- a/test/controllers/development_controller_test.rb +++ b/test/controllers/development_controller_test.rb @@ -4,8 +4,8 @@ class DevelopmentControllerTest < ActionController::TestCase include GovukAbTesting::MinitestHelpers %w(A B).each do |test_variant| - test "RelatedLinksAATest works correctly for each variant (variant: #{test_variant})" do - with_variant RelatedLinksAATest: test_variant do + test "RelatedLinksABTest1 works correctly for each variant (variant: #{test_variant})" do + with_variant RelatedLinksABTest1: test_variant do get :index ab_test = @controller.send(:related_links_test)