diff --git a/app/controllers/admin/plans_controller.rb b/app/controllers/admin/plans_controller.rb index 7e4f2e0..d8181c3 100644 --- a/app/controllers/admin/plans_controller.rb +++ b/app/controllers/admin/plans_controller.rb @@ -24,7 +24,8 @@ module DiscoursePatrons nickname: params[:nickname], amount: params[:amount], interval: params[:interval], - product: params[:product_id], + product: params[:product], + trial_period_days: params[:trial_period_days], currency: SiteSetting.discourse_patrons_currency, ) diff --git a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 index 754a85a..25ac63e 100644 --- a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 +++ b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 @@ -11,7 +11,7 @@ export default Ember.Controller.extend({ }, createPlan() { - const product_id = this.get('model.plan.product_id'); + const product_id = this.get('model.plan.product'); this.get('model.plan').save().then(result => this.redirect(product_id)); } } diff --git a/assets/javascripts/discourse/discourse-patrons-route-map.js.es6 b/assets/javascripts/discourse/discourse-patrons-route-map.js.es6 index 921bfb5..b700afd 100644 --- a/assets/javascripts/discourse/discourse-patrons-route-map.js.es6 +++ b/assets/javascripts/discourse/discourse-patrons-route-map.js.es6 @@ -6,13 +6,6 @@ export default { this.route("discourse-patrons", function() { this.route("dashboard"); - // this.route("products", function() { - // this.route("plans", { path: "/:product-id/plans" }, function() { - // this.route("show", { path: ":plan-id" }); - // }); - // this.route("show", { path: "/:product-id" }); - // }); - this.route("products", function() { this.route("show", { path: "/:product-id" }, function() { this.route("plans", function() { @@ -21,10 +14,6 @@ export default { }); }); - // this.route("plans", function() { - // this.route("show", { path: "/:plan-id" }); - // }); - this.route("subscriptions"); }); } diff --git a/assets/javascripts/discourse/models/admin-plan.js.es6 b/assets/javascripts/discourse/models/admin-plan.js.es6 index 1618657..473a1df 100644 --- a/assets/javascripts/discourse/models/admin-plan.js.es6 +++ b/assets/javascripts/discourse/models/admin-plan.js.es6 @@ -21,7 +21,8 @@ const AdminPlan = Discourse.Model.extend({ nickname: this.nickname, interval: this.interval, amount: this.amount, - product_id: this.product_id + trial_period_days: this.trial_period_days, + product: this.product }; return ajax("/patrons/admin/plans", { method: "post", data }); diff --git a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 index 7cd6fce..c91afbd 100644 --- a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 +++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 @@ -8,7 +8,7 @@ export default Discourse.Route.extend({ let plan; if(id === 'new') { - plan = AdminPlan.create({ product_id: product.get('id') }); + plan = AdminPlan.create({ product: product.get('id') }); } else { plan = AdminPlan.find(id); diff --git a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show.js.es6 b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show.js.es6 index 176ad8c..08ca81b 100644 --- a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show.js.es6 +++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show.js.es6 @@ -4,8 +4,6 @@ import Group from "discourse/models/group"; export default Discourse.Route.extend({ model(params) { - console.log('products show', params); - const product_id = params['product-id']; let product; let plans = []; diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show-plans-show.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show-plans-show.hbs index 42eb525..1f000b4 100644 --- a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show-plans-show.hbs +++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show-plans-show.hbs @@ -22,7 +22,7 @@ {{i18n 'discourse_patrons.admin.plans.plan.trial'}} ({{i18n 'discourse_patrons.optional'}}) - {{input type="text" name="trial" value=model.plan.trial}} + {{input type="text" name="trial" value=model.plan.trial_period_days}}
{{i18n 'discourse_patrons.admin.plans.plan.trial_help'}}
@@ -38,12 +38,12 @@

-
+

{{i18n 'discourse_patrons.admin.plans.operations.create_help'}} -

+

- {{d-button label="cancel" action=(action "cancelPlan" model.plan.product_id) icon="times"}} + {{d-button label="cancel" action=(action "cancelPlan" model.plan.product) icon="times"}} {{d-button label="discourse_patrons.admin.plans.operations.create" action="createPlan" icon="plus" class="btn btn-primary"}}
diff --git a/spec/requests/admin/plans_controller_spec.rb b/spec/requests/admin/plans_controller_spec.rb index 8561793..8bd0ce0 100644 --- a/spec/requests/admin/plans_controller_spec.rb +++ b/spec/requests/admin/plans_controller_spec.rb @@ -98,9 +98,14 @@ module DiscoursePatrons post "/patrons/admin/plans.json", params: { amount: '102' } end + it "creates a plan with a trial period" do + ::Stripe::Plan.expects(:create).with(has_entry(:trial_period_days, '14')) + post "/patrons/admin/plans.json", params: { trial_period_days: '14' } + end + it "creates a plan with a product" do ::Stripe::Plan.expects(:create).with(has_entry(product: 'prod_walterwhite')) - post "/patrons/admin/plans.json", params: { product_id: 'prod_walterwhite' } + post "/patrons/admin/plans.json", params: { product: 'prod_walterwhite' } end end