From 4d9c46da673fe2746a623a1f752135828a703d1a Mon Sep 17 00:00:00 2001 From: baarkerlounger Date: Thu, 31 Mar 2022 13:40:30 +0100 Subject: [PATCH] Dry up paginated titles --- app/helpers/application_helper.rb | 13 +++++++++-- app/views/case_logs/index.html.erb | 7 +++--- app/views/layouts/application.html.erb | 2 +- spec/helpers/application_helper_spec.rb | 29 ++++++++++++++++++++----- 4 files changed, 39 insertions(+), 12 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index b3982623a..3b1332b28 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,11 +1,20 @@ module ApplicationHelper include Pagy::Frontend - def browser_title(title, *resources) + def browser_title(title, pagy, *resources) if resources.any? { |r| r.present? && r.errors.present? } "Error: #{[title, t('service_name'), 'GOV.UK'].select(&:present?).join(' - ')}" else - [title, t("service_name"), "GOV.UK"].select(&:present?).join(" - ") + [paginated_title(title, pagy), t("service_name"), "GOV.UK"].select(&:present?).join(" - ") end end + +private + + def paginated_title(title, pagy) + return unless title + return title unless pagy && pagy.pages > 1 + + title + " (page #{pagy.page} of #{pagy.pages})" + end end diff --git a/app/views/case_logs/index.html.erb b/app/views/case_logs/index.html.erb index f9d4e3766..b1d40c173 100644 --- a/app/views/case_logs/index.html.erb +++ b/app/views/case_logs/index.html.erb @@ -1,7 +1,8 @@ -<% title = @pagy.pages > 1 ? "Logs (page #{@pagy.page} of #{@pagy.pages})" : "Logs" %> -<% content_for :title, title %> +<% content_for :title, "Logs" %> -

Logs

+

+ <%= content_for(:title) %> +

<%= govuk_button_to "Create a new lettings log", case_logs_path %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index f47c55cac..66ba7ab59 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,7 +1,7 @@ - <%= browser_title(yield(:title), @admin_user, @user, @organisation, @case_log, @resource) %> + <%= browser_title(yield(:title), @pagy, @admin_user, @user, @organisation, @case_log, @resource) %> <%= csrf_meta_tags %> <%= csp_meta_tag %> <%= tag :meta, name: 'viewport', content: 'width=device-width, initial-scale=1' %> diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 3815474ad..b5cde06ce 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -5,16 +5,33 @@ RSpec.describe ApplicationHelper do let(:form) { form_handler.get_form("test_form") } let(:subsection) { form.get_subsection("household_characteristics") } let(:case_log) { FactoryBot.build(:case_log, :in_progress) } + let(:pagy) { nil } describe "browser_title" do - it "returns correct browser title when title is given" do - expect(browser_title("title")) - .to eq("title - #{t('service_name')} - GOV.UK") + context "with no pagination" do + it "returns correct browser title when title is given" do + expect(browser_title("title", pagy)) + .to eq("title - #{t('service_name')} - GOV.UK") + end + + it "returns correct browser title when title is not given" do + expect(browser_title(nil, pagy)) + .to eq("#{t('service_name')} - GOV.UK") + end end - it "returns correct browser title when title is not given" do - expect(browser_title(nil)) - .to eq("#{t('service_name')} - GOV.UK") + context "with pagination" do + let(:pagy) { OpenStruct.new(page: 1, pages: 2) } + + it "returns correct browser title when title is given" do + expect(browser_title("title", pagy)) + .to eq("title (page 1 of 2) - #{t('service_name')} - GOV.UK") + end + + it "returns correct browser title when title is not given" do + expect(browser_title(nil, pagy)) + .to eq("#{t('service_name')} - GOV.UK") + end end end end