Skip to content

Commit

Permalink
refs#13 Added testcases for redeem_requests_controller, redeem_contro…
Browse files Browse the repository at this point in the history
…ller, redeem_mailer, redeem_request_model
  • Loading branch information
BandanaPandey committed Aug 26, 2016
1 parent 1bedd31 commit bdcd3c6
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 8 deletions.
1 change: 1 addition & 0 deletions config/environments/test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test
config.action_mailer.default_url_options = { :host => 'localhost:3000' }

# Randomize the order test cases are executed.
config.active_support.test_order = :random
Expand Down
57 changes: 54 additions & 3 deletions test/controllers/admin/redeem_requests_controller_test.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,60 @@
require "test_helper"

class Admin::RedeemRequestsControllerTest < ActionController::TestCase
def test_index
get :index
class Admin::RedeemRequestsControllerTest < ActionController::TestCase

def test_must_get_users_redemption_requests
seed_data
xhr :get, :index, parameters, format: :js, :id => @user.id
assert_response :success
end

def test_should_not_update_redeem_request_without_any_parameter
seed_data
redeem_request = create(:redeem_request,:points => 100, user: @user)
assert_raises ActionController::ParameterMissing do
put :update, :id => redeem_request.id
end
end

def test_must_update_redeem_requests_parameters
seed_data
redeem_request = create(:redeem_request,:points => 100, user: @user)
updated_coupon_code = 'josh24'
patch :update, :id => redeem_request.id, redeem_request: {:coupon_code => updated_coupon_code}
redeem_request.reload
assert_equal updated_coupon_code, redeem_request.coupon_code
assert_response :redirect
end

def test_should_destroy_redeem_request
seed_data
redeem_request = create(:redeem_request,:points => 100, user: @user)
assert_difference('RedeemRequest.count', -1) do
delete :destroy, id: redeem_request.id
end
assert_response :redirect
end

def test_should_destroy_transaction_corresponding_to_redeem_request
seed_data
redeem_request = create(:redeem_request,:points => 100, user: @user)
assert_difference('Transaction.count', -1) do
delete :destroy, id: redeem_request.id
end
assert_response :redirect
end

def seed_data
round = create(:round, :status => 'open')
role = create(:role, :name => 'Admin')
@user = create(:user, :auth_token => 'dah123rty', goal: create(:goal))
@user.roles << role
sign_in @user
transaction = create(:transaction, :type => 'credit', :points => 120, user: @user)
end

def parameters
{"redeem_request"=>{'coupon_code' => 'josh12' ,'points' => '100'}}
end

end
47 changes: 45 additions & 2 deletions test/controllers/redeem_controller_test.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,50 @@
require "test_helper"

class RedeemControllerTest < ActionController::TestCase
def test_sanity
flunk "Need real tests"

def test_controller_and_action_name
seed_round_and_user
xhr :post, :create, redeem_request: {:retailer => 'github', :points => 100}, :id => @user.id
assert_equal "text/javascript", @response.content_type
assert_equal "create", @controller.action_name
end

def test_redeem_request_not_created_if_points_is_0
seed_round_and_user
xhr :post, :create, redeem_request: {:retailer => 'github', :points => 0}, :id => @user.id
assert_equal RedeemRequest.count, 0
end

def test_it_must_create_redeem_request_if_points_is_greater_than_zero
seed_round_and_user
xhr :post, :create, redeem_request: {:retailer => 'github', :points => 100}, :id => @user.id
assert_equal RedeemRequest.count, 1
assert_response :success
end

def test_redeem_request_when_retailer_is_github
seed_round_and_user
xhr :post, :create, redeem_request: {:retailer => 'github', :points => 121}, :id => @user.id
assert_template 'redeem/_github'
end

def test_redeem_request_when_retailer_is_amazon
seed_round_and_user
xhr :post, :create, redeem_request: {:retailer => 'amazon', :points => 121}, :id => @user.id
assert_template 'redeem/_amazon'
end

def test_redeem_request_when_retailer_is_others
seed_round_and_user
xhr :post, :create, redeem_request: {:retailer => 'other', :points => 121}, :id => @user.id
assert_template 'redeem/_other'
end

def seed_round_and_user
round = create(:round, :status => 'open')
@user = create(:user, :auth_token => 'dah123rty', goal: create(:goal))
sign_in @user
transaction = create(:transaction, :type => 'credit', :points => 120, user: @user)
end

end
32 changes: 30 additions & 2 deletions test/mailers/redeem_mailer_test.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,35 @@
require "test_helper"

class RedeemMailerTest < ActionMailer::TestCase
def test_sanity
flunk "Need real tests"
include ActiveJob::TestHelper

def test_mail_is_enqueued_to_be_delivered_later
user = create(:user)
transaction = create(:transaction, :type => 'credit', :points => 20, user: user)
r = create(:redeem_request, :points => 2, user: user)
assert_enqueued_jobs 1 do
RedeemMailer.redeem_request(r).deliver_later
end
end

def test_mail_should_be_delivered
user = create(:user)
transaction = create(:transaction, :type => 'credit', :points => 20, user: user)
r = create(:redeem_request, :points => 2, user: user)
assert_difference 'ActionMailer::Base.deliveries.size', +1 do
RedeemMailer.redeem_request(r).deliver_now
end
end

def test_mail_is_delivered_with_expected_content
user = create(:user)
transaction = create(:transaction, :type => 'credit', :points => 20, user: user)
r = create(:redeem_request, :points => 2, user: user)
perform_enqueued_jobs do
mail = RedeemMailer.redeem_request(r).deliver_now
delivered_email = ActionMailer::Base.deliveries.last
assert_includes delivered_email.to, mail.to.first
end
end

end
10 changes: 9 additions & 1 deletion test/models/redeem_request_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -75,5 +75,13 @@ def test_creating_redeem_request_must_create_redeem_transaction
transaction_type = redeem_request.transaction.transaction_type
assert_equal transaction_type, 'redeem_points'
end


def test_transaction_corresponding_to_redeem_request_must_be_destroyed_when_it_is_deleted
user = create(:user)
transaction = create(:transaction, :type => 'credit', :points => 5, user: user)
redeem_request = create(:redeem_request, :points => 1, user: user)
assert_difference 'Transaction.count', -1 do
redeem_request.destroy
end
end
end

0 comments on commit bdcd3c6

Please sign in to comment.