From bab76db863599b2c27b28a2d431c0d8989b16531 Mon Sep 17 00:00:00 2001 From: Rimian Perkins Date: Mon, 14 Oct 2019 09:52:43 +1100 Subject: [PATCH] subscriptions controller --- app/controllers/subscriptions_controller.rb | 20 +++++++++++++++++++ .../controllers/patrons-index.js.es6 | 2 +- .../controllers/patrons-subscribe.js.es6 | 3 ++- plugin.rb | 1 + .../requests/subscriptions_controller_spec.rb | 20 +++++++++++++++++++ 5 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 app/controllers/subscriptions_controller.rb create mode 100644 spec/requests/subscriptions_controller_spec.rb diff --git a/app/controllers/subscriptions_controller.rb b/app/controllers/subscriptions_controller.rb new file mode 100644 index 0000000..3cb8a13 --- /dev/null +++ b/app/controllers/subscriptions_controller.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +module DiscoursePatrons + class SubscriptionsController < ::ApplicationController + include DiscoursePatrons::Stripe + + before_action :set_api_key + + def create + subscription = ::Stripe::Subscription.create( + customer: params[:customer], + items: [ + { plan: 'plan_CBXbz9i7AIOTzr' }, + ] + ) + + render_json_dump subscription + end + end +end diff --git a/assets/javascripts/discourse/controllers/patrons-index.js.es6 b/assets/javascripts/discourse/controllers/patrons-index.js.es6 index 803e911..ad83561 100644 --- a/assets/javascripts/discourse/controllers/patrons-index.js.es6 +++ b/assets/javascripts/discourse/controllers/patrons-index.js.es6 @@ -13,7 +13,7 @@ export default Ember.Controller.extend({ }, paymentSuccessHandler(paymentIntentId) { - // DiscourseURL.redirectTo(`patrons/${paymentIntentId}`); + DiscourseURL.redirectTo(`patrons/${paymentIntentId}`); } } }); diff --git a/assets/javascripts/discourse/controllers/patrons-subscribe.js.es6 b/assets/javascripts/discourse/controllers/patrons-subscribe.js.es6 index caac906..26e0150 100644 --- a/assets/javascripts/discourse/controllers/patrons-subscribe.js.es6 +++ b/assets/javascripts/discourse/controllers/patrons-subscribe.js.es6 @@ -27,7 +27,8 @@ export default Ember.Controller.extend({ return ajax("/patrons/customers", { method: "post", data }).then( result => { - // create subscription + console.log(4, result, this.get('model')); + // do plan } ); } diff --git a/plugin.rb b/plugin.rb index c6a519e..bb50d5a 100644 --- a/plugin.rb +++ b/plugin.rb @@ -44,6 +44,7 @@ after_initialize do "../app/controllers/customers_controller", "../app/controllers/patrons_controller", "../app/controllers/plans_controller", + "../app/controllers/subscriptions_controller", "../app/models/payment", "../app/serializers/payment_serializer", ].each { |path| require File.expand_path(path, __FILE__) } diff --git a/spec/requests/subscriptions_controller_spec.rb b/spec/requests/subscriptions_controller_spec.rb new file mode 100644 index 0000000..13effe1 --- /dev/null +++ b/spec/requests/subscriptions_controller_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +module DiscoursePatrons + RSpec.describe SubscriptionsController do + describe "create" do + let(:user) { Fabricate(:user, email: 'hello.2@example.com') } + + before do + sign_in(user) + end + + it "creates a subscription with a customer" do + ::Stripe::Subscription.expects(:create).with(has_entry(customer: 'cus_1234')) + post "/patrons/subscriptions.json", params: { customer: 'cus_1234' } + end + end + end +end