initial empty job
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
require_dependency 'discourse'
|
||||
require_relative '../../jobs/award_group'
|
||||
|
||||
module DiscourseDonations
|
||||
class ChargesController < ActionController::Base
|
||||
@@ -16,7 +17,7 @@ module DiscourseDonations
|
||||
|
||||
response['rewards'] = []
|
||||
|
||||
if reward_user?(payment)
|
||||
if reward_current_user?(payment)
|
||||
reward = DiscourseDonations::Rewards.new(current_user)
|
||||
if reward.add_to_group(group_name)
|
||||
response['rewards'] << { type: :group, name: group_name }
|
||||
@@ -24,6 +25,10 @@ module DiscourseDonations
|
||||
if reward.grant_badge(badge_name)
|
||||
response['rewards'] << { type: :badge, name: badge_name }
|
||||
end
|
||||
else
|
||||
if group_name.present?
|
||||
Jobs.enqueue_in(1.minute, :award_group, email: email)
|
||||
end
|
||||
end
|
||||
|
||||
render :json => response
|
||||
@@ -31,8 +36,8 @@ module DiscourseDonations
|
||||
|
||||
private
|
||||
|
||||
def reward_user?(payment)
|
||||
payment.present? && payment.successful?
|
||||
def reward_current_user?(payment)
|
||||
current_user.present? && payment.present? && payment.successful?
|
||||
end
|
||||
|
||||
def group_name
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# Discourse forces the namespace at top level :(
|
||||
|
||||
module Jobs
|
||||
class AwardGroup
|
||||
def perform(args)
|
||||
puts '======================The Job was performed==========================='
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,5 +1,4 @@
|
||||
|
||||
|
||||
module DiscourseDonations
|
||||
class Rewards
|
||||
attr_reader :user
|
||||
|
||||
@@ -40,21 +40,21 @@ module DiscourseDonations
|
||||
Fabricate(:badge, name: badge_name)
|
||||
end
|
||||
|
||||
shared_examples 'it has no rewards' do
|
||||
it 'rewards are empty' do
|
||||
stripe.expects(:create).returns({ outcome: { seller_message: 'bummer' } })
|
||||
post :create
|
||||
expect(response_rewards).to be_empty
|
||||
end
|
||||
end
|
||||
|
||||
describe 'new user' do
|
||||
let(:params) { { email: 'new-user@example.com' } }
|
||||
|
||||
it_behaves_like 'it has no rewards'
|
||||
it 'has no rewards' do
|
||||
post :create
|
||||
expect(response_rewards).to be_empty
|
||||
end
|
||||
|
||||
it 'awards a group'
|
||||
it 'awards a badge'
|
||||
it 'enqueues add to group' do
|
||||
Jobs.expects(:enqueue_in).with(1.minute, :award_group, email: params[:email])
|
||||
post :create, params
|
||||
end
|
||||
|
||||
it 'enqueues awarding a badge'
|
||||
end
|
||||
|
||||
describe 'logged in user' do
|
||||
@@ -62,7 +62,11 @@ module DiscourseDonations
|
||||
log_in :coding_horror
|
||||
end
|
||||
|
||||
it_behaves_like 'it has no rewards'
|
||||
it 'has no rewards' do
|
||||
stripe.expects(:create).returns({ outcome: { seller_message: 'bummer' } })
|
||||
post :create
|
||||
expect(response_rewards).to be_empty
|
||||
end
|
||||
|
||||
it 'awards a group' do
|
||||
post :create
|
||||
|
||||
Reference in New Issue
Block a user