defmodule MockStripe.Customer do defstruct [ :created, :default_source, :email, :id, :name, :object ] alias MockStripe.List alias MockStripe.Customer def create(attrs \\ %{}) do {:ok, retrieve() |> Map.merge(attrs)} end def retrieve() do stripe_id = "cus_#{MockStripe.token()}" retrieve(stripe_id) end def retrieve("cus_" <> _ = stripe_id) do %Customer{ created: 1_600_892_385, email: "andreas@codered.se", id: stripe_id, name: "Andreas Eriksson", object: "customer" } end def list(_attrs \\ %{}) do {:ok, %List{ data: [ retrieve() ], has_more: false, object: "list", total_count: nil, url: "/v1/customers" }} end def update(customer_stripe_id, attrs) do {:ok, retrieve() |> Map.merge(%{id: customer_stripe_id}) |> Map.merge(attrs)} end end