Files
danbooru/test/controllers/user_upgrades_controller_test.rb
2014-11-06 17:43:10 -08:00

114 lines
3.3 KiB
Ruby

require 'test_helper'
class UserUpgradesControllerTest < ActionController::TestCase
def get_stripe_token
Stripe::Token.create(
:card => {
:number => "4242424242424242",
:exp_month => 1,
:exp_year => 1.year.from_now.year,
:cvc => "123"
}
)
end
setup do
@user = FactoryGirl.create(:user)
end
context "#create" do
context "for basic -> gold" do
should "promote the account" do
VCR.use_cassette("stripe-basic-to-gold", :record => :once) do
post :create, {:stripeToken => get_stripe_token.id, :desc => "Upgrade to Gold", :email => "nowhere@donmai.us"}, {:user_id => @user.id}
end
assert_redirected_to user_upgrade_path
@user.reload
assert_equal(User::Levels::GOLD, @user.level)
end
end
context "for basic -> platinum" do
should "promote the account" do
VCR.use_cassette("stripe-basic-to-plat", :record => :once) do
post :create, {:stripeToken => get_stripe_token.id, :desc => "Upgrade to Platinum", :email => "nowhere@donmai.us"}, {:user_id => @user.id}
end
assert_redirected_to user_upgrade_path
@user.reload
assert_equal(User::Levels::PLATINUM, @user.level)
end
end
context "for gold -> platinum" do
context "when the user is gold" do
setup do
@user.update_attribute(:level, User::Levels::GOLD)
end
should "promote the account" do
VCR.use_cassette("stripe-gold-to-plat", :record => :once) do
post :create, {:stripeToken => get_stripe_token.id, :desc => "Upgrade Gold to Platinum", :email => "nowhere@donmai.us"}, {:user_id => @user.id}
end
assert_redirected_to user_upgrade_path
@user.reload
assert_equal(User::Levels::PLATINUM, @user.level)
end
end
context "when the user is not gold" do
should "fail" do
VCR.use_cassette("stripe-gold-to-plat-bad", :record => :once) do
post :create, {:stripeToken => get_stripe_token.id, :desc => "Upgrade Gold to Platinum", :email => "nowhere@donmai.us"}, {:user_id => @user.id}
end
assert_response 422
@user.reload
assert_equal(User::Levels::MEMBER, @user.level)
end
end
end
end
context "#new" do
context "for safe mode" do
setup do
CurrentUser.stubs(:safe_mode?).returns(true)
end
should "render" do
get :new, {}, {:user_id => @user.id}
assert_response :success
end
end
context "for default mode" do
should "render" do
get :new, {}, {:user_id => @user.id}
assert_response :success
end
end
end
context "#show" do
context "with disable=true" do
should "render" do
get :show, {}, {:user_id => @user.id}, {:disable => true}
assert_response :success
end
end
context "with success=true" do
should "render" do
get :show, {}, {:user_id => @user.id}, {:success => true}
assert_response :success
end
end
context "with error=true" do
should "render" do
get :show, {}, {:user_id => @user.id}, {:error => true}
assert_response :success
end
end
end
end