diff --git a/lib/code_corps/map_utils.ex b/lib/code_corps/map_utils.ex new file mode 100644 index 000000000..14e305f7d --- /dev/null +++ b/lib/code_corps/map_utils.ex @@ -0,0 +1,7 @@ +defmodule CodeCorps.MapUtils do + def rename(map, old_key, new_key) do + map + |> Map.put(new_key, map |> Map.get(old_key)) + |> Map.delete(old_key) + end +end diff --git a/lib/code_corps/stripe/adapters/stripe_account.ex b/lib/code_corps/stripe/adapters/stripe_account.ex new file mode 100644 index 000000000..e897af2f8 --- /dev/null +++ b/lib/code_corps/stripe/adapters/stripe_account.ex @@ -0,0 +1,11 @@ +defmodule CodeCorps.Stripe.Adapters.StripeAccount do + import CodeCorps.MapUtils, only: [rename: 3] + + def params_from_stripe(%{} = stripe_map) do + stripe_map |> rename("id", "id_from_stripe") + end + + def params_to_stripe(%{} = ecto_map) do + ecto_map |> rename("id_from_stripe", "id") + end +end diff --git a/test/lib/code_corps/stripe/adapters/stripe_account_test.exs b/test/lib/code_corps/stripe/adapters/stripe_account_test.exs new file mode 100644 index 000000000..204fbb8dd --- /dev/null +++ b/test/lib/code_corps/stripe/adapters/stripe_account_test.exs @@ -0,0 +1,20 @@ +defmodule CodeCorps.Stripe.Adapters.StripeAccountTest do + use ExUnit.Case, async: true + + import CodeCorps.Stripe.Adapters.StripeAccount, only: [params_to_stripe: 1, params_from_stripe: 1] + + @stripe_map %{"id" => "str_123", "foo" => "bar"} + @local_map %{"id_from_stripe" => "str_123", "foo" => "bar"} + + describe "params_from_stripe/1" do + test "converts from stripe map to local properly" do + assert @stripe_map |> params_from_stripe == @local_map + end + end + + describe "params_to_stripe/1" do + test "converts from local to stripe map properly" do + assert @local_map |> params_to_stripe == @stripe_map + end + end +end