diff --git a/lib/scrivener/html/seo.ex b/lib/scrivener/html/seo.ex index 6b0c689..b1b1491 100644 --- a/lib/scrivener/html/seo.ex +++ b/lib/scrivener/html/seo.ex @@ -43,18 +43,21 @@ defmodule Scrivener.HTML.SEO do iex> Phoenix.HTML.safe_to_string(Scrivener.HTML.SEO.header_links(%Scrivener.Page{total_pages: 10, page_number: 3})) "\n" """ - def header_links(conn, %Page{page_number: 1} = paginator, args, opts) do - next_header_link(conn, paginator, args, opts) - end - - def header_links(conn, %Page{total_pages: page, page_number: page} = paginator, args, opts) do - prev_header_link(conn, paginator, args, opts) - end - - def header_links(conn, paginator, args, opts) do - {:safe, prev} = prev_header_link(conn, paginator, args, opts) - {:safe, next} = next_header_link(conn, paginator, args, opts) - {:safe, [prev, "\n", next]} + def header_links( + conn, + %Page{total_pages: total_pages, page_number: page_number} = paginator, + args, + opts + ) do + prev = if page_number > 1, do: prev_header_link(conn, paginator, args, opts) + next = if total_pages > page_number, do: next_header_link(conn, paginator, args, opts) + + if prev && next do + [{:safe, prev}, {:safe, next}] = [prev, next] + {:safe, [prev, "\n", next]} + else + prev || next + end end def header_links(%Scrivener.Page{} = paginator), do: header_links(nil, paginator, [], []) diff --git a/test/scrivener/html/seo_test.exs b/test/scrivener/html/seo_test.exs index b5cbad7..9522531 100644 --- a/test/scrivener/html/seo_test.exs +++ b/test/scrivener/html/seo_test.exs @@ -27,7 +27,11 @@ defmodule Scrivener.HTML.SEOTest do end describe "#header_links" do - test "on the first page" do + test "on the first page with only one total pages" do + refute header_links(%Page{total_pages: 1, page_number: 1}) + end + + test "on the first page with more than one total pages" do assert header_links(%Page{total_pages: 10, page_number: 1}) == {:safe, [