85 lines
2.5 KiB
Ruby
Raw Normal View History

require 'rails_helper'
2017-03-20 12:08:30 +11:00
require_relative '../../support/dd_helper'
2017-02-24 13:23:11 +11:00
module DiscourseDonations
RSpec.describe ChargesController, type: :controller do
2017-02-24 13:23:11 +11:00
routes { DiscourseDonations::Engine.routes }
2017-03-20 12:08:30 +11:00
before do
SiteSetting.stubs(:discourse_donations_secret_key).returns('secret-key-yo')
2017-04-06 14:22:22 +10:00
SiteSetting.stubs(:discourse_donations_description).returns('charity begins at discourse plugin')
SiteSetting.stubs(:discourse_donations_currency).returns('AUD')
2017-03-20 12:08:30 +11:00
end
it 'responds ok for anonymous users' do
post :create, { email: 'foobar@example.com' }
expect(response).to have_http_status(200)
end
it 'responds ok when the email is empty' do
2017-04-05 09:49:57 +10:00
post :create, { email: '' }
expect(response).to have_http_status(200)
end
it 'responds ok for logged in user' do
current_user = log_in(:coding_horror)
post :create
expect(response).to have_http_status(200)
end
2017-04-21 12:08:52 +10:00
2017-04-21 14:26:53 +10:00
describe 'rewards' do
let(:group_name) { 'Zasch' }
2017-04-24 11:44:55 +10:00
let(:badge_name) { 'Beanie' }
let(:response_rewards) { JSON.parse(response.body)['rewards'] }
let(:stripe) { ::Stripe::Charge }
2017-04-21 14:26:53 +10:00
before do
SiteSetting.stubs(:discourse_donations_reward_group_name).returns(group_name)
2017-04-24 11:44:55 +10:00
SiteSetting.stubs(:discourse_donations_reward_badge_name).returns(badge_name)
2017-04-27 11:58:52 +10:00
Fabricate(:group, name: group_name)
Fabricate(:badge, name: badge_name)
2017-04-21 14:26:53 +10:00
end
2017-04-27 11:58:52 +10:00
describe 'new user' do
let(:params) { { email: 'new-user@example.com' } }
2017-04-27 13:34:48 +10:00
it 'has no rewards' do
post :create
expect(response_rewards).to be_empty
end
it 'enqueues add to group' do
2017-04-27 16:50:05 +10:00
skip 'still working on this'
2017-04-27 15:08:10 +10:00
Jobs.expects(:enqueue).with(:award_group, email: params[:email], group_name: group_name)
2017-04-27 13:34:48 +10:00
post :create, params
end
2017-04-27 11:58:52 +10:00
2017-04-27 13:34:48 +10:00
it 'enqueues awarding a badge'
2017-04-24 11:44:55 +10:00
end
2017-04-27 11:58:52 +10:00
describe 'logged in user' do
before do
log_in :coding_horror
end
2017-04-27 13:34:48 +10:00
it 'has no rewards' do
stripe.expects(:create).returns({ outcome: { seller_message: 'bummer' } })
post :create
expect(response_rewards).to be_empty
end
2017-04-27 11:58:52 +10:00
it 'awards a group' do
post :create
expect(response_rewards).to include({'type' => 'group', 'name' => group_name})
end
it 'awards a badge' do
post :create
expect(response_rewards).to include({'type' => 'badge', 'name' => badge_name})
end
2017-04-21 14:26:53 +10:00
end
2017-04-21 12:08:52 +10:00
end
end
end