effective_test_bot 0.0.9 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|