diff --git a/app/controllers/discourse_donations/charges_controller.rb b/app/controllers/discourse_donations/charges_controller.rb index de2294f..8f57c8c 100644 --- a/app/controllers/discourse_donations/charges_controller.rb +++ b/app/controllers/discourse_donations/charges_controller.rb @@ -35,7 +35,8 @@ module DiscourseDonations output['rewards'] << { type: :badge, name: badge_name } if badge_name if create_account && email.present? - # ::Jobs.enqueue(:donation_user, params.merge(rewards: output['rewards'])) + args = params.slice(:email, :username, :password, :name).merge(rewards: output['rewards']) + Jobs.enqueue(:donation_user, args) end end diff --git a/spec/controllers/discourse_donations/charges_controller_spec.rb b/spec/controllers/discourse_donations/charges_controller_spec.rb index 33474a6..3145a40 100644 --- a/spec/controllers/discourse_donations/charges_controller_spec.rb +++ b/spec/controllers/discourse_donations/charges_controller_spec.rb @@ -9,6 +9,7 @@ shared_examples 'failure response' do |message_key| it 'is not successful' do expect(body['success']).to eq false end it 'does not create a payment' do DiscourseDonations::Stripe.expects(:new).never end it 'does not create rewards' do DiscourseDonations::Rewards.expects(:new).never end + it 'does not queue up any jobs' do ::Jobs.expects(:enqueue).never end end module DiscourseDonations @@ -35,7 +36,36 @@ module DiscourseDonations expect(response).to have_http_status(200) end - describe 'create accounts' + describe 'create accounts' do + describe 'no acccount' do + before do + SiteSetting.stubs(:discourse_donations_enable_create_accounts).returns(false) + ::Jobs.expects(:enqueue).never + end + + it 'does not create user accounts' do + post :create + end + + it 'does not create user accounts if the user is logged in' do + log_in :coding_horror + post :create, { create_account: 'true' } + end + end + + describe 'creating an account' do + let(:params) { { create_account: 'true', email: 'email@example.com', password: 'secret', username: 'mr-pink' } } + + before do + SiteSetting.stubs(:discourse_donations_enable_create_accounts).returns(true) + Jobs.expects(:enqueue).once + end + + it 'enqueues the user account create' do + post :create, params + end + end + end describe 'new user' do let(:params) { { create_account: 'true', email: 'email@example.com', password: 'secret', username: 'mr-pink' } }