| defmodule Plausible.Billing.PaddleApiTest do |
| use Plausible.DataCase |
|
|
| import Mox |
| setup :verify_on_exit! |
|
|
| @success "fixture/paddle_prices_success_response.json" |> File.read!() |> Jason.decode!() |
|
|
| describe "fetch_prices/1" do |
| test "returns %Money{} structs per product_id when given a list of product_ids" do |
| expect( |
| Plausible.HTTPClient.Mock, |
| :get, |
| fn "https://checkout.paddle.com/api/2.0/prices" <> query, |
| [{"content-type", "application/json"}, {"accept", "application/json"}], |
| _ -> |
| assert query =~ "product_ids=#{URI.encode_www_form("19878,20127,20657,20658")}" |
|
|
| {:ok, |
| %Finch.Response{ |
| status: 200, |
| headers: [{"content-type", "application/json"}], |
| body: @success |
| }} |
| end |
| ) |
|
|
| assert Plausible.Billing.PaddleApi.fetch_prices( |
| ["19878", "20127", "20657", "20658"], |
| "127.0.0.1" |
| ) == |
| {:ok, |
| %{ |
| "19878" => Money.new(:EUR, "6.0"), |
| "20127" => Money.new(:EUR, "60.0"), |
| "20657" => Money.new(:EUR, "12.34"), |
| "20658" => Money.new(:EUR, "120.34") |
| }} |
| end |
| end |
| end |
|
|