effective_test_bot 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/helpers/effective_test_bot_helper.rb +19 -22
- data/lib/effective_test_bot/version.rb +1 -1
- data/lib/generators/templates/minitest/test_helper.rb +33 -11
- data/test/fixtures/users.yml +3 -0
- data/test/test_bot/integration/devise/sign_in_test.rb +0 -2
- data/test/test_bot/integration/devise/sign_up_test.rb +25 -0
- data/test/test_bot/integration/minitest_test.rb +79 -0
- data/test/test_bot/models/database_test.rb +16 -16
- metadata +17 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4884b3837c09c059ee9cd8bd3b9a803937007fbf
|
4
|
+
data.tar.gz: d69257b14ead0e0872d5526136bea212e6c09e6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b24f81eaf523bf55420e49764135ddeed87e67eeb4aba786c527070ea81d46bb8bb72cc6090663990717bfce82fcf90fa12cc19ca0b4cc0f6612cf4f5b7d03ad
|
7
|
+
data.tar.gz: 817b26e0068da69b9df9dc73364a1e1ff23cec1a2f781c457d3a64c3c7043a9cffca1784094e0d69a294874fdbe7d4ea4e23aa94a4090a90f30bbd27ddd35a46
|
@@ -1,4 +1,21 @@
|
|
1
1
|
module EffectiveTestBotHelper
|
2
|
+
def as_user(user)
|
3
|
+
sign_in(user); yield; logout
|
4
|
+
end
|
5
|
+
|
6
|
+
def sign_in(user) # Warden::Test::Helpers
|
7
|
+
user.kind_of?(String) == true ? login_as(User.find_by_email(user)) : login_as(user)
|
8
|
+
end
|
9
|
+
|
10
|
+
def sign_in_manually(email, password)
|
11
|
+
visit new_user_session_path
|
12
|
+
|
13
|
+
within('form#new_user') do
|
14
|
+
fill_form(:email => email, :password => password)
|
15
|
+
submit_form
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
2
19
|
def sign_up(email = Faker::Internet.email, password = Faker::Internet.password)
|
3
20
|
visit new_user_registration_path
|
4
21
|
|
@@ -7,34 +24,14 @@ module EffectiveTestBotHelper
|
|
7
24
|
submit_form
|
8
25
|
end
|
9
26
|
|
27
|
+
# These lines seem to need to be here, or minitest.rb 23 blows up.
|
28
|
+
# Some kind of threading issue is fucking with me.
|
10
29
|
assert_equal page.status_code, 200
|
11
30
|
assert_content I18n.t('devise.registrations.signed_up')
|
12
31
|
|
13
32
|
User.find_by_email(email)
|
14
33
|
end
|
15
34
|
|
16
|
-
def sign_in(user) # Warden::Test::Helpers
|
17
|
-
if user.kind_of?(String)
|
18
|
-
login_as(User.find_by_email(user))
|
19
|
-
else
|
20
|
-
login_as(user)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
# def sign_in(user)
|
25
|
-
# visit new_user_session_path
|
26
|
-
|
27
|
-
# within('form#new_user') do
|
28
|
-
# fill_form(:email => email, :password => password)
|
29
|
-
# page.save_screenshot('signin.png')
|
30
|
-
# submit_form
|
31
|
-
# page.save_screenshot('signin2.png')
|
32
|
-
# end
|
33
|
-
|
34
|
-
# assert_equal page.status_code, 200
|
35
|
-
# assert_content I18n.t('devise.sessions.signed_in')
|
36
|
-
# end
|
37
|
-
|
38
35
|
# fill_form(:email => 'somethign@soneone.com', :password => 'blahblah', 'user.last_name' => 'hlwerewr')
|
39
36
|
def fill_form(fills = {})
|
40
37
|
fills = HashWithIndifferentAccess.new(fills)
|
@@ -16,6 +16,7 @@ class ActiveSupport::TestCase
|
|
16
16
|
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
|
17
17
|
fixtures :all
|
18
18
|
# Add more helper methods to be used by all tests here...
|
19
|
+
use_transactional_fixtures = true
|
19
20
|
end
|
20
21
|
|
21
22
|
class ActionDispatch::IntegrationTest
|
@@ -24,28 +25,49 @@ class ActionDispatch::IntegrationTest
|
|
24
25
|
include Capybara::Assertions
|
25
26
|
include Capybara::Screenshot::MiniTestPlugin
|
26
27
|
include Warden::Test::Helpers if defined?(Devise)
|
28
|
+
|
29
|
+
# called before every single test
|
30
|
+
# def setup
|
31
|
+
# end
|
32
|
+
|
33
|
+
# called after every single test
|
34
|
+
def teardown
|
35
|
+
Capybara.reset_sessions!
|
36
|
+
end
|
27
37
|
end
|
28
38
|
|
39
|
+
|
29
40
|
Capybara.default_driver = :webkit
|
30
41
|
Capybara.javascript_driver = :webkit
|
31
42
|
Capybara::Screenshot.autosave_on_failure = true
|
32
43
|
Capybara::Screenshot.prune_strategy = :keep_last_run
|
33
44
|
Capybara::Screenshot.webkit_options = { width: 1024, height: 768 }
|
34
45
|
|
35
|
-
|
46
|
+
Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
|
36
47
|
|
37
|
-
|
48
|
+
### So this is EffectiveTestBot 'code' here
|
49
|
+
### That gets run just once before the whole test suite loads
|
38
50
|
|
51
|
+
# So the very first thing I do is set up a consistent database
|
52
|
+
Rake::Task['db:schema:load'].invoke
|
39
53
|
|
54
|
+
# or the following 3:
|
40
55
|
|
41
|
-
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
# @@shared_connection = nil
|
56
|
+
#Rake::Task['db:drop'].invoke
|
57
|
+
#Rake::Task['db:create'].invoke
|
58
|
+
#Rake::Task['db:migrate'].invoke
|
45
59
|
|
46
|
-
#
|
47
|
-
|
48
|
-
|
49
|
-
#
|
60
|
+
Rake::Task['db:fixtures:load'].invoke # There's just no way to get the seeds first, as this has to delete everything
|
61
|
+
Rake::Task['db:seed'].invoke
|
62
|
+
|
63
|
+
# Make all database transactions use the same thread, otherwise signing up in capybara won't get rolled back
|
64
|
+
# This must be run after the Rake::Tasks above
|
65
|
+
class ActiveRecord::Base
|
66
|
+
mattr_accessor :shared_connection
|
67
|
+
@@shared_connection = nil
|
50
68
|
|
51
|
-
|
69
|
+
def self.connection
|
70
|
+
@@shared_connection || retrieve_connection
|
71
|
+
end
|
72
|
+
end
|
73
|
+
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
if defined?(Devise) && defined?(User)
|
4
|
+
module TestBot
|
5
|
+
class SignUpTest < ActionDispatch::IntegrationTest
|
6
|
+
let(:user) { users(:normal) }
|
7
|
+
|
8
|
+
test 'valid sign up' do
|
9
|
+
visit new_user_registration_path
|
10
|
+
|
11
|
+
email = Faker::Internet.email
|
12
|
+
password = Faker::Internet.password
|
13
|
+
|
14
|
+
within('form#new_user') do
|
15
|
+
fill_form(:email => email, :password => password, :password_confirmation => password)
|
16
|
+
submit_form
|
17
|
+
end
|
18
|
+
|
19
|
+
assert_equal page.status_code, 200
|
20
|
+
assert_content I18n.t('devise.registrations.signed_up')
|
21
|
+
assert User.find_by_email(email).present?
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class MinitestTest < ActionDispatch::IntegrationTest
|
4
|
+
def self.test_order
|
5
|
+
:alpha
|
6
|
+
end
|
7
|
+
|
8
|
+
test 'A: seeds and fixtures loaded' do
|
9
|
+
assert_normal
|
10
|
+
end
|
11
|
+
|
12
|
+
test 'B: i can use activerecord to create a user' do
|
13
|
+
User.new(:email => 'another@agilestyle.com').save(:validate => false)
|
14
|
+
assert_equal 3, User.count
|
15
|
+
end
|
16
|
+
|
17
|
+
test 'C: the test database is back to normal' do
|
18
|
+
assert_normal
|
19
|
+
end
|
20
|
+
|
21
|
+
test 'D: i can use capybara to create a user' do
|
22
|
+
user = sign_up()
|
23
|
+
assert_equal 3, User.count
|
24
|
+
assert_signed_in
|
25
|
+
end
|
26
|
+
|
27
|
+
test 'E: the test database is back to normal' do
|
28
|
+
assert_normal
|
29
|
+
end
|
30
|
+
|
31
|
+
test 'F: i am in a new capybara session, not currently signed in (after signing up in D)' do
|
32
|
+
assert_signed_out
|
33
|
+
sign_in('admin@agilestyle.com')
|
34
|
+
assert_signed_in
|
35
|
+
end
|
36
|
+
|
37
|
+
test 'G: i am still in a new capybara session, not currently signed in' do
|
38
|
+
assert_signed_out
|
39
|
+
sign_in_manually('normal@agilestyle.com', 'password')
|
40
|
+
assert_signed_in
|
41
|
+
end
|
42
|
+
|
43
|
+
test 'H: i can use the with_user helper' do
|
44
|
+
assert_signed_out
|
45
|
+
as_user(User.first) do
|
46
|
+
assert_signed_in
|
47
|
+
end
|
48
|
+
assert_signed_out
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def assert_normal
|
54
|
+
visit root_path
|
55
|
+
assert_equal page.status_code, 200
|
56
|
+
|
57
|
+
assert_equal 2, User.count
|
58
|
+
assert_equal 1, Effective::Menu.count
|
59
|
+
|
60
|
+
assert_equal 'normal@agilestyle.com', User.first.email
|
61
|
+
assert_equal 'admin@agilestyle.com', User.last.email
|
62
|
+
|
63
|
+
assert_equal users(:normal).email, 'normal@agilestyle.com'
|
64
|
+
end
|
65
|
+
|
66
|
+
def assert_signed_in
|
67
|
+
visit new_user_session_path
|
68
|
+
assert_content 'You are already signed in. '
|
69
|
+
refute page.has_selector?('form#new_user')
|
70
|
+
end
|
71
|
+
|
72
|
+
def assert_signed_out
|
73
|
+
visit new_user_session_path
|
74
|
+
refute_content 'You are already signed in. '
|
75
|
+
assert_content 'Log in'
|
76
|
+
assert page.has_selector?('form#new_user')
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
@@ -1,24 +1,24 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
module TestBot
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
# module TestBot
|
4
|
+
# class DatabaseTest < ActiveSupport::TestCase
|
5
|
+
# test 'should be 1 user record available' do
|
6
|
+
# assert_equal 1, User.count
|
7
|
+
# end
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
# test 'should be 0 user records available after delete' do
|
10
|
+
# User.destroy_all
|
11
|
+
# assert_equal 0, User.count
|
12
|
+
# end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
# test 'should be 2 user records if I create one' do
|
15
|
+
# assert_equal 1, User.count
|
16
|
+
# assert User.create(:email => 'someone@somehting.com', :password => '123456789', :password_confirmation => '123456789')
|
17
17
|
|
18
|
-
|
18
|
+
# assert_equal 2, User.count
|
19
19
|
|
20
|
-
|
20
|
+
# end
|
21
21
|
|
22
22
|
|
23
|
-
|
24
|
-
end
|
23
|
+
# end
|
24
|
+
# end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_test_bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -17,7 +17,7 @@ dependencies:
|
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
|
-
type: :
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
|
-
type: :
|
34
|
+
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
@@ -45,7 +45,7 @@ dependencies:
|
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
|
-
type: :
|
48
|
+
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
@@ -59,7 +59,7 @@ dependencies:
|
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
-
type: :
|
62
|
+
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
@@ -73,7 +73,7 @@ dependencies:
|
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
|
-
type: :
|
76
|
+
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
|
-
type: :
|
90
|
+
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
@@ -101,7 +101,7 @@ dependencies:
|
|
101
101
|
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
|
-
type: :
|
104
|
+
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
@@ -115,7 +115,7 @@ dependencies:
|
|
115
115
|
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
|
-
type: :
|
118
|
+
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
@@ -129,7 +129,7 @@ dependencies:
|
|
129
129
|
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
|
-
type: :
|
132
|
+
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
@@ -143,7 +143,7 @@ dependencies:
|
|
143
143
|
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '0'
|
146
|
-
type: :
|
146
|
+
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
@@ -157,7 +157,7 @@ dependencies:
|
|
157
157
|
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '0'
|
160
|
-
type: :
|
160
|
+
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
@@ -171,7 +171,7 @@ dependencies:
|
|
171
171
|
- - ">="
|
172
172
|
- !ruby/object:Gem::Version
|
173
173
|
version: '0'
|
174
|
-
type: :
|
174
|
+
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
@@ -204,8 +204,11 @@ files:
|
|
204
204
|
- spec/features/devise/sign_up_spec.rb
|
205
205
|
- spec/features/home_page_spec.rb
|
206
206
|
- spec/models/user_spec.rb
|
207
|
+
- test/fixtures/users.yml
|
207
208
|
- test/test_bot/integration/devise/sign_in_test.rb
|
209
|
+
- test/test_bot/integration/devise/sign_up_test.rb
|
208
210
|
- test/test_bot/integration/home_page_test.rb
|
211
|
+
- test/test_bot/integration/minitest_test.rb
|
209
212
|
- test/test_bot/models/database_test.rb
|
210
213
|
- test/test_bot/models/user_test.rb
|
211
214
|
homepage: https://github.com/code-and-effect/effective_test_bot
|