berrypod/test/support/fixtures/newsletter_fixtures.ex

41 lines
1.0 KiB
Elixir
Raw Permalink Normal View History

defmodule Berrypod.NewsletterFixtures do
@moduledoc """
Test helpers for creating newsletter subscribers and campaigns.
"""
alias Berrypod.Newsletter
def unique_email, do: "user#{System.unique_integer([:positive])}@example.com"
@doc """
Creates a confirmed subscriber directly via Repo, bypassing the
confirmation email flow.
"""
def confirmed_subscriber_fixture(attrs \\ %{}) do
now = DateTime.utc_now() |> DateTime.truncate(:second)
attrs =
Enum.into(attrs, %{
email: unique_email(),
status: "confirmed",
confirmed_at: now,
consent_text: "Test signup"
})
%Newsletter.Subscriber{}
|> Newsletter.Subscriber.changeset(attrs)
|> Berrypod.Repo.insert!()
end
def campaign_fixture(attrs \\ %{}) do
attrs =
Enum.into(attrs, %{
subject: "Test campaign #{System.unique_integer([:positive])}",
body: "Hello! Unsubscribe: {{unsubscribe_url}}"
})
{:ok, campaign} = Newsletter.create_campaign(attrs)
campaign
end
end