mirror of
https://github.com/neocities/neocities.git
synced 2025-04-25 09:42:36 +02:00
initial implementation of stripe mocking
This commit is contained in:
parent
af2c4eea26
commit
81c9a4c94c
4 changed files with 77 additions and 10 deletions
17
Gemfile
17
Gemfile
|
@ -56,17 +56,18 @@ end
|
||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
gem 'faker'
|
gem 'faker'
|
||||||
gem 'fabrication', require: 'fabrication'
|
gem 'fabrication', require: 'fabrication'
|
||||||
gem 'minitest'
|
gem 'minitest'
|
||||||
gem 'minitest-reporters', require: 'minitest/reporters'
|
gem 'minitest-reporters', require: 'minitest/reporters'
|
||||||
gem 'rack-test', require: 'rack/test'
|
gem 'rack-test', require: 'rack/test'
|
||||||
gem 'mocha', require: nil
|
gem 'mocha', require: nil
|
||||||
gem 'rake', require: nil
|
gem 'rake', require: nil
|
||||||
gem 'poltergeist'
|
gem 'poltergeist'
|
||||||
gem 'phantomjs', require: 'phantomjs/poltergeist'
|
gem 'phantomjs', require: 'phantomjs/poltergeist'
|
||||||
gem 'capybara_minitest_spec'
|
gem 'capybara_minitest_spec'
|
||||||
gem 'rack_session_access', require: nil
|
gem 'rack_session_access', require: nil
|
||||||
gem 'webmock', require: nil
|
gem 'webmock', require: nil
|
||||||
|
gem 'stripe-ruby-mock', '~> 2.0.1', require: 'stripe_mock'
|
||||||
|
|
||||||
platform :mri do
|
platform :mri do
|
||||||
gem 'simplecov', require: nil
|
gem 'simplecov', require: nil
|
||||||
|
|
12
Gemfile.lock
12
Gemfile.lock
|
@ -16,6 +16,7 @@ GEM
|
||||||
extlib (>= 0.9.15)
|
extlib (>= 0.9.15)
|
||||||
multi_json (>= 1.0.0)
|
multi_json (>= 1.0.0)
|
||||||
bcrypt (3.1.7)
|
bcrypt (3.1.7)
|
||||||
|
blankslate (3.1.3)
|
||||||
builder (3.2.2)
|
builder (3.2.2)
|
||||||
byebug (2.7.0)
|
byebug (2.7.0)
|
||||||
columnize (~> 0.3)
|
columnize (~> 0.3)
|
||||||
|
@ -41,6 +42,7 @@ GEM
|
||||||
connection_pool (2.0.0)
|
connection_pool (2.0.0)
|
||||||
crack (0.4.2)
|
crack (0.4.2)
|
||||||
safe_yaml (~> 1.0.0)
|
safe_yaml (~> 1.0.0)
|
||||||
|
dante (0.2.0)
|
||||||
dav4rack (0.3.0)
|
dav4rack (0.3.0)
|
||||||
nokogiri (>= 1.4.2)
|
nokogiri (>= 1.4.2)
|
||||||
rack (>= 1.1.0)
|
rack (>= 1.1.0)
|
||||||
|
@ -73,6 +75,11 @@ GEM
|
||||||
hashie (2.0.5)
|
hashie (2.0.5)
|
||||||
hiredis (0.5.0)
|
hiredis (0.5.0)
|
||||||
i18n (0.6.9)
|
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)
|
json (1.8.1)
|
||||||
jwt (0.1.11)
|
jwt (0.1.11)
|
||||||
multi_json (>= 1.5)
|
multi_json (>= 1.5)
|
||||||
|
@ -189,6 +196,10 @@ GEM
|
||||||
json (~> 1.8.1)
|
json (~> 1.8.1)
|
||||||
mime-types (>= 1.25, < 3.0)
|
mime-types (>= 1.25, < 3.0)
|
||||||
rest-client (~> 1.4)
|
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 (0.1.4)
|
||||||
thread_safe (0.3.4)
|
thread_safe (0.3.4)
|
||||||
tilt (1.4.1)
|
tilt (1.4.1)
|
||||||
|
@ -261,6 +272,7 @@ DEPENDENCIES
|
||||||
sinatra-flash
|
sinatra-flash
|
||||||
sinatra-xsendfile
|
sinatra-xsendfile
|
||||||
stripe
|
stripe
|
||||||
|
stripe-ruby-mock (~> 2.0.1)
|
||||||
thread
|
thread
|
||||||
tilt
|
tilt
|
||||||
webmock
|
webmock
|
||||||
|
|
54
tests/acceptance/admin_tests.rb
Normal file
54
tests/acceptance/admin_tests.rb
Normal 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
|
|
@ -52,13 +52,13 @@
|
||||||
|
|
||||||
<div class="col col-50">
|
<div class="col col-50">
|
||||||
<h2>Upgrade to Supporter</h2>
|
<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">
|
<input type="hidden" name="plan_type" value="special">
|
||||||
<%== csrf_token_input_html %>
|
<%== csrf_token_input_html %>
|
||||||
<p>This site will be upgraded to the supporter plan.</p>
|
<p>This site will be upgraded to the supporter plan.</p>
|
||||||
<p>Site Name:</p>
|
<p>Site Name:</p>
|
||||||
<p><input type="text" name="username" placeholder="edwardsnowden" autocapitalize="off" autocorrect="off"></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>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Reference in a new issue