Skip to content

Commit

Permalink
Merge c072bd9 into 464687e
Browse files Browse the repository at this point in the history
  • Loading branch information
snewcomer committed Apr 21, 2018
2 parents 464687e + c072bd9 commit c69390b
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 23 deletions.
63 changes: 40 additions & 23 deletions lib/stripe/core_resources/customer.ex
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ defmodule Stripe.Customer do
business_vat_id: String.t(),
created: Stripe.timestamp(),
currency: String.t() | nil,
# TODO: verify this
default_source: Stripe.id() | Stripe.Source.t(),
default_source: Stripe.id() | Stripe.Source.t() | nil,
delinquent: boolean | nil,
description: String.t() | nil,
discount: Stripe.Discount.t() | nil,
email: String.t() | nil,
invoice_prefix: String.t() | nil,
livemode: boolean,
metadata: Stripe.Types.metadata(),
shipping: Stripe.Types.shipping() | nil,
Expand All @@ -47,6 +47,7 @@ defmodule Stripe.Customer do
:description,
:discount,
:email,
:invoice_prefix,
:livemode,
:metadata,
:shipping,
Expand All @@ -61,15 +62,16 @@ defmodule Stripe.Customer do
"""
@spec create(params, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
when params: %{
account_balance: integer | nil,
business_vat_id: String.t() | nil,
coupon: Stripe.id() | Stripe.Coupon.t() | nil,
default_source: Stripe.id() | Stripe.Source.t() | nil,
description: String.t() | nil,
email: String.t() | nil,
metadata: Stripe.Types.metadata(),
shipping: Stripe.Types.shipping() | nil,
source: Stripe.Source.t() | nil
optional(:account_balance) => integer,
optional(:business_vat_id) => String.t(),
optional(:coupon) => Stripe.id() | Stripe.Coupon.t(),
optional(:default_source) => Stripe.id() | Stripe.Source.t(),
optional(:description) => String.t(),
optional(:email) => String.t(),
optional(:invoice_prefix) => String.t(),
optional(:metadata) => Stripe.Types.metadata(),
optional(:shipping) => Stripe.Types.shipping(),
optional(:source) => Stripe.Source.t()
} | %{}
def create(params, opts \\ []) do
new_request(opts)
Expand All @@ -96,15 +98,16 @@ defmodule Stripe.Customer do
"""
@spec update(Stripe.id() | t, params, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
when params: %{
account_balance: integer | nil,
business_vat_id: String.t() | nil,
coupon: Stripe.id() | Stripe.Coupon.t() | nil,
default_source: Stripe.id() | Stripe.Source.t() | nil,
description: String.t() | nil,
email: String.t() | nil,
metadata: Stripe.Types.metadata(),
shipping: Stripe.Types.shipping() | nil,
source: Stripe.Source.t() | nil
optional(:account_balance) => integer,
optional(:business_vat_id) => String.t(),
optional(:coupon) => Stripe.id() | Stripe.Coupon.t(),
optional(:default_source) => Stripe.id() | Stripe.Source.t(),
optional(:description) => String.t(),
optional(:email) => String.t(),
optional(:invoice_prefix) => String.t(),
optional(:metadata) => Stripe.Types.metadata(),
optional(:shipping) => Stripe.Types.shipping(),
optional(:source) => Stripe.Source.t()
} | %{}
def update(id, params, opts \\ []) do
new_request(opts)
Expand All @@ -130,9 +133,11 @@ defmodule Stripe.Customer do
"""
@spec list(params, Stripe.options()) :: {:ok, Stripe.List.t(t)} | {:error, Stripe.Error.t()}
when params: %{
ending_before: t | Stripe.id() | nil,
limit: 1..100 | nil,
starting_after: t | Stripe.id() | nil
optional(:created) => String.t() | Stripe.date_query(),
optional(:email) => String.t(),
optional(:ending_before) => t | Stripe.id(),
optional(:limit) => 1..100,
optional(:starting_after) => t | Stripe.id()
} | %{}
def list(params \\ %{}, opts \\ []) do
new_request(opts)
Expand All @@ -142,4 +147,16 @@ defmodule Stripe.Customer do
|> cast_to_id([:ending_before, :starting_after])
|> make_request()
end

@doc """
Deletes the discount on a customer
"""
@spec delete_discount(Stripe.id() | t, Stripe.options()) ::
{:ok, t} | {:error, Stripe.Error.t()}
def delete_discount(id, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(id)}/discount")
|> put_method(:delete)
|> make_request()
end
end
8 changes: 8 additions & 0 deletions test/stripe/core_resources/customer_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,12 @@ defmodule Stripe.CustomerTest do
assert is_list(customers)
assert %Stripe.Customer{} = hd(customers)
end

describe "delete_discount/2" do
test "deletes a customer's discount" do
{:ok, customer} = Stripe.Customer.retrieve("sub_123")
assert {:ok, _} = Stripe.Customer.delete_discount("sub_123")
assert_stripe_requested(:delete, "/v1/customers/#{customer.id}/discount")
end
end
end

0 comments on commit c69390b

Please sign in to comment.