114 lines
3.3 KiB
Ruby
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
|