berrypod/test/support/fixtures/orders_fixtures.ex

43 lines
1.0 KiB
Elixir
Raw Normal View History

defmodule SimpleshopTheme.OrdersFixtures do
@moduledoc """
Test helpers for creating orders.
"""
alias SimpleshopTheme.Orders
def order_fixture(attrs \\ %{}) do
attrs = Enum.into(attrs, %{})
items = [
%{
variant_id: "var_#{System.unique_integer([:positive])}",
name: Map.get(attrs, :product_name, "Test product"),
variant: Map.get(attrs, :variant_title, "Red / Large"),
price: Map.get(attrs, :unit_price, 1999),
quantity: Map.get(attrs, :quantity, 1)
}
]
order_attrs = %{
items: items,
customer_email: Map.get(attrs, :customer_email, "customer@example.com"),
currency: Map.get(attrs, :currency, "gbp")
}
{:ok, order} = Orders.create_order(order_attrs)
case attrs[:payment_status] do
"paid" ->
{:ok, order} = Orders.mark_paid(order, "pi_test_#{System.unique_integer([:positive])}")
order
"failed" ->
{:ok, order} = Orders.mark_failed(order)
order
_ ->
order
end
end
end