lib/tai/test_support/mocks/responses/accounts.ex

defmodule Tai.TestSupport.Mocks.Responses.Accounts do
  @type venue_id :: Tai.Venues.Adapter.venue_id()
  @type credential_id :: Tai.Venues.Adapter.credential_id()
  @type account_attrs :: map

  @spec for_venue_and_credential(venue_id, credential_id, map) :: :ok
  def for_venue_and_credential(venue_id, credential_id, account_attrs) do
    base_attrs = %{venue_id: venue_id, credential_id: credential_id}

    accounts =
      account_attrs
      |> Enum.map(fn attrs ->
        attrs = Map.merge(base_attrs, attrs)
        struct(Tai.Venues.Account, attrs)
      end)

    {:accounts, venue_id, credential_id}
    |> Tai.TestSupport.Mocks.Server.insert(accounts)
  end
end