make blog slug tests content-independent
Commit 1709cb7 deleted the pinned hello-world post and ten tests
silently rotted with it - invisible until now because the suite could
not run in this clone (incomplete deps, then the broken frontmatter).
The slug, banner, og-meta and tag tests now derive slug and title from
the compiled posts at runtime (newest live post, newest draft), matching
the existing latest_post_with_links pattern, so content churn no longer
breaks them.
This commit is contained in:
@@ -9,6 +9,14 @@ defmodule FirehoseWeb.BlogTest do
|
||||
body
|
||||
end
|
||||
|
||||
# Content churns; the behavior under test does not. The newest live post is
|
||||
# a deterministic stand-in - the pinned "hello-world" post was deleted in
|
||||
# 1709cb7 and the slug tests silently rotted with it.
|
||||
defp a_live_post do
|
||||
Enum.find(Firehose.EngineeringBlog.all_posts(), &(Blogex.Post.visibility(&1) == :live)) ||
|
||||
raise "no live engineering post to exercise the post pages"
|
||||
end
|
||||
|
||||
describe "engineering blog (HTML)" do
|
||||
test "GET /blog/engineering returns HTML index with layout", %{conn: conn} do
|
||||
body = visit_blog_page(conn, "engineering")
|
||||
@@ -17,8 +25,9 @@ defmodule FirehoseWeb.BlogTest do
|
||||
end
|
||||
|
||||
test "GET /blog/engineering/:slug returns HTML post with layout", %{conn: conn} do
|
||||
body = visit_blog_page(conn, "engineering", "/hello-world")
|
||||
assert body =~ "Hello World"
|
||||
post = a_live_post()
|
||||
body = visit_blog_page(conn, "engineering", "/#{post.id}")
|
||||
assert body =~ post.title
|
||||
end
|
||||
|
||||
test "GET /blog/engineering?page=2 shows the next page of older posts", %{conn: conn} do
|
||||
@@ -191,11 +200,16 @@ defmodule FirehoseWeb.BlogTest do
|
||||
end
|
||||
|
||||
test "GET /api/blog/engineering/:slug returns a post", %{conn: conn} do
|
||||
assert %{"id" => "hello-world", "title" => "Hello World"} =
|
||||
post = a_live_post()
|
||||
|
||||
assert %{"id" => id, "title" => title} =
|
||||
conn
|
||||
|> put_req_header("accept", "application/json")
|
||||
|> get("/api/blog/engineering/hello-world")
|
||||
|> get("/api/blog/engineering/#{post.id}")
|
||||
|> json_response(200)
|
||||
|
||||
assert id == post.id
|
||||
assert title == post.title
|
||||
end
|
||||
|
||||
test "GET /api/blog/engineering/:slug returns 404 for missing post", %{conn: conn} do
|
||||
|
||||
Reference in New Issue
Block a user