defmodule Cannery.AccountsFixtures do @moduledoc """ This module defines test helpers for creating entities via the `Cannery.Accounts` context. """ alias Cannery.Accounts def unique_user_email, do: "user#{System.unique_integer()}@example.com" def valid_user_password, do: "hello world!" @spec user_fixture() :: Accounts.User.t() @spec user_fixture(attrs :: map()) :: Accounts.User.t() def user_fixture(attrs \\ %{}) do {:ok, user} = attrs |> Enum.into(%{ "email" => unique_user_email(), "password" => valid_user_password() }) |> Accounts.register_user() user end def extract_user_token(fun) do {:ok, captured} = fun.(&"[TOKEN]#{&1}[TOKEN]") [_, token, _] = String.split(captured.body, "[TOKEN]") token end def valid_user_attributes(attrs \\ %{}) do Enum.into(attrs, %{ email: unique_user_email(), password: valid_user_password() }) end end