mirror of
https://github.com/discourse/discourse-subscriptions.git
synced 2025-07-10 08:03:27 +00:00
no accounts created
This commit is contained in:
parent
e875b17be2
commit
f008f91a79
@ -30,26 +30,12 @@ module DiscourseDonations
|
|||||||
|
|
||||||
if charge['paid'] == true
|
if charge['paid'] == true
|
||||||
output['messages'] << I18n.t('donations.payment.success')
|
output['messages'] << I18n.t('donations.payment.success')
|
||||||
end
|
|
||||||
|
|
||||||
if reward?(payment)
|
output['rewards'] << { type: :group, name: group_name } if group_name
|
||||||
if current_user.present?
|
output['rewards'] << { type: :badge, name: badge_name } if badge_name
|
||||||
reward = DiscourseDonations::Rewards.new(current_user)
|
|
||||||
if reward.add_to_group(group_name)
|
if create_account && email.present?
|
||||||
output['rewards'] << { type: :group, name: group_name }
|
# ::Jobs.enqueue(:donation_user, params.merge(rewards: output['rewards']))
|
||||||
end
|
|
||||||
if reward.grant_badge(badge_name)
|
|
||||||
output['rewards'] << { type: :badge, name: badge_name }
|
|
||||||
end
|
|
||||||
elsif email.present?
|
|
||||||
if group_name.present?
|
|
||||||
store = PluginStore.get('discourse-donations', 'group:add') || []
|
|
||||||
PluginStore.set('discourse-donations', 'group:add', store << email)
|
|
||||||
end
|
|
||||||
if badge_name.present?
|
|
||||||
store = PluginStore.get('discourse-donations', 'badge:grant') || []
|
|
||||||
PluginStore.set('discourse-donations', 'badge:grant', store << email)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -59,7 +45,7 @@ module DiscourseDonations
|
|||||||
private
|
private
|
||||||
|
|
||||||
def create_account
|
def create_account
|
||||||
params[:create_account] == 'true'
|
params[:create_account] == 'true' && SiteSetting.discourse_donations_enable_create_accounts
|
||||||
end
|
end
|
||||||
|
|
||||||
def reward?(payment)
|
def reward?(payment)
|
||||||
|
@ -35,9 +35,13 @@ module DiscourseDonations
|
|||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'create accounts'
|
||||||
|
|
||||||
describe 'new user' do
|
describe 'new user' do
|
||||||
let(:params) { { create_account: 'true', email: 'email@example.com', password: 'secret', username: 'mr-pink' } }
|
let(:params) { { create_account: 'true', email: 'email@example.com', password: 'secret', username: 'mr-pink' } }
|
||||||
|
|
||||||
|
before { SiteSetting.stubs(:discourse_donations_enable_create_accounts).returns(true) }
|
||||||
|
|
||||||
describe 'requires an email' do
|
describe 'requires an email' do
|
||||||
before { post :create, params.merge(email: '') }
|
before { post :create, params.merge(email: '') }
|
||||||
include_examples 'failure response', 'login.missing_user_field'
|
include_examples 'failure response', 'login.missing_user_field'
|
||||||
@ -68,32 +72,33 @@ module DiscourseDonations
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe 'rewards' do
|
describe 'rewards' do
|
||||||
let(:group_name) { 'Zasch' }
|
|
||||||
let(:badge_name) { 'Beanie' }
|
|
||||||
let(:body) { JSON.parse(response.body) }
|
let(:body) { JSON.parse(response.body) }
|
||||||
let(:stripe) { ::Stripe::Charge }
|
let(:stripe) { ::Stripe::Charge }
|
||||||
let!(:grp) { Fabricate(:group, name: group_name) }
|
|
||||||
let!(:badge) { Fabricate(:badge, name: badge_name) }
|
|
||||||
|
|
||||||
before do
|
shared_examples 'no rewards' do
|
||||||
SiteSetting.stubs(:discourse_donations_reward_group_name).returns(group_name)
|
it 'has no rewards' do
|
||||||
SiteSetting.stubs(:discourse_donations_reward_badge_name).returns(badge_name)
|
post :create, params
|
||||||
|
expect(body['rewards']).to be_empty
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'new user' do
|
describe 'new user' do
|
||||||
let(:params) { { email: 'new-user@example.com' } }
|
let(:params) { { create_account: 'true', email: 'dood@example.com', password: 'secret', name: 'dood', username: 'mr-dood' } }
|
||||||
|
|
||||||
it 'has no rewards' do
|
before { SiteSetting.stubs(:discourse_donations_enable_create_accounts).returns(true) }
|
||||||
post :create
|
|
||||||
expect(body['rewards']).to be_empty
|
include_examples 'no rewards' do
|
||||||
|
before do
|
||||||
|
stripe.stubs(:create).returns({ 'paid' => false })
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'stores the email in group:add and badge:grant and adds them' do
|
include_examples 'no rewards' do
|
||||||
PluginStore.expects(:get).with('discourse-donations', 'group:add').returns([])
|
before do
|
||||||
PluginStore.expects(:set).with('discourse-donations', 'group:add', [params[:email]])
|
stripe.stubs(:create).returns({ 'paid' => true })
|
||||||
PluginStore.expects(:get).with('discourse-donations', 'badge:grant').returns([])
|
SiteSetting.stubs(:discourse_donations_reward_group_name).returns(nil)
|
||||||
PluginStore.expects(:set).with('discourse-donations', 'badge:grant', [params[:email]])
|
SiteSetting.stubs(:discourse_donations_reward_badge_name).returns(nil)
|
||||||
post :create, params
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -102,20 +107,37 @@ module DiscourseDonations
|
|||||||
log_in :coding_horror
|
log_in :coding_horror
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'has no rewards' do
|
include_examples 'no rewards' do
|
||||||
stripe.expects(:create).returns({ 'outcome' => { 'seller_message' => 'bummer' } })
|
let(:params) { nil }
|
||||||
post :create
|
|
||||||
expect(body['rewards']).to be_empty
|
before do
|
||||||
|
stripe.stubs(:create).returns({ 'paid' => true })
|
||||||
|
SiteSetting.stubs(:discourse_donations_reward_group_name).returns(nil)
|
||||||
|
SiteSetting.stubs(:discourse_donations_reward_badge_name).returns(nil)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'awards a group' do
|
describe 'rewards' do
|
||||||
post :create
|
let(:group_name) { 'Zasch' }
|
||||||
expect(body['rewards']).to include({'type' => 'group', 'name' => group_name})
|
let(:badge_name) { 'Beanie' }
|
||||||
end
|
let!(:grp) { Fabricate(:group, name: group_name) }
|
||||||
|
let!(:badge) { Fabricate(:badge, name: badge_name) }
|
||||||
|
|
||||||
it 'awards a badge' do
|
before do
|
||||||
post :create
|
SiteSetting.stubs(:discourse_donations_reward_group_name).returns(group_name)
|
||||||
expect(body['rewards']).to include({'type' => 'badge', 'name' => badge_name})
|
SiteSetting.stubs(:discourse_donations_reward_badge_name).returns(badge_name)
|
||||||
|
stripe.stubs(:create).returns({ 'paid' => true })
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'awards a group' do
|
||||||
|
post :create
|
||||||
|
expect(body['rewards']).to include({'type' => 'group', 'name' => group_name})
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'awards a badge' do
|
||||||
|
post :create
|
||||||
|
expect(body['rewards']).to include({'type' => 'badge', 'name' => badge_name})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user