Browse Source

Remove pagination indicators when only 1 page

pull/438/head
baarkerlounger 3 years ago
parent
commit
dfa0b89d5d
  1. 44
      app/views/pagy/_nav.html.erb
  2. 59
      spec/requests/case_logs_controller_spec.rb

44
app/views/pagy/_nav.html.erb

@ -13,26 +13,28 @@
<span class="govuk-visually-hidden">page</span>
</span></a>
</li>
<% (1..pagy.pages).each do |idx| %>
<% if pagy.page == idx %>
<li class="govuk-pagination__item govuk-pagination__item--current"><span class="govuk-visually-hidden">Page </span><%= idx %><span class="govuk-visually-hidden"> (current page) </span></li>
<% else %>
<li class="govuk-pagination__item"><a class="govuk-pagination__link" href=<%= "/logs?page=#{idx}" %>><span class="govuk-visually-hidden">Page </span><%= idx %></a></li>
<% if pagy.pages > 1 %>
<% (1..pagy.pages).each do |idx| %>
<% if pagy.page == idx %>
<li class="govuk-pagination__item govuk-pagination__item--current"><span class="govuk-visually-hidden">Page </span><%= idx %><span class="govuk-visually-hidden"> (current page) </span></li>
<% else %>
<li class="govuk-pagination__item"><a class="govuk-pagination__link" href=<%= "/logs?page=#{idx}" %>><span class="govuk-visually-hidden">Page </span><%= idx %></a></li>
<% end %>
<% end %>
<% end %>
<li class="govuk-pagination__item govuk-pagination__item--next">
<% if pagy.next %>
<a class="govuk-pagination__link" href=<%= "/logs?page=#{pagy.next}" %>>
<% end %>
Next <span class="govuk-visually-hidden">page</span>
<span class="govuk-pagination__link-title">
<svg class="govuk-pagination__icon" xmlns="http://www.w3.org/2000/svg" height="13" width="17">
<path d="m10.107-0.0078125-1.4136 1.414 4.2926 4.293h-12.986v2h12.896l-4.1855 3.9766 1.377 1.4492 6.7441-6.4062-6.7246-6.7266z"></path>
</svg>
</span></a>
</li>
</ul>
<p class="app_pagination__results">
Showing <b><%= pagy.from %></b> to <b><%= pagy.to %></b> of <b><%= pagy.count %></b> <%= item_name %>
</p>
<li class="govuk-pagination__item govuk-pagination__item--next">
<% if pagy.next %>
<a class="govuk-pagination__link" href=<%= "/logs?page=#{pagy.next}" %>>
<% end %>
Next <span class="govuk-visually-hidden">page</span>
<span class="govuk-pagination__link-title">
<svg class="govuk-pagination__icon" xmlns="http://www.w3.org/2000/svg" height="13" width="17">
<path d="m10.107-0.0078125-1.4136 1.414 4.2926 4.293h-12.986v2h12.896l-4.1855 3.9766 1.377 1.4492 6.7441-6.4062-6.7246-6.7266z"></path>
</svg>
</span></a>
</li>
</ul>
<p class="app_pagination__results">
Showing <b><%= pagy.from %></b> to <b><%= pagy.to %></b> of <b><%= pagy.count %></b> <%= item_name %>
</p>
<% end %>
</nav>

59
spec/requests/case_logs_controller_spec.rb

@ -161,41 +161,58 @@ RSpec.describe CaseLogsController, type: :request do
before do
sign_in user
get "/logs", headers: headers, params: {}
end
it "shows a table of logs" do
expect(CGI.unescape_html(response.body)).to match(/<table class="govuk-table">/)
expect(CGI.unescape_html(response.body)).to match(/logs/)
end
context "when there are less than 20 logs" do
before do
get "/logs", headers: headers, params: {}
end
it "only shows case logs for your organisation" do
expected_case_row_log = "<a class=\"govuk-link\" href=\"/logs/#{case_log.id}\">#{case_log.id}</a>"
unauthorized_case_row_log = "<a class=\"govuk-link\" href=\"/logs/#{unauthorized_case_log.id}\">#{unauthorized_case_log.id}</a>"
expect(CGI.unescape_html(response.body)).to include(expected_case_row_log)
expect(CGI.unescape_html(response.body)).not_to include(unauthorized_case_row_log)
end
it "shows a table of logs" do
expect(CGI.unescape_html(response.body)).to match(/<table class="govuk-table">/)
expect(CGI.unescape_html(response.body)).to match(/logs/)
end
it "shows the formatted created at date for each log" do
formatted_date = case_log.created_at.to_formatted_s(:govuk_date)
expect(CGI.unescape_html(response.body)).to include(formatted_date)
end
it "only shows case logs for your organisation" do
expected_case_row_log = "<a class=\"govuk-link\" href=\"/logs/#{case_log.id}\">#{case_log.id}</a>"
unauthorized_case_row_log = "<a class=\"govuk-link\" href=\"/logs/#{unauthorized_case_log.id}\">#{unauthorized_case_log.id}</a>"
expect(CGI.unescape_html(response.body)).to include(expected_case_row_log)
expect(CGI.unescape_html(response.body)).not_to include(unauthorized_case_row_log)
end
it "shows the log's status" do
expect(CGI.unescape_html(response.body)).to include(case_log.status.humanize)
end
it "shows the formatted created at date for each log" do
formatted_date = case_log.created_at.to_formatted_s(:govuk_date)
expect(CGI.unescape_html(response.body)).to include(formatted_date)
end
it "shows the total log count" do
expect(CGI.unescape_html(response.body)).to match("<strong>1</strong> total logs")
it "shows the log's status" do
expect(CGI.unescape_html(response.body)).to include(case_log.status.humanize)
end
it "shows the total log count" do
expect(CGI.unescape_html(response.body)).to match("<strong>1</strong> total logs")
end
it "does not show the pagination links" do
expect(page).not_to have_link("Previous")
expect(page).not_to have_link("Next")
end
it "does not show the pagination result line" do
expect(CGI.unescape_html(response.body)).not_to match("Showing <b>1</b> to <b>20</b> of <b>26</b> logs")
end
end
context "when there are more than 20 logs" do
before do
FactoryBot.create_list(:case_log, 25, owning_organisation: organisation, managing_organisation: organisation)
get "/logs", headers: headers, params: {}
end
context "when on the first page" do
before do
get "/logs", headers: headers, params: {}
end
it "has pagination links" do
expect(page).to have_content("Previous")
expect(page).not_to have_link("Previous")

Loading…
Cancel
Save