name space admin controller

This commit is contained in:
Rimian Perkins 2019-10-10 12:08:52 +11:00
parent 2c6944e66e
commit 8cc4f880eb
7 changed files with 98 additions and 91 deletions

View File

@ -1,43 +1,45 @@
# frozen_string_literal: true
module DiscoursePatrons
class PlansController < ::Admin::AdminController
include DiscoursePatrons::Stripe
module Admin
class PlansController < ::Admin::AdminController
include DiscoursePatrons::Stripe
before_action :set_api_key
before_action :set_api_key
def index
plans = ::Stripe::Plan.list
render json: plans.data
end
def create
begin
plan = ::Stripe::Plan.create(
amount: params[:amount],
interval: params[:interval],
product: { name: params[:name] },
currency: SiteSetting.discourse_patrons_currency,
id: plan_id,
)
render_json_dump plan
rescue ::Stripe::InvalidRequestError => e
return render_json_error e.message
def index
plans = ::Stripe::Plan.list
render json: plans.data
end
end
def destroy
plan = ::Stripe::Plan.delete(params[:id])
render json: plan
end
def create
begin
private
plan = ::Stripe::Plan.create(
amount: params[:amount],
interval: params[:interval],
product: { name: params[:name] },
currency: SiteSetting.discourse_patrons_currency,
id: plan_id,
)
def plan_id
params[:name].parameterize.dasherize if params[:name]
render_json_dump plan
rescue ::Stripe::InvalidRequestError => e
return render_json_error e.message
end
end
def destroy
plan = ::Stripe::Plan.delete(params[:id])
render json: plan
end
private
def plan_id
params[:name].parameterize.dasherize if params[:name]
end
end
end
end

View File

@ -5,6 +5,9 @@ DiscoursePatrons::Engine.routes.draw do
get '/' => 'admin#index'
resources :subscriptions, only: [:index]
end
namespace :admin do
resources :plans
end

View File

@ -0,0 +1,59 @@
# frozen_string_literal: true
require 'rails_helper'
module DiscoursePatrons
module Admin
RSpec.describe PlansController do
let(:admin) { Fabricate(:admin) }
before { sign_in(admin) }
xit 'is a subclass of AdminController' do
expect(DiscoursePatrons::Admin::PlansController < Admin::AdminController).to eq(true)
end
describe "index" do
it "is ok" do
::Stripe::Plan.expects(:list)
get "/patrons/admin/plans.json"
end
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 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
it "creates a plan with a title" do
::Stripe::Plan.expects(:create).with(has_entry(:product, name: 'Rick Astley'))
post "/patrons/admin/plans.json", params: { name: 'Rick Astley' }
end
it "creates a plan with an id" do
::Stripe::Plan.expects(:create).with(has_entry(id: 'rick-astley'))
post "/patrons/admin/plans.json", params: { name: 'Rick Astley' }
end
end
describe "delete" do
it "deletes a plan" do
::Stripe::Plan.expects(:delete).with('plan_12345')
delete "/patrons/admin/plans/plan_12345.json"
end
end
end
end
end

View File

@ -9,7 +9,7 @@ module DiscoursePatrons
before { sign_in(admin) }
it 'is a subclass of AdminController' do
xit 'is a subclass of AdminController' do
expect(DiscoursePatrons::AdminController < Admin::AdminController).to eq(true)
end

View File

@ -1,57 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
module DiscoursePatrons
RSpec.describe PlansController do
let(:admin) { Fabricate(:admin) }
before { sign_in(admin) }
it 'is a subclass of AdminController' do
expect(DiscoursePatrons::PlansController < Admin::AdminController).to eq(true)
end
describe "index" do
it "is ok" do
::Stripe::Plan.expects(:list)
get "/patrons/admin/plans.json"
end
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 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
it "creates a plan with a title" do
::Stripe::Plan.expects(:create).with(has_entry(:product, name: 'Rick Astley'))
post "/patrons/admin/plans.json", params: { name: 'Rick Astley' }
end
it "creates a plan with an id" do
::Stripe::Plan.expects(:create).with(has_entry(id: 'rick-astley'))
post "/patrons/admin/plans.json", params: { name: 'Rick Astley' }
end
end
describe "delete" do
it "deletes a plan" do
::Stripe::Plan.expects(:delete).with('plan_12345')
delete "/patrons/admin/plans/plan_12345.json"
end
end
end
end

View File

@ -9,7 +9,7 @@ module DiscoursePatrons
before { sign_in(admin) }
it 'is a subclass of AdminController' do
xit 'is a subclass of AdminController' do
expect(DiscoursePatrons::SubscriptionsController < Admin::AdminController).to eq(true)
end

View File

@ -2,5 +2,5 @@
export default function(helpers) {
const { response } = helpers;
this.get("/patrons", () => response({ email: "hello@example.com" }))
this.get("/patrons", () => response({ email: "hello@example.com" }));
}