effective_test_bot 1.1.34 → 1.2.2

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
  SHA256:
3
- metadata.gz: cbc62ecd64fb4cb7347234c1d202b2cedaa79f65522d08d3b1cc9c4910b41982
4
- data.tar.gz: ad97cd5e6a5102265456a761f92b9923ef1556aa2df9fbc0db0de3c00c35d8dd
3
+ metadata.gz: 647d5dd319259ed9c24df5ffc927e84a8c10e8a5dba646c51a4b986ce4a770a1
4
+ data.tar.gz: 043afb956e64b693898b2c3d640b6498217f01781cf2fbba34d20e2a02587e80
5
5
  SHA512:
6
- metadata.gz: 259356daa7725ae3cc06eb278904eac48beca8383fbed43db425de744f7980ec7fc2b51f116889124baa6ea4312a4f4e4fe76fce1fae1367ac93dfa5af733c28
7
- data.tar.gz: b8bd1757017c4e95d71d49040dd6f18a29bfc45cdc569f726c52315bc0d82bf75e25678de4b1b0dda47debbe4c8888ef1329bc4cc0594cc42420d89580299122
6
+ metadata.gz: 31dd6ecaa5eaf1a2ace0a162c994e7bafd3c67eb0997cc924fdaa0bce2c74e79d00337cd5bbff05472ab8f0f76e7c70b30428326c96fef7f48dd5feb810ca05f
7
+ data.tar.gz: 5fa422b2fe60f3e4c9ad057e77ed6335c41d273b6ddb563db20b674d3f1363a1dfe2a08f4ed59b6256d16a04c601a44cd047677d2479c76bacbbeda1b6f5073f
@@ -58,10 +58,10 @@ module EffectiveTestBotControllerHelper
58
58
  case object
59
59
  when ActiveRecord::Base
60
60
  assigns[key] = object.attributes
61
- assigns[key][:errors] = object.errors.messages.delete_if { |_, v| v.blank? } if object.errors.present?
61
+ assigns[key][:errors] = object.errors.messages.select { |_, v| v.present? } if object.errors.present?
62
62
  when (ActiveModel::Model rescue nil)
63
63
  assigns[key] = object.respond_to?(:attributes) ? object.attributes : { present_but_not_serialized: true }
64
- assigns[key][:errors] = object.errors.messages.delete_if { |_, v| v.blank? } if object.errors.present?
64
+ assigns[key][:errors] = object.errors.messages.select { |_, v| v.present? } if object.errors.present?
65
65
  when TrueClass, FalseClass, NilClass, String, Symbol, Numeric
66
66
  assigns[key] = object
67
67
  else
@@ -5,26 +5,23 @@ require 'effective_test_bot/middleware'
5
5
  require 'effective_test_bot/version'
6
6
 
7
7
  module EffectiveTestBot
8
- mattr_accessor :user
9
- mattr_accessor :except
10
- mattr_accessor :only
11
- mattr_accessor :fail_fast
12
- mattr_accessor :form_fills
13
- mattr_accessor :screenshots
14
- mattr_accessor :autosave_animated_gif_on_failure
15
- mattr_accessor :tour_mode
16
- mattr_accessor :tour_mode_extreme
17
- mattr_accessor :animated_gif_delay
18
- mattr_accessor :animated_gif_background_color
19
- mattr_accessor :image_processing_class_name
20
- mattr_accessor :backtrace_lines
21
- mattr_accessor :silence_skipped_routes
22
-
23
- mattr_accessor :passed_tests # This isn't a config variable.
24
-
25
- def self.setup
26
- yield self
27
- end
8
+ mattr_accessor :passed_tests
9
+
10
+ def self.config_keys
11
+ [
12
+ :user,
13
+ :except, :only,
14
+ :fail_fast,
15
+ :form_fills,
16
+ :screenshots, :autosave_animated_gif_on_failure,
17
+ :tour_mode, :tour_mode_extreme,
18
+ :animated_gif_delay, :animated_gif_background_color,
19
+ :image_processing_class_name,
20
+ :backtrace_lines, :silence_skipped_routes
21
+ ]
22
+ end
23
+
24
+ include EffectiveGem
28
25
 
29
26
  # Test could be something like "crud_test", "crud_test (documents#new)", "documents", documents#new"
30
27
  # Assertion will be page_title, or flash
@@ -1,3 +1,3 @@
1
1
  module EffectiveTestBot
2
- VERSION = '1.1.34'.freeze
2
+ VERSION = '1.2.2'.freeze
3
3
  end
@@ -10,13 +10,14 @@ module EffectiveTestBotAssertions
10
10
  def assert_signed_in(message: 'Expected @current_user to be present when signed in')
11
11
  visit(root_path)
12
12
  assert_page_normal
13
- assert assigns['current_user'].present?, message
13
+
14
+ assert assigns[current_user_assigns_key].present?, message
14
15
  end
15
16
 
16
17
  def assert_signed_out(message: 'Expected @current_user to be blank when signed out')
17
18
  visit(root_path)
18
19
  assert_page_normal
19
- assert assigns['current_user'].blank?, message
20
+ assert assigns[current_user_assigns_key].blank?, message
20
21
  end
21
22
 
22
23
  def assert_no_exceptions(message: "(no_exceptions) Unexpected rails server exception:\n:exception:")
@@ -209,35 +210,39 @@ module EffectiveTestBotAssertions
209
210
 
210
211
  def assert_no_email(&block)
211
212
  before = ActionMailer::Base.deliveries.map { |mail| {to: mail.to, subject: mail.subject} }
212
- yield
213
+ retval = yield
213
214
  after = ActionMailer::Base.deliveries.map { |mail| {to: mail.to, subject: mail.subject} }
214
215
 
215
216
  diff = (after - before)
216
217
 
217
218
  assert diff.blank?, "(assert_no_email) #{diff.length} unexpected emails delivered: #{diff}"
219
+ retval
218
220
  end
219
221
 
220
222
  # assert_effective_log { click_on('download.txt') }
221
- def assert_effective_log(status: nil)
223
+ def assert_effective_log(status: nil, &block)
222
224
  raise('EffectiveLogging is not defined') unless defined?(EffectiveLogging)
223
225
  raise('expected a block') unless block_given?
224
226
 
225
227
  logs = (status.present? ? Effective::Log.where(status: status).all : Effective::Log.all)
226
228
 
227
229
  before = logs.count
228
- yield
230
+ retval = yield
229
231
  after = logs.count
230
232
 
231
233
  assert (after - before == 1), "(assert_effective_log) Expected one log to have been created"
234
+ retval
232
235
  end
233
236
 
234
237
  # assert_email :new_user_sign_up
235
238
  # assert_email :new_user_sign_up, to: 'newuser@example.com'
236
239
  # assert_email from: 'admin@example.com'
237
240
  def assert_email(action = nil, to: nil, from: nil, subject: nil, body: nil, message: nil, count: nil, &block)
241
+ retval = nil
242
+
238
243
  if block_given?
239
244
  before = ActionMailer::Base.deliveries.length
240
- yield
245
+ retval = yield
241
246
  difference = (ActionMailer::Base.deliveries.length - before)
242
247
 
243
248
  if count.present?
@@ -249,7 +254,7 @@ module EffectiveTestBotAssertions
249
254
 
250
255
  if (action || to || from || subject || body).nil?
251
256
  assert ActionMailer::Base.deliveries.present?, message || "(assert_email) Expected email to have been delivered"
252
- return
257
+ return retval
253
258
  end
254
259
 
255
260
  actions = ActionMailer::Base.instance_variable_get(:@mailer_actions)
@@ -263,7 +268,7 @@ module EffectiveTestBotAssertions
263
268
  matches &&= (message.subject == subject) if subject
264
269
  matches &&= (message.body == body) if body
265
270
 
266
- return if matches
271
+ return retval if matches
267
272
  end
268
273
 
269
274
  expected = [
@@ -9,7 +9,7 @@ module EffectiveTestBotFormFiller
9
9
  tabs = all("a[data-toggle='tab']", wait: false)
10
10
 
11
11
  # If there's only 1 tab, just fill it out
12
- (fill_form_fields(fills) and return) unless tabs.length > 1
12
+ return fill_form_fields(fills) unless tabs.length > 1
13
13
 
14
14
  # If there's more than one tab:
15
15
  # We first fill in all fields that are outside of the tab-content
@@ -50,9 +50,10 @@ module EffectiveTestBotFormFiller
50
50
 
51
51
  # Only fills in visible fields
52
52
  # fill_form(:email => 'somethign@soneone.com', :password => 'blahblah', 'user.last_name' => 'hlwerewr')
53
- def fill_form_fields(fills = {}, debug: false)
53
+ def fill_form_fields(fills = {})
54
54
  save_test_bot_screenshot
55
55
 
56
+ debug = fills.delete(:debug)
56
57
  seen = {}
57
58
 
58
59
  5.times do
@@ -10,11 +10,13 @@ module EffectiveTestBotLoginHelper
10
10
  # This is currently hardcoded to use the warden login_as test helper
11
11
  def sign_in(user)
12
12
  if user.kind_of?(String)
13
- login_as(User.find_by_email!(user))
14
- elsif user.kind_of?(User)
13
+ login_as(devise_user_class.find_by_email!(user))
14
+ elsif user.class.name.end_with?('User')
15
15
  raise 'user must be persisted' unless user.persisted?
16
16
  user.reload
17
- login_as(user)
17
+
18
+ devise_scope = user.class.name.underscore.gsub('/', '_').to_sym
19
+ login_as(user, scope: devise_scope)
18
20
  elsif user == false
19
21
  true # Do nothing
20
22
  else
@@ -28,31 +30,38 @@ module EffectiveTestBotLoginHelper
28
30
  end
29
31
 
30
32
  def sign_in_manually(user_or_email, password = nil)
31
- visit new_user_session_path
33
+ visit (respond_to?(:new_user_session_path) ? new_user_session_path : '/users/sign_in')
32
34
 
33
35
  email = (user_or_email.respond_to?(:email) ? user_or_email.email : user_or_email)
34
36
  username = (user_or_email.respond_to?(:username) ? user_or_email.username : user_or_email)
35
37
  login = (user_or_email.respond_to?(:login) ? user_or_email.login : user_or_email)
36
38
 
37
- within('form#new_user') do
39
+ within('form[id^=new][id$=user]') do
38
40
  fill_form(email: email, password: password, username: username, login: login)
39
41
  submit_novalidate_form
40
42
  end
41
43
  end
42
44
 
43
45
  def sign_up(email: Faker::Internet.email, password: Faker::Internet.password, **options)
44
- visit new_user_registration_path
46
+ visit (respond_to?(:new_user_registration_path) ? new_user_registration_path : '/users/sign_up')
45
47
 
46
- within('form#new_user') do
48
+ within('form[id^=new][id$=user]') do
47
49
  fill_form({email: email, password: password, password_confirmation: password}.merge(options))
48
50
  submit_novalidate_form
49
51
  end
50
52
 
51
- User.find_by_email(email)
53
+ devise_user_class.find_by_email(email)
52
54
  end
53
55
 
54
56
  def current_user
55
- User.where(id: assigns['current_user']['id']).first if (assigns['current_user'] && assigns['current_user']['id'])
57
+ user_id = assigns.dig(current_user_assigns_key, 'id')
58
+ return if user_id.blank?
59
+
60
+ devise_user_class.where(id: user_id).first
61
+ end
62
+
63
+ def devise_user_class
64
+ (current_user_assigns_class || User)
56
65
  end
57
66
 
58
67
  end
@@ -93,6 +93,14 @@ module EffectiveTestBotTestHelper
93
93
  key ? assigns[key.to_s] : assigns
94
94
  end
95
95
 
96
+ def current_user_assigns_key
97
+ assigns.keys.find { |key| key.start_with?('current_') && key.end_with?('_user') } || 'current_user'
98
+ end
99
+
100
+ def current_user_assigns_class
101
+ current_user_assigns_key.sub('current_').gsub('_', '::').classify.safe_constantize
102
+ end
103
+
96
104
  def access_denied_exception
97
105
  return nil unless (page.evaluate_script('window.effective_test_bot.access_denied') rescue nil).present?
98
106
 
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: 1.1.34
4
+ version: 1.2.2
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: 2021-02-04 00:00:00.000000000 Z
11
+ date: 2021-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails