diff --git a/app/controllers/admin/subscriptions_controller.rb b/app/controllers/admin/subscriptions_controller.rb new file mode 100644 index 0000000..b8a40ba --- /dev/null +++ b/app/controllers/admin/subscriptions_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module DiscoursePatrons + class SubscriptionsController < ::Admin::AdminController + def index + head 200 + end + end +end diff --git a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-index.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-index.js.es6 index 16b4a9a..eeaf139 100644 --- a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-index.js.es6 +++ b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-index.js.es6 @@ -1,4 +1,3 @@ - export default Ember.Controller.extend({ queryParams: ["order", "descending"], order: null, diff --git a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-subscriptions.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-subscriptions.js.es6 new file mode 100644 index 0000000..f481a7b --- /dev/null +++ b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-subscriptions.js.es6 @@ -0,0 +1,7 @@ +export default Ember.Controller.extend({ + actions: { + createSubscriptionPlan() { + console.log(45); + } + } +}); diff --git a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons.js.es6 index b969276..2d3f960 100644 --- a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons.js.es6 +++ b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons.js.es6 @@ -1,3 +1 @@ - -export default Ember.Controller.extend({ -}); +export default Ember.Controller.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 new file mode 100644 index 0000000..e56dee1 --- /dev/null +++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-subscriptions.js.es6 @@ -0,0 +1,13 @@ +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); + } +}); diff --git a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons.js.es6 b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons.js.es6 index da78be9..55af882 100644 --- a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons.js.es6 +++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons.js.es6 @@ -1,3 +1 @@ - -export default Discourse.Route.extend({ -}); +export default Discourse.Route.extend({}); 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 b460fbe..aa839be 100644 --- a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-subscriptions.hbs +++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-subscriptions.hbs @@ -1,3 +1,22 @@ +

Subscription Plans

-

Subscriptions

+{{#d-button action="createSubscriptionPlan" class="btn btn-primary btn-payment btn-discourse-patrons"}} + New +{{/d-button}} + + + + + + + + + + + {{#each model as |payment|}} + + + + {{/each}} +
Plan NameIntervalProductAmount
diff --git a/config/routes.rb b/config/routes.rb index 650751e..0fd00ac 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,6 +2,7 @@ DiscoursePatrons::Engine.routes.draw do get '/admin' => 'admin#index' + get '/admin/subscriptions' => 'subscriptions#index' get '/' => 'patrons#index' get '/:pid' => 'patrons#show' resources :patrons, only: [:index, :create] diff --git a/plugin.rb b/plugin.rb index b04daa3..e5ee0c1 100644 --- a/plugin.rb +++ b/plugin.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true # name: discourse-patrons -# about: Integrates Stripe into Discourse to allow visitors to make payments +# about: Integrates Stripe into Discourse to allow visitors to make payments and Subscribe # version: 1.2.1 # url: https://github.com/rimian/discourse-patrons # authors: Rimian Perkins @@ -36,6 +36,7 @@ after_initialize do "../lib/discourse_patrons/engine", "../config/routes", "../app/controllers/admin_controller", + "../app/controllers/admin/subscriptions_controller", "../app/controllers/patrons_controller", "../app/models/payment", "../app/serializers/payment_serializer", diff --git a/spec/controllers/discourse_patrons/admin_controller_spec.rb b/spec/requests/admin_controller_spec.rb similarity index 52% rename from spec/controllers/discourse_patrons/admin_controller_spec.rb rename to spec/requests/admin_controller_spec.rb index ca478d0..818e322 100644 --- a/spec/controllers/discourse_patrons/admin_controller_spec.rb +++ b/spec/requests/admin_controller_spec.rb @@ -3,15 +3,19 @@ require 'rails_helper' module DiscoursePatrons - RSpec.describe AdminController, type: :controller do - routes { DiscoursePatrons::Engine.routes } + RSpec.describe AdminController do + + let(:admin) { Fabricate(:admin) } + + before { sign_in(admin) } it 'is a subclass of AdminController' do expect(DiscoursePatrons::AdminController < Admin::AdminController).to eq(true) end - # TODO: authenticate to test these - it "is ascending" - it "is has ordered by" + it "is ok" do + get "/patrons/admin.json" + expect(response.status).to eq(200) + end end end diff --git a/spec/requests/subscriptions_controller_spec.rb b/spec/requests/subscriptions_controller_spec.rb new file mode 100644 index 0000000..be0dea8 --- /dev/null +++ b/spec/requests/subscriptions_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +module DiscoursePatrons + RSpec.describe SubscriptionsController do + + let(:admin) { Fabricate(:admin) } + + before { sign_in(admin) } + + it 'is a subclass of AdminController' do + expect(DiscoursePatrons::SubscriptionsController < Admin::AdminController).to eq(true) + end + + it "is ok" do + get "/patrons/admin/subscriptions.json" + expect(response.status).to eq(200) + end + end +end