firehose/app/test/firehose_web/layouts_test.exs
Willem van den Ende 061787e897 Feature: OG Social media cards
Not Original Gangsta, but ObjectGraph

Reason: images were showing on LinkedIn, but small.
2026-05-10 21:34:07 +01:00

59 lines
1.8 KiB
Elixir

defmodule FirehoseWeb.LayoutsTest do
use ExUnit.Case, async: true
alias FirehoseWeb.Layouts
@conn %Plug.Conn{
assigns: %{}
}
describe "put_content_for/3" do
test "stores content under the given key" do
conn = put_content_for(@conn, :meta_tags, %{og_title: "Test"})
assert conn.assigns[:content_for][:meta_tags] == [%{og_title: "Test"}]
end
test "appends multiple calls to the same key" do
conn =
@conn
|> put_content_for(:meta_tags, %{og_title: "First"})
|> put_content_for(:meta_tags, %{og_title: "Second"})
assert length(conn.assigns[:content_for][:meta_tags]) == 2
assert Enum.at(conn.assigns[:content_for][:meta_tags], 0).og_title == "First"
assert Enum.at(conn.assigns[:content_for][:meta_tags], 1).og_title == "Second"
end
test "stores different keys independently" do
conn =
@conn
|> put_content_for(:meta_tags, %{og_title: "Meta"})
|> put_content_for(:scripts, "%(script)")
assert Map.has_key?(conn.assigns[:content_for], :meta_tags)
assert Map.has_key?(conn.assigns[:content_for], :scripts)
end
end
describe "get_content_for/2" do
test "returns stored content for a key" do
content_for = %{meta_tags: [%{og_title: "Test"}]}
assert Layouts.get_content_for(%{content_for: content_for}, :meta_tags) ==
[%{og_title: "Test"}]
end
test "returns empty list when key does not exist" do
assert Layouts.get_content_for(%{content_for: %{}}, :nonexistent) == []
end
test "returns empty list when content_for is nil" do
assert Layouts.get_content_for(%{content_for: nil}, :nonexistent) == []
end
end
# Re-export for use in tests
defp put_content_for(conn, key, content), do: Layouts.put_content_for(conn, key, content)
end