show the product name in subscription lists
This commit is contained in:
parent
3e4fd76891
commit
ca00b530aa
|
@ -9,16 +9,24 @@ module DiscoursePatrons
|
|||
|
||||
def index
|
||||
begin
|
||||
plans = ::Stripe::Plan.list(
|
||||
expand: ['data.product']
|
||||
)
|
||||
|
||||
customers = ::Stripe::Customer.list(
|
||||
email: current_user.email,
|
||||
expand: ['data.subscriptions']
|
||||
)
|
||||
|
||||
# TODO: Serialize and remove stuff
|
||||
subscriptions = customers[:data].map do |customer|
|
||||
customer[:subscriptions][:data]
|
||||
end.flatten(1)
|
||||
|
||||
subscriptions.map! do |subscription|
|
||||
plan = plans[:data].find { |p| p[:id] == subscription[:plan][:id] }
|
||||
subscription.to_h.merge(product: plan[:product].to_h.slice(:id, :name))
|
||||
end
|
||||
|
||||
render_json_dump subscriptions
|
||||
|
||||
rescue ::Stripe::InvalidRequestError => e
|
||||
|
@ -39,7 +47,7 @@ module DiscoursePatrons
|
|||
deleted = ::Stripe::Subscription.delete(params[:id])
|
||||
render_json_dump deleted
|
||||
else
|
||||
render_json_error "Customer ID not found"
|
||||
render_json_error I18n.t('discourse_patrons.customer_id_not_found')
|
||||
end
|
||||
|
||||
rescue ::Stripe::InvalidRequestError => e
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<table class="table discourse-patrons-user-table">
|
||||
<thead>
|
||||
<th>{{i18n 'discourse_patrons.user.subscriptions.id'}}</th>
|
||||
<th>{{i18n 'discourse_patrons.user.plans.product'}}</th>
|
||||
<th>{{i18n 'discourse_patrons.user.plans.rate'}}</th>
|
||||
<th>{{i18n 'discourse_patrons.user.subscriptions.status'}}</th>
|
||||
<th>{{i18n 'discourse_patrons.user.subscriptions.created_at'}}</th>
|
||||
|
@ -13,6 +14,7 @@
|
|||
{{#each model as |subscription|}}
|
||||
<tr>
|
||||
<td>{{subscription.id}}</td>
|
||||
<td>{{subscription.product.name}}</td>
|
||||
<td>{{subscription.plan.subscriptionRate}}</td>
|
||||
<td>{{subscription.status}}</td>
|
||||
<td>{{format-unix-date subscription.created}}</td>
|
||||
|
|
|
@ -27,6 +27,7 @@ en:
|
|||
user:
|
||||
plans:
|
||||
rate: Rate
|
||||
product: Name
|
||||
subscriptions_help: You have no subscriptions.
|
||||
subscriptions:
|
||||
title: Subscriptions
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
en:
|
||||
discourse_patrons:
|
||||
customer_id_not_found: Customer ID not found
|
|
@ -28,18 +28,40 @@ module DiscoursePatrons
|
|||
end
|
||||
|
||||
describe "index" do
|
||||
let(:plans) do
|
||||
{
|
||||
data: [
|
||||
{
|
||||
id: "plan_1",
|
||||
product: { name: 'ACME Subscriptions' },
|
||||
},
|
||||
{
|
||||
id: "plan_2",
|
||||
product: { name: 'ACME Other Subscriptions' },
|
||||
}
|
||||
]
|
||||
}
|
||||
end
|
||||
|
||||
let(:customers) do
|
||||
{
|
||||
data: [{
|
||||
id: "cus_23456",
|
||||
subscriptions: {
|
||||
data: [{ id: "sub_1234" }, { id: "sub_4567" }]
|
||||
data: [
|
||||
{ id: "sub_1234", plan: { id: "plan_1" } },
|
||||
{ id: "sub_4567", plan: { id: "plan_2" } }
|
||||
]
|
||||
},
|
||||
}]
|
||||
}
|
||||
end
|
||||
|
||||
it "gets subscriptions" do
|
||||
::Stripe::Plan.expects(:list).with(
|
||||
expand: ['data.product']
|
||||
).returns(plans)
|
||||
|
||||
::Stripe::Customer.expects(:list).with(
|
||||
email: user.email,
|
||||
expand: ['data.subscriptions']
|
||||
|
@ -47,7 +69,13 @@ module DiscoursePatrons
|
|||
|
||||
get "/patrons/user/subscriptions.json"
|
||||
|
||||
expect(JSON.parse(response.body)).to eq([{ "id" => "sub_1234" }, { "id" => "sub_4567" }])
|
||||
subscription = JSON.parse(response.body).first
|
||||
|
||||
expect(subscription).to eq(
|
||||
"id" => "sub_1234",
|
||||
"plan" => { "id" => "plan_1" },
|
||||
"product" => { "name" => "ACME Subscriptions" }
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue