From 1c87a87bd651ee02289df0f4a55cbdfb3e454b3b Mon Sep 17 00:00:00 2001 From: Rimian Perkins Date: Mon, 24 Apr 2017 10:06:47 +1000 Subject: [PATCH] refactor the rewards interface for extensibility --- .../discourse_donations/charges_controller.rb | 4 ++-- .../discourse_donations/charges_controller_spec.rb | 13 +++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/controllers/discourse_donations/charges_controller.rb b/app/controllers/discourse_donations/charges_controller.rb index dea67bf..bf9ab6e 100644 --- a/app/controllers/discourse_donations/charges_controller.rb +++ b/app/controllers/discourse_donations/charges_controller.rb @@ -14,13 +14,13 @@ module DiscourseDonations response = {} end - response['rewards'] = {} + response['rewards'] = [] if reward_user?(payment) reward = DiscourseDonations::Rewards.new(current_user) group_name = SiteSetting.discourse_donations_reward_group_name if reward.add_to_group(group_name) - response['rewards']['groups'] = [group_name] + response['rewards'] << { type: :group, name: group_name } end end diff --git a/spec/controllers/discourse_donations/charges_controller_spec.rb b/spec/controllers/discourse_donations/charges_controller_spec.rb index 96d3bde..0845dbc 100644 --- a/spec/controllers/discourse_donations/charges_controller_spec.rb +++ b/spec/controllers/discourse_donations/charges_controller_spec.rb @@ -28,24 +28,25 @@ module DiscourseDonations end describe 'rewards' do + let(:group_name) { 'Zasch' } + let(:response_rewards) { JSON.parse(response.body)['rewards'] } + let(:stripe) { ::Stripe::Charge } + before do - SiteSetting.stubs(:discourse_donations_reward_group_name).returns('Skimby') + SiteSetting.stubs(:discourse_donations_reward_group_name).returns(group_name) Fabricate(:group, name: SiteSetting.discourse_donations_reward_group_name) log_in :coding_horror end - let(:response_rewards) { JSON.parse(response.body)['rewards'] } - let(:stripe) { ::Stripe::Charge } - it 'has no rewards' do stripe.expects(:create).returns({ outcome: { seller_message: 'bummer' } }) post :create - expect(response_rewards).to eq({}) + expect(response_rewards).to be_empty end it 'awards a group' do post :create - expect(response_rewards['groups']).to eq([SiteSetting.discourse_donations_reward_group_name]) + expect(response_rewards.first).to eq({'type' => 'group', 'name' => group_name}) end end end