defmodule Plausible.Billing.TestPaddleApiMock do @moduledoc false def get_subscription(_) do {:ok, %{ "next_payment" => %{ "date" => "2019-07-10", "amount" => 6 }, "last_payment" => %{ "date" => "2019-06-10", "amount" => 6 } }} end def update_subscription(_, %{plan_id: new_plan_id}) do new_plan_id = String.to_integer(new_plan_id) {:ok, %{ "plan_id" => new_plan_id, "next_payment" => %{ "date" => "2019-07-10", "amount" => 6 } }} end def update_subscription_preview(_user, _new_plan_id) do {:ok, %{ "immediate_payment" => %{ "amount" => -72.6, "currency" => "EUR", "date" => "2023-11-05" }, "next_payment" => %{ "amount" => 47.19, "currency" => "EUR", "date" => "2023-12-05" }, "plan_id" => 63_852, "subscription_id" => 600_279, "user_id" => 666_317 }} end def get_invoices(nil), do: {:error, :no_invoices} def get_invoices(%{paddle_subscription_id: nil}), do: {:error, :no_invoices} def get_invoices(subscription) do case subscription.paddle_subscription_id do "invalid_subscription_id" -> {:error, :request_failed} _ -> {:ok, [ %{ "amount" => 11.11, "currency" => "EUR", "payout_date" => "2020-12-24", "receipt_url" => "https://some-receipt-url.com" }, %{ "amount" => 22, "currency" => "USD", "payout_date" => "2020-11-24", "receipt_url" => "https://other-receipt-url.com" } ]} end end def fetch_prices(product_ids, customer_ip) do Plausible.Billing.DevPaddleApiMock.fetch_prices(product_ids, customer_ip) end end