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 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