Browse Source

Dry up paginated titles

pull/438/head
baarkerlounger 3 years ago
parent
commit
4d9c46da67
  1. 13
      app/helpers/application_helper.rb
  2. 7
      app/views/case_logs/index.html.erb
  3. 2
      app/views/layouts/application.html.erb
  4. 21
      spec/helpers/application_helper_spec.rb

13
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

7
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" %>
<h1 class="govuk-heading-l">Logs</h1>
<h1 class="govuk-heading-l">
<%= content_for(:title) %>
</h1>
<div class="govuk-button-group">
<%= govuk_button_to "Create a new lettings log", case_logs_path %>

2
app/views/layouts/application.html.erb

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en" class="govuk-template">
<head>
<title><%= browser_title(yield(:title), @admin_user, @user, @organisation, @case_log, @resource) %></title>
<title><%= browser_title(yield(:title), @pagy, @admin_user, @user, @organisation, @case_log, @resource) %></title>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= tag :meta, name: 'viewport', content: 'width=device-width, initial-scale=1' %>

21
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
context "with no pagination" do
it "returns correct browser title when title is given" do
expect(browser_title("title"))
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))
expect(browser_title(nil, pagy))
.to eq("#{t('service_name')} - GOV.UK")
end
end
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

Loading…
Cancel
Save