diff --git a/app/presenters/signup_links_presenter.rb b/app/presenters/signup_links_presenter.rb index 5c75e8920..81635bfda 100644 --- a/app/presenters/signup_links_presenter.rb +++ b/app/presenters/signup_links_presenter.rb @@ -6,62 +6,17 @@ def initialize(content_item, facets, keywords) end def signup_links - # if there are 4 links, we start from 2 - # if there are 2 links, we start from 1 - [ - get_signup_link(0), - get_signup_link(count_signup_links / 2), - ] - end - -private - - attr_reader :content_item, :facets, :keywords - - def get_signup_link(pos) - total_links = count_signup_links - - data_attributes = { + { + feed_link:, hide_heading: true, small_form: true, - feed_link:, email_signup_link: email_signup_link.presence, }.compact - - if email_signup_link && feed_link - email_index_link = pos + 1 - feed_index_link = pos + 2 - elsif email_signup_link - email_index_link = pos + 1 - elsif feed_link - feed_index_link = pos + 1 - end - - if email_signup_link - data_attributes[:email_signup_link_data_attributes] = {} - data_attributes[:email_signup_link_data_attributes][:ga4_index] = { - index_link: email_index_link, - index_total: total_links, - } - end - - if feed_link - data_attributes[:feed_link_data_attributes] = {} - data_attributes[:feed_link_data_attributes][:ga4_index] = { - index_link: feed_index_link, - index_total: total_links, - } - end - - data_attributes end - def count_signup_links - total = 0 - total += 1 if feed_link - total += 1 if email_signup_link - total * 2 - end +private + + attr_reader :content_item, :facets, :keywords def email_signup_link signup_link = content_item.signup_link diff --git a/app/views/finders/show.html.erb b/app/views/finders/show.html.erb index c827b7043..a228eb71b 100644 --- a/app/views/finders/show.html.erb +++ b/app/views/finders/show.html.erb @@ -4,8 +4,8 @@ <% content_for :title, content_item.title %> <% end %> <% content_for :head do %> - <% if signup_links[0][:feed_link] %> - <%= auto_discovery_link_tag(:atom, signup_links[0][:feed_link]) %> + <% if signup_links[:feed_link] %> + <%= auto_discovery_link_tag(:atom, signup_links[:feed_link]) %> <% end %> <%= render 'finder_meta', content_item: content_item %> <% end %> @@ -87,7 +87,7 @@ data-module="ga4-link-tracker" data-ga4-track-links-only data-ga4-link='{ "event_name": "navigation", "type": "subscribe", "section": "Top" }'> - <%= render "govuk_publishing_components/components/subscription_links", signup_links[0] %> + <%= render "govuk_publishing_components/components/subscription_links", signup_links %>
@@ -115,7 +115,7 @@ data-module="ga4-link-tracker" data-ga4-track-links-only data-ga4-link='{ "event_name": "navigation", "type": "subscribe", "section": "Footer" }'> - <%= render "govuk_publishing_components/components/subscription_links", signup_links[1] %> + <%= render "govuk_publishing_components/components/subscription_links", signup_links %>
diff --git a/spec/presenters/signup_link_presenter_spec.rb b/spec/presenters/signup_link_presenter_spec.rb index 23d10406a..29cf93a66 100644 --- a/spec/presenters/signup_link_presenter_spec.rb +++ b/spec/presenters/signup_link_presenter_spec.rb @@ -66,7 +66,7 @@ let(:facet_values) { [] } it "returns the finder URL appended with /email-signup" do - expect(subject.signup_links[0][:email_signup_link]).to eql("/email_signup") + expect(subject.signup_links[:email_signup_link]).to eql("/email_signup") end end @@ -93,15 +93,7 @@ end it "returns the finder URL appended with permitted query params" do - expect(subject.signup_links[0][:email_signup_link]).to eql("/mosw-reports/email-signup?topic%5B%5D=hidden_facet_content_id") - expect(subject.signup_links[0][:email_signup_link_data_attributes][:ga4_index]).to eql({ index_link: 1, index_total: 4 }) - expect(subject.signup_links[0][:feed_link]).to eql("/mosw-reports.atom?topic%5B%5D=hidden_facet_content_id") - expect(subject.signup_links[0][:feed_link_data_attributes][:ga4_index]).to eql({ index_link: 2, index_total: 4 }) - - expect(subject.signup_links[1][:email_signup_link]).to eql("/mosw-reports/email-signup?topic%5B%5D=hidden_facet_content_id") - expect(subject.signup_links[1][:email_signup_link_data_attributes][:ga4_index]).to eql({ index_link: 3, index_total: 4 }) - expect(subject.signup_links[1][:feed_link]).to eql("/mosw-reports.atom?topic%5B%5D=hidden_facet_content_id") - expect(subject.signup_links[1][:feed_link_data_attributes][:ga4_index]).to eql({ index_link: 4, index_total: 4 }) + expect(subject.signup_links[:email_signup_link]).to eql("/mosw-reports/email-signup?topic%5B%5D=hidden_facet_content_id") end end end @@ -112,7 +104,7 @@ [] end it "returns the finder URL appended with .atom" do - expect(subject.signup_links[0][:feed_link]).to eql("/mosw-reports.atom") + expect(subject.signup_links[:feed_link]).to eql("/mosw-reports.atom") end end @@ -126,7 +118,7 @@ end it "returns the finder URL appended with permitted query params" do - expect(subject.signup_links[0][:feed_link]).to eql("/mosw-reports.atom?keywords=micropig&topic%5B%5D=hidden_facet_content_id") + expect(subject.signup_links[:feed_link]).to eql("/mosw-reports.atom?keywords=micropig&topic%5B%5D=hidden_facet_content_id") end end @@ -140,105 +132,9 @@ end it "returns nil" do - expect(subject.signup_links[0][:feed_link]).to be nil + expect(subject.signup_links[:feed_link]).to be nil end end end end - - describe "only a feed link" do - let(:content_item) do - content_item_hash = { - content_id: "content_id", - base_path: "/mosw-reports", - title: "A finder", - name: "A finder", - links: {}, - signup_link: false, - email_alert_signup: false, - details: { - show_summaries: true, - document_noun: "case", - sort: [ - { - "name" => "Most viewed", - "key" => "-popularity", - }, - { - "name" => "Relevance", - "key" => "-relevance", - }, - { - "name" => "Updated (newest)", - "key" => "-public_timestamp", - "default" => true, - }, - ], - }, - } - ContentItem.new(content_item_hash.deep_stringify_keys) - end - - let(:email_signup_hash) do - {} - end - - it "returns data for the feed link only" do - expect(subject.signup_links[0][:feed_link]).to eql("/mosw-reports.atom") - expect(subject.signup_links[0][:feed_link_data_attributes][:ga4_index]).to eql({ index_link: 1, index_total: 2 }) - expect(subject.signup_links[0][:email_signup_link]).to eql(nil) - expect(subject.signup_links[0][:email_signup_link_data_attributes]).to eql(nil) - - expect(subject.signup_links[1][:feed_link]).to eql("/mosw-reports.atom") - expect(subject.signup_links[1][:feed_link_data_attributes][:ga4_index]).to eql({ index_link: 2, index_total: 2 }) - expect(subject.signup_links[1][:email_signup_link]).to eql(nil) - expect(subject.signup_links[1][:email_signup_link_data_attributes]).to eql(nil) - end - end - - describe "only an email link" do - let(:content_item) do - content_item_hash = { - content_id: "content_id", - base_path: "/find-licences", - title: "A finder", - name: "A finder", - links: { - email_alert_signup: Array.wrap(email_signup_hash), - }, - details: { - show_summaries: true, - document_noun: "case", - sort: [ - { - "name" => "Most viewed", - "key" => "-popularity", - }, - { - "name" => "Relevance", - "key" => "-relevance", - }, - { - "name" => "Updated (newest)", - "key" => "-public_timestamp", - "default" => true, - }, - ], - }, - } - ContentItem.new(content_item_hash.deep_stringify_keys) - end - - it "returns data for the email signup link only" do - expect(subject.signup_links[0][:feed_link]).to eql(nil) - expect(subject.signup_links[0][:feed_link_data_attributes]).to eql(nil) - expect(subject.signup_links[0][:email_signup_link]).to eql("/email_signup") - expect(subject.signup_links[0][:email_signup_link_data_attributes][:ga4_index]).to eql({ index_link: 1, index_total: 2 }) - - expect(subject.signup_links[1][:feed_link]).to eql(nil) - expect(subject.signup_links[1][:feed_link_data_attributes]).to eql(nil) - expect(subject.signup_links[1][:email_signup_link]).to eql("/email_signup") - expect(subject.signup_links[1][:email_signup_link_data_attributes][:ga4_index]).to eql({ index_link: 2, index_total: 2 }) - end - end end