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