effective_test_bot 0.6.12 → 0.6.13

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: 92979123ee096f434866473b770ed3a36cae7a30
4
- data.tar.gz: fd9c52fc6709ab4bc59b4c4a1df576cf485298c8
3
+ metadata.gz: ab19f5103e6d6a08812c3a1fe04f64e679576ff5
4
+ data.tar.gz: 814dd84b78ee40413853d9188c9b0f7d8455c85f
5
5
  SHA512:
6
- metadata.gz: 08520b2a3e9925b444f75716bd702c3d89fafb2eae2e309ecd3b383ba6720a78093bcf2e4474e0af1ab18cfe726fb9b715c915faf022901db21a9a9ac7b80969
7
- data.tar.gz: 87afbb19fd69f48e9844757eb97cfff049f0cc5b8b0b710f1d31df4ecfd07038bcd931d23a92340d5b4feca0a09cd9dc2d0985846622f6d09353c9657b70ef09
6
+ metadata.gz: 7cd823aa344c7c77d33b51b809a342472a7b2ecc9e2359aa64a0e9db3c0fd96a2504a27f1b59ee5426abec0214690fcd12e37ae1ad4cf0683bf6d2a298b1fbf1
7
+ data.tar.gz: 4efb3e6bd1a5b92684096bb87cc183cc2c1f25623eef4d40fd247241144d475a190d85dca9e28683b9e4b4fb47a6d5a24d8a1eee49ec2450b89b797dae2fa2d1
@@ -2,7 +2,7 @@ module EffectiveTestBotMailerHelper
2
2
  # This is included to ActionMailer::Base an after_filter
3
3
  # And allows the assert_email assertion to work
4
4
  def assign_test_bot_mailer_info
5
- message.instance_variable_set(:@mailer_class, self.class)
6
- message.instance_variable_set(:@mailer_action, action_name)
5
+ actions = ActionMailer::Base.instance_variable_get(:@mailer_actions)
6
+ ActionMailer::Base.instance_variable_set(:@mailer_actions, Array(actions) + [action_name])
7
7
  end
8
8
  end
@@ -1,3 +1,3 @@
1
1
  module EffectiveTestBot
2
- VERSION = '0.6.12'.freeze
2
+ VERSION = '0.6.13'.freeze
3
3
  end
@@ -93,6 +93,16 @@ module EffectiveTestBotAssertions
93
93
  assert (active.blank? || active.zero?), message.sub(':count:', active.to_s)
94
94
  end
95
95
 
96
+ def assert_no_active_jobs(message = "(no_active_jobs) :count: Unexpected ActiveJob jobs present")
97
+ jobs = if defined?(SuckerPunch)
98
+ SuckerPunch::Queue.all.length
99
+ else
100
+ ActiveJob::Base.queue_adapter.enqueued_jobs.count
101
+ end
102
+
103
+ assert (jobs == 0), message.sub(':count:', jobs.to_s)
104
+ end
105
+
96
106
  def assert_no_js_errors(message = nil)
97
107
  errors = page.driver.error_messages
98
108
  assert errors.blank?, message || "(no_js_errors) Unexpected javascript error:\n#{errors.first.to_s}"
@@ -184,16 +194,17 @@ module EffectiveTestBotAssertions
184
194
  # assert_email :new_user_sign_up, to: 'newuser@example.com'
185
195
  # assert_email from: 'admin@example.com'
186
196
  def assert_email(action = nil, to: nil, from: nil, subject: nil, body: nil, message: nil)
187
-
188
197
  if (action || to || from || subject || body).nil?
189
198
  assert ActionMailer::Base.deliveries.present?, message || "(assert_email) Expected email to have been delivered"
190
199
  return
191
200
  end
192
201
 
202
+ actions = ActionMailer::Base.instance_variable_get(:@mailer_actions)
203
+
193
204
  ActionMailer::Base.deliveries.each do |message|
194
205
  matches = true
195
206
 
196
- matches &&= (message.instance_variable_get(:@mailer_action) == action.to_s) if action
207
+ matches &&= (actions.include?(action.to_s)) if action
197
208
  matches &&= (Array(message.to).include?(to)) if to
198
209
  matches &&= (Array(message.from).include?(from)) if from
199
210
  matches &&= (message.subject == subject) if subject
@@ -64,14 +64,7 @@ module EffectiveTestBotFormHelper
64
64
  # Instead we manually trigger submit buttons and use the data-disable-with to
65
65
  # make the 'submit form' step look nice
66
66
  def click_submit(label, last: false, debug: false)
67
- if label.present?
68
- submit = find(:link_or_button, label, match: :first)
69
- assert submit.present?, "TestBotError: Unable to find a visible submit link or button on #{page.current_path} with the label #{label}"
70
- else
71
- submit = find("input[type='submit'],button[type='submit']", match: :first)
72
- submit = all("input[type='submit'],button[type='submit']").last if last
73
- assert submit.present?, "TestBotError: Unable to find a visible input[type='submit'] or button[type='submit'] on #{page.current_path}"
74
- end
67
+ submit = find_submit(label, last: last)
75
68
 
76
69
  if EffectiveTestBot.screenshots?
77
70
  page.execute_script "$('input[data-disable-with]').each(function(i) { $.rails.disableFormElement($(this)); });"
@@ -80,7 +73,7 @@ module EffectiveTestBotFormHelper
80
73
  end
81
74
 
82
75
  if debug
83
- puts "Clicking: <#{submit.tag_name} id='#{submit['id']}' class='#{submit['class']}' name='#{submit['name']}' value='#{submit['value']}' />"
76
+ puts "Clicking: <#{submit.tag_name} id='#{submit['id']}' class='#{submit['class']}' name='#{submit['name']}' value='#{submit['value']}' href='#{submit['href']}' />"
84
77
  end
85
78
 
86
79
  submit.click
@@ -91,6 +84,29 @@ module EffectiveTestBotFormHelper
91
84
  true
92
85
  end
93
86
 
87
+ # Keys are :value, should be one of :count, :minimum, :maximum, :between, :text, :id, :class, :visible, :exact, :exact_text, :match, :wait, :filter_se
88
+ def find_submit(label, last: false)
89
+ submit = nil
90
+
91
+ if label.present?
92
+ submit = (find("input[type='submit'][value='#{label}'],button[type='submit'][value='#{label}']", match: :first) rescue nil)
93
+ submit ||= find(:link_or_button, label, match: :first)
94
+
95
+ if last
96
+ submit = all("input[type='submit'][value='#{label}'],button[type='submit'][value='#{label}']").last
97
+ submit ||= all('a', text: label).last
98
+ end
99
+
100
+ assert submit.present?, "TestBotError: Unable to find a visible submit link or button on #{page.current_path} with the label #{label}"
101
+ else
102
+ submit = find("input[type='submit'],button[type='submit']", match: :first)
103
+ submit = all("input[type='submit'],button[type='submit']").last if last
104
+ assert submit.present?, "TestBotError: Unable to find a visible input[type='submit'] or button[type='submit'] on #{page.current_path}"
105
+ end
106
+
107
+ submit
108
+ end
109
+
94
110
  def with_raised_unpermitted_params_exceptions(&block)
95
111
  action = nil
96
112
 
@@ -16,6 +16,20 @@ module EffectiveTestBotTestHelper
16
16
  end
17
17
  end
18
18
 
19
+ def wait_for_active_job
20
+ begin
21
+ Timeout.timeout(Capybara.default_max_wait_time * 2) do
22
+ if defined?(SuckerPunch)
23
+ loop until SuckerPunch::Queue.all.length == 0
24
+ else
25
+ loop until ActiveJob::Base.queue_adapter.enqueued_jobs.count == 0
26
+ end
27
+ end
28
+ rescue => e
29
+ assert_no_active_jobs
30
+ end
31
+ end
32
+
19
33
  def finished_all_ajax_requests?
20
34
  ajax_request_count = page.evaluate_script('jQuery.active')
21
35
  ajax_request_count.blank? || ajax_request_count.zero?
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.6.12
4
+ version: 0.6.13
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: 2017-11-10 00:00:00.000000000 Z
11
+ date: 2017-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails