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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ca2f722e3174553530be2e1eae95a8fd11e2c1a
4
- data.tar.gz: 83fb3de8d5badc7e53da0acf3bfd3a946fcdebb6
3
+ metadata.gz: 4884b3837c09c059ee9cd8bd3b9a803937007fbf
4
+ data.tar.gz: d69257b14ead0e0872d5526136bea212e6c09e6d
5
5
  SHA512:
6
- metadata.gz: eb36895d03446487eceb5fb3d7884658d47b63b0eefc1876336d9bf39a7de120108b62170debfa53a8e0124ef2049e5792949b2429785f42fe08374ea75c1560
7
- data.tar.gz: 2e0d29eaa11493cd1f4685022b0574591016f59d77d2679080d25e1d7f85729a70c322c28dadb78d95c63aa2732d521dccf77ec6f85abfaf68100f53f2a3d3e3
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)
@@ -1,3 +1,3 @@
1
1
  module EffectiveTestBot
2
- VERSION = '0.0.9'.freeze
2
+ VERSION = '0.0.10'.freeze
3
3
  end
@@ -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
- Rake::Task['db:seed'].invoke
46
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
36
47
 
37
- #Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
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
- # # Make all database transactions use the same thread
42
- # class ActiveRecord::Base
43
- # mattr_accessor :shared_connection
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
- # def self.connection
47
- # @@shared_connection || retrieve_connection
48
- # end
49
- # end
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
- # ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
69
+ def self.connection
70
+ @@shared_connection || retrieve_connection
71
+ end
72
+ end
73
+ ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
@@ -0,0 +1,3 @@
1
+ normal:
2
+ email: 'normal@agilestyle.com'
3
+ encrypted_password: <%= puts "FIXTURES RUN"; Devise::Encryptor.digest(User, 'password') %>
@@ -23,8 +23,6 @@ if defined?(Devise) && defined?(User)
23
23
  test 'invalid sign in' do
24
24
  visit new_user_session_path
25
25
 
26
- binding.pry
27
-
28
26
  within('form#new_user') do
29
27
  fill_in 'user_email', with: user.email
30
28
  fill_in 'user_password', with: 'not-correct-password'
@@ -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
- class DatabaseTest < ActiveSupport::TestCase
5
- test 'should be 1 user record available' do
6
- assert_equal 1, User.count
7
- end
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
- test 'should be 0 user records available after delete' do
10
- User.destroy_all
11
- assert_equal 0, User.count
12
- end
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
- 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')
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
- assert_equal 2, User.count
18
+ # assert_equal 2, User.count
19
19
 
20
- end
20
+ # end
21
21
 
22
22
 
23
- end
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.9
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-16 00:00:00.000000000 Z
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: :development
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: :development
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: :development
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: :development
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: :development
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: :development
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: :development
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: :development
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: :development
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: :development
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: :development
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: :development
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