effective_test_bot 1.1.34 → 1.2.2

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