diff --git a/app/controllers/admin/products_controller.rb b/app/controllers/admin/products_controller.rb index 4129bc5..cb351b5 100644 --- a/app/controllers/admin/products_controller.rb +++ b/app/controllers/admin/products_controller.rb @@ -8,8 +8,13 @@ module DiscoursePatrons before_action :set_api_key def index - products = ::Stripe::Product.list - render_json_dump products.data + begin + products = ::Stripe::Product.list + + render_json_dump products.data + rescue ::Stripe::InvalidRequestError => e + return render_json_error e.message + end end def create @@ -18,9 +23,7 @@ module DiscoursePatrons type: 'service', name: params[:name], active: params[:active], - metadata: { - group_name: params[:group_name] - } + metadata: metadata ) render_json_dump product @@ -47,9 +50,7 @@ module DiscoursePatrons params[:id], { name: params[:name], active: params[:active], - metadata: { - group_name: params[:group_name] - } + metadata: metadata } ) @@ -70,6 +71,12 @@ module DiscoursePatrons return render_json_error e.message end end + + private + + def metadata + { group_name: params[:metadata][:group_name] } + end end end end diff --git a/app/controllers/admin/subscriptions_controller.rb b/app/controllers/admin/subscriptions_controller.rb index 911adf7..3b892e2 100644 --- a/app/controllers/admin/subscriptions_controller.rb +++ b/app/controllers/admin/subscriptions_controller.rb @@ -8,8 +8,13 @@ module DiscoursePatrons before_action :set_api_key def index - subscriptions = ::Stripe::Subscription.list - render_json_dump subscriptions + begin + subscriptions = ::Stripe::Subscription.list + + render_json_dump subscriptions + rescue ::Stripe::InvalidRequestError => e + return render_json_error e.message + end end end end diff --git a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show.js.es6 index 963b93f..d07d0d1 100644 --- a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show.js.es6 +++ b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show.js.es6 @@ -4,10 +4,10 @@ export default Ember.Controller.extend({ actions: { createProduct() { // TODO: set default group name beforehand - if (this.get("model.product.groupName") === undefined) { + if (this.get("model.product.metadata.group_name") === undefined) { this.set( - "model.product.groupName", - this.get("model.group.firstObject") + "model.product.metadata", + { group_name: this.get("model.groups.firstObject.name") } ); } diff --git a/assets/javascripts/discourse/models/admin-product.js.es6 b/assets/javascripts/discourse/models/admin-product.js.es6 index 5da5791..2b8fd52 100644 --- a/assets/javascripts/discourse/models/admin-product.js.es6 +++ b/assets/javascripts/discourse/models/admin-product.js.es6 @@ -10,7 +10,7 @@ const AdminProduct = Discourse.Model.extend({ save() { const data = { name: this.name, - groupName: this.groupName, + metadata: this.metadata, active: this.active }; @@ -20,7 +20,7 @@ const AdminProduct = Discourse.Model.extend({ update() { const data = { name: this.name, - groupName: this.groupName, + metadata: this.metadata, active: this.active }; diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-index.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-index.hbs index fcf34aa..6c60ae6 100644 --- a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-index.hbs +++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-index.hbs @@ -2,6 +2,7 @@ + @@ -9,6 +10,7 @@ {{#each model as |product|}} +
{{i18n 'discourse_patrons.admin.products.product.product_id'}}{{i18n 'discourse_patrons.admin.products.product.name'}} {{i18n 'discourse_patrons.admin.products.product.group'}} {{i18n 'discourse_patrons.admin.products.product.active'}}
{{product.id}}{{product.name}} {{product.metadata.group_name}} {{product.active}} diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show.hbs index 89e7dad..4fe5ded 100644 --- a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show.hbs +++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show.hbs @@ -8,7 +8,7 @@

- {{combo-box valueAttribute="value" content=model.groups value=model.product.groupName}} + {{combo-box valueAttribute="name" content=model.groups value=model.product.metadata.group_name}}

diff --git a/spec/requests/admin/products_controller_spec.rb b/spec/requests/admin/products_controller_spec.rb index cf18933..ba7651c 100644 --- a/spec/requests/admin/products_controller_spec.rb +++ b/spec/requests/admin/products_controller_spec.rb @@ -56,22 +56,22 @@ module DiscoursePatrons describe 'create' do it 'is of product type service' do ::Stripe::Product.expects(:create).with(has_entry(:type, 'service')) - post "/patrons/admin/products.json", params: {} + post "/patrons/admin/products.json", params: { metadata: { group_name: '' } } end it 'has a name' do ::Stripe::Product.expects(:create).with(has_entry(:name, 'Jesse Pinkman')) - post "/patrons/admin/products.json", params: { name: 'Jesse Pinkman' } + post "/patrons/admin/products.json", params: { name: 'Jesse Pinkman', metadata: { group_name: '' } } end it 'has an active attribute' do ::Stripe::Product.expects(:create).with(has_entry(active: 'false')) - post "/patrons/admin/products.json", params: { active: 'false' } + post "/patrons/admin/products.json", params: { active: 'false', metadata: { group_name: '' } } end it 'has a metadata' do ::Stripe::Product.expects(:create).with(has_entry(metadata: { group_name: 'discourse-user-group-name' })) - post "/patrons/admin/products.json", params: { group_name: 'discourse-user-group-name' } + post "/patrons/admin/products.json", params: { metadata: { group_name: 'discourse-user-group-name' }} end end @@ -85,7 +85,7 @@ module DiscoursePatrons describe 'update' do it 'updates the product' do ::Stripe::Product.expects(:update) - patch "/patrons/admin/products/prod_walterwhite.json", params: {} + patch "/patrons/admin/products/prod_walterwhite.json", params: { metadata: { group_name: '' }} end end