defmodule MockStripe.Product do
defstruct [
:created,
:id,
:name,
:object,
:updated,
:active
]
alias MockStripe.List
alias MockStripe.Product
def retrieve() do
stripe_id = "prod_#{MockStripe.token()}"
retrieve(stripe_id)
end
def retrieve("prod_" <> _ = stripe_id) do
%Product{
created: 1_600_353_622,
id: stripe_id,
name: "Premium Plan",
object: "product",
updated: 1_600_798_919,
active: true
}
end
def list(_attrs \\ %{}) do
{:ok,
%List{
data: [
retrieve()
],
has_more: false,
object: "list",
total_count: nil,
url: "/v1/products"
}}
end
def create(attrs \\ %{}) do
{:ok,
%Product{
created: 1_622_123_382,
id: "prod_#{MockStripe.token()}",
name: Map.get(attrs, :name, "Product Name"),
object: "product",
updated: 1_622_123_382,
active: true
}}
end
def update(stripe_id, attrs \\ %{}) do
{:ok,
%Product{
created: 1_622_123_382,
id: stripe_id,
name: Map.get(attrs, :name, "Product Name"),
object: "product",
updated: 1_622_123_382,
active: true
}}
end
end