From 1b232a1bd407aecd309d1d646a82bcfcdc2968ca Mon Sep 17 00:00:00 2001 From: Rimian Perkins Date: Wed, 25 Sep 2019 11:18:11 +1000 Subject: [PATCH] list plans --- app/controllers/admin/plans_controller.rb | 7 ++++- app/controllers/concerns/stripe.rb | 2 +- ...ugins-discourse-patrons-plans-index.js.es6 | 5 +++ ...ugins-discourse-patrons-plans-index.js.es6 | 7 +++++ ...min-plugins-discourse-patrons-plans.js.es6 | 1 + ...ins-discourse-patrons-subscriptions.js.es6 | 12 ++----- .../plugins-discourse-patrons-plans-index.hbs | 22 +++++++++++++ .../admin/plugins-discourse-patrons-plans.hbs | 1 - ...lugins-discourse-patrons-subscriptions.hbs | 4 +-- config/locales/client.en.yml | 8 +++-- config/routes.rb | 1 + spec/requests/plans_controller_spec.rb | 31 ++++++++++++------- 12 files changed, 73 insertions(+), 28 deletions(-) create mode 100644 assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-plans-index.js.es6 create mode 100644 assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-plans-index.js.es6 create mode 100644 assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-plans-index.hbs diff --git a/app/controllers/admin/plans_controller.rb b/app/controllers/admin/plans_controller.rb index 7387821..0f56505 100644 --- a/app/controllers/admin/plans_controller.rb +++ b/app/controllers/admin/plans_controller.rb @@ -6,6 +6,11 @@ module DiscoursePatrons before_action :set_api_key + def index + plans = ::Stripe::Plan.list + render json: plans.data + end + def create plan = ::Stripe::Plan.create( amount: params[:amount], @@ -17,7 +22,7 @@ module DiscoursePatrons id: 'gold-special', ) - plan.to_json + render json: plan end end end diff --git a/app/controllers/concerns/stripe.rb b/app/controllers/concerns/stripe.rb index a7cefdf..ce5d638 100644 --- a/app/controllers/concerns/stripe.rb +++ b/app/controllers/concerns/stripe.rb @@ -5,7 +5,7 @@ module DiscoursePatrons extend ActiveSupport::Concern def set_api_key - ::Stripe.api_key = 'SiteSetting.discourse_patrons_secret_key' + ::Stripe.api_key = SiteSetting.discourse_patrons_secret_key end end end diff --git a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-plans-index.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-plans-index.js.es6 new file mode 100644 index 0000000..9fcc419 --- /dev/null +++ b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-plans-index.js.es6 @@ -0,0 +1,5 @@ +export default Ember.Controller.extend({ + actions: { + deletePlan(plan) {} + } +}); diff --git a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-plans-index.js.es6 b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-plans-index.js.es6 new file mode 100644 index 0000000..9809f55 --- /dev/null +++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-plans-index.js.es6 @@ -0,0 +1,7 @@ +import { ajax } from "discourse/lib/ajax"; + +export default Discourse.Route.extend({ + model() { + return ajax("/patrons/admin/plans", { method: "get" }); + } +}); diff --git a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-plans.js.es6 b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-plans.js.es6 index 55af882..6408cd8 100644 --- a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-plans.js.es6 +++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-plans.js.es6 @@ -1 +1,2 @@ + export default Discourse.Route.extend({}); diff --git a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-subscriptions.js.es6 b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-subscriptions.js.es6 index ed31033..268dd39 100644 --- a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-subscriptions.js.es6 +++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-subscriptions.js.es6 @@ -1,13 +1,7 @@ import { ajax } from "discourse/lib/ajax"; export default Discourse.Route.extend({ - // model(params) { - // return ajax("/patrons/admin/subscriptions", { - // method: "get", - // data: { - // order: params.order, - // descending: params.descending - // } - // }).then(results => results); - // } + model(params) { + return ajax("/patrons/admin/subscriptions", { method: "get" }); + } }); diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-plans-index.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-plans-index.hbs new file mode 100644 index 0000000..0381917 --- /dev/null +++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-plans-index.hbs @@ -0,0 +1,22 @@ + +

{{i18n 'discourse_patrons.admin.plans.title'}}

+ + + + + + + + + {{#each model.plans as |plan|}} + + + + + + + + {{/each}} +
{{i18n 'discourse_patrons.admin.plans.plan.plan_id'}}{{i18n 'discourse_patrons.admin.plans.plan.nickname'}}{{i18n 'discourse_patrons.admin.plans.plan.interval'}}{{i18n 'discourse_patrons.admin.plans.plan.amount'}}
{{plan.id}}{{plan.nickname}}{{plan.interval}}{{plan.amount}} + {{d-button action=(action "deletePlan" plan) icon="trash" class="btn-danger btn no-text btn-icon"}} +
diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-plans.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-plans.hbs index fc522ff..98c210a 100644 --- a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-plans.hbs +++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-plans.hbs @@ -1,5 +1,4 @@ -

{{i18n 'discourse_patrons.admin.plans.title'}}

{{#link-to 'adminPlugins.discourse-patrons.plans.show' 'new' class="btn btn-primary"}} diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-subscriptions.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-subscriptions.hbs index 3a1afde..b410359 100644 --- a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-subscriptions.hbs +++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-subscriptions.hbs @@ -1,5 +1,5 @@ -

Subscription Plans

+

{{i18n 'discourse_patrons.admin.plans'}}

@@ -10,7 +10,7 @@ - {{#each model as |plan|}} + {{#each model as |subscription|}} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 235a7c5..c0e6866 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -54,8 +54,10 @@ en: name: Name amount: Amount interval: Interval - table: - head: - plan: Plan + plan: + plan_id: Plan ID + nickname: Nickname + interval: Interval + amount: Amount subscriptions: title: Subscriptions diff --git a/config/routes.rb b/config/routes.rb index 525ee82..94508b6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,6 +3,7 @@ DiscoursePatrons::Engine.routes.draw do get '/admin' => 'admin#index' get '/admin/subscriptions' => 'subscriptions#index' + get '/admin/plans' => 'plans#index' get '/admin/plans/:plan_id' => 'plans#show' post '/admin/plans' => 'plans#create' get '/' => 'patrons#index' diff --git a/spec/requests/plans_controller_spec.rb b/spec/requests/plans_controller_spec.rb index 8ebb411..480db3e 100644 --- a/spec/requests/plans_controller_spec.rb +++ b/spec/requests/plans_controller_spec.rb @@ -12,20 +12,29 @@ module DiscoursePatrons expect(DiscoursePatrons::PlansController < Admin::AdminController).to eq(true) end - it "creates a plan with a currency" do - SiteSetting.stubs(:discourse_patrons_currency).returns('aud') - ::Stripe::Plan.expects(:create).with(has_entry(:currency, 'aud')) - post "/patrons/admin/plans.json", params: {} + describe "index" do + it "is ok" do + ::Stripe::Plan.expects(:list) + get "/patrons/admin/plans.json" + end end - it "creates a plan with an interval" do - ::Stripe::Plan.expects(:create).with(has_entry(:interval, 'week')) - post "/patrons/admin/plans.json", params: { interval: 'week' } - end + describe "create" do + it "creates a plan with a currency" do + SiteSetting.stubs(:discourse_patrons_currency).returns('aud') + ::Stripe::Plan.expects(:create).with(has_entry(:currency, 'aud')) + post "/patrons/admin/plans.json", params: {} + end - it "creates a plan with an amount" do - ::Stripe::Plan.expects(:create).with(has_entry(:amount, '102')) - post "/patrons/admin/plans.json", params: { amount: '102' } + it "creates a plan with an interval" do + ::Stripe::Plan.expects(:create).with(has_entry(:interval, 'week')) + post "/patrons/admin/plans.json", params: { interval: 'week' } + end + + it "creates a plan with an amount" do + ::Stripe::Plan.expects(:create).with(has_entry(:amount, '102')) + post "/patrons/admin/plans.json", params: { amount: '102' } + end end end end
Amount