initial implementation of stripe mocking

This commit is contained in:
Kyle Drake 2015-01-18 17:07:09 -08:00
parent af2c4eea26
commit 81c9a4c94c
4 changed files with 77 additions and 10 deletions

17
Gemfile
View file

@ -56,17 +56,18 @@ end
group :test do
gem 'faker'
gem 'fabrication', require: 'fabrication'
gem 'fabrication', require: 'fabrication'
gem 'minitest'
gem 'minitest-reporters', require: 'minitest/reporters'
gem 'rack-test', require: 'rack/test'
gem 'mocha', require: nil
gem 'rake', require: nil
gem 'minitest-reporters', require: 'minitest/reporters'
gem 'rack-test', require: 'rack/test'
gem 'mocha', require: nil
gem 'rake', require: nil
gem 'poltergeist'
gem 'phantomjs', require: 'phantomjs/poltergeist'
gem 'phantomjs', require: 'phantomjs/poltergeist'
gem 'capybara_minitest_spec'
gem 'rack_session_access', require: nil
gem 'webmock', require: nil
gem 'rack_session_access', require: nil
gem 'webmock', require: nil
gem 'stripe-ruby-mock', '~> 2.0.1', require: 'stripe_mock'
platform :mri do
gem 'simplecov', require: nil

View file

@ -16,6 +16,7 @@ GEM
extlib (>= 0.9.15)
multi_json (>= 1.0.0)
bcrypt (3.1.7)
blankslate (3.1.3)
builder (3.2.2)
byebug (2.7.0)
columnize (~> 0.3)
@ -41,6 +42,7 @@ GEM
connection_pool (2.0.0)
crack (0.4.2)
safe_yaml (~> 1.0.0)
dante (0.2.0)
dav4rack (0.3.0)
nokogiri (>= 1.4.2)
rack (>= 1.1.0)
@ -73,6 +75,11 @@ GEM
hashie (2.0.5)
hiredis (0.5.0)
i18n (0.6.9)
jimson-temp (0.9.5)
blankslate (>= 3.1.2)
multi_json (~> 1.0)
rack (~> 1.4)
rest-client (~> 1.0)
json (1.8.1)
jwt (0.1.11)
multi_json (>= 1.5)
@ -189,6 +196,10 @@ GEM
json (~> 1.8.1)
mime-types (>= 1.25, < 3.0)
rest-client (~> 1.4)
stripe-ruby-mock (2.0.1)
dante (>= 0.2.0)
jimson-temp
stripe (>= 1.15.0)
thread (0.1.4)
thread_safe (0.3.4)
tilt (1.4.1)
@ -261,6 +272,7 @@ DEPENDENCIES
sinatra-flash
sinatra-xsendfile
stripe
stripe-ruby-mock (~> 2.0.1)
thread
tilt
webmock

View file

@ -0,0 +1,54 @@
require_relative './environment.rb'
describe '/admin' do
include Capybara::DSL
before do
Capybara.reset_sessions!
@admin = Fabricate :site, is_admin: true
@site = Fabricate :site
page.set_rack_session id: @admin.id
visit '/admin'
end
describe 'permissions' do
include Capybara::DSL
it 'works for admin site' do
page.body.must_match /Administration/
end
it 'fails for site without admin' do
page.set_rack_session id: @site.id
visit '/admin'
page.current_path.must_equal '/'
end
end
describe 'supporter upgrade' do
include Capybara::DSL
before do
@stripe_helper = StripeMock.create_test_helper
StripeMock.start
@plan = @stripe_helper.create_plan id: 'special', amount: 0
end
after do
StripeMock.stop
end
it 'works for valid site' do
within(:css, '#upgradeToSupporter') do
fill_in 'username', with: @site.username
click_button 'Upgrade to Supporter'
@site.reload
@site.stripe_customer_id.wont_be_nil
@site.stripe_subscription_id.wont_be_nil
@site.values[:plan_type].must_equal 'special'
@site.supporter?.must_equal true
end
end
end
end

View file

@ -52,13 +52,13 @@
<div class="col col-50">
<h2>Upgrade to Supporter</h2>
<form action="/plan/update" method="POST">
<form id="upgradeToSupporter" action="/plan/update" method="POST">
<input type="hidden" name="plan_type" value="special">
<%== csrf_token_input_html %>
<p>This site will be upgraded to the supporter plan.</p>
<p>Site Name:</p>
<p><input type="text" name="username" placeholder="edwardsnowden" autocapitalize="off" autocorrect="off"></p>
<p><input class="btn btn-Action" type="submit" value="Ban"></p>
<p><input class="btn btn-Action" type="submit" value="Upgrade to Supporter"></p>
</form>
</div>
</div>