Goal: have a personal blog, and try out another point in the 'modular app design with elixir' space. Designing OTP systems with elixir had some interesting ideas.
51 lines
1.1 KiB
Elixir
51 lines
1.1 KiB
Elixir
defmodule Blogex.Test.Setup do
|
|
@moduledoc """
|
|
Reusable setup blocks for blog tests.
|
|
"""
|
|
|
|
import Blogex.Test.PostBuilder
|
|
|
|
@doc """
|
|
Starts a FakeBlog with a standard set of posts.
|
|
Returns `%{blog: module, posts: posts}`.
|
|
"""
|
|
def with_blog(context \\ %{}, opts \\ []) do
|
|
posts = Keyword.get(opts, :posts, default_posts())
|
|
blog_opts = Keyword.drop(opts, [:posts])
|
|
|
|
{:ok, _} = Blogex.Test.FakeBlog.start(posts, blog_opts)
|
|
|
|
Map.merge(context, %{blog: Blogex.Test.FakeBlog, posts: posts})
|
|
end
|
|
|
|
@doc "A small set of posts covering common scenarios."
|
|
def default_posts do
|
|
[
|
|
build(
|
|
id: "newest-post",
|
|
date: ~D[2026-03-10],
|
|
tags: ["elixir", "otp"],
|
|
published: true
|
|
),
|
|
build(
|
|
id: "middle-post",
|
|
date: ~D[2026-02-15],
|
|
tags: ["elixir", "testing"],
|
|
published: true
|
|
),
|
|
build(
|
|
id: "oldest-post",
|
|
date: ~D[2026-01-05],
|
|
tags: ["devops"],
|
|
published: true
|
|
),
|
|
build(
|
|
id: "draft-post",
|
|
date: ~D[2026-03-12],
|
|
tags: ["elixir"],
|
|
published: false
|
|
)
|
|
]
|
|
end
|
|
end
|