effective_test_bot 1.5.9 → 1.5.11

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: d7de769d60d59f161b3606b64719f254251dea7834310e440be28ea831263fa5
4
- data.tar.gz: 1979f907166f5a0b445e1498b50bd4476700db1f737b0dea7b92a6dad2277d76
3
+ metadata.gz: ff3684f4325c106f954588537160bf2adb098f279cef78bda3973c3e7ed6b518
4
+ data.tar.gz: 1c46b71f6cb039f06433fc2577ed02d74e075b90774b4cd37c4170e82e0f75fd
5
5
  SHA512:
6
- metadata.gz: '069bb7337b7bb695e4b98c849dc2a939dfe44e082a34ef9259b1b2b2ab50053f9b2fbb98b4190ed04ffc8d718c771c35396488753f02bee94f3e72d4d23d49b8'
7
- data.tar.gz: 762721642757acfdae3953a6de328a306fb798d445e03fcd76a4004fb02f28e67b771392ccf4646948f4d2ea8e1da7a9cbcba2204a24695057e1f2cb68eb6b9e
6
+ metadata.gz: 51f8ee341063d10213250224a5266d46ce2ac8dcf05e123c5d53afb0ef1b0c5dcde375cea28596c17b656007787d78222dc2ee9d6a824b361b087e25cdf72de3
7
+ data.tar.gz: 5d4790594fa21013f9f44c5cf5b9b2ac946394d887efc02c813ee992fb4268832eeee0824ad33db7a2732ad5fdc338f5954e47210c8e4bf539e2967f1e76e760
@@ -1,3 +1,3 @@
1
1
  module EffectiveTestBot
2
- VERSION = '1.5.9'.freeze
2
+ VERSION = '1.5.11'.freeze
3
3
  end
@@ -253,8 +253,9 @@ module EffectiveTestBotAssertions
253
253
  # assert_email :new_user_sign_up
254
254
  # assert_email :new_user_sign_up, to: 'newuser@example.com'
255
255
  # assert_email from: 'admin@example.com'
256
- def assert_email(action = nil, perform: true, to: nil, from: nil, subject: nil, body: nil, message: nil, count: nil, &block)
256
+ def assert_email(action = nil, perform: true, clear: nil, to: nil, from: nil, subject: nil, body: nil, message: nil, count: nil, plain_layout: nil, html_layout: nil, &block)
257
257
  retval = nil
258
+ clear = (count || 0) < 2 if clear.nil?
258
259
 
259
260
  # Clear the queue of any previous emails first
260
261
  if perform
@@ -262,6 +263,11 @@ module EffectiveTestBotAssertions
262
263
  raise('expected empty mailer queue. unable to clear it.') unless (assert_email_perform_enqueued_jobs.to_i == 0)
263
264
  end
264
265
 
266
+ if clear
267
+ ActionMailer::Base.deliveries.clear
268
+ raise('expected empty mailer deliveries. unable to clear it.') unless (ActionMailer::Base.deliveries.length.to_i == 0)
269
+ end
270
+
265
271
  before = ActionMailer::Base.deliveries.length
266
272
 
267
273
  if block_given?
@@ -277,7 +283,7 @@ module EffectiveTestBotAssertions
277
283
  end
278
284
  end
279
285
 
280
- if (action || to || from || subject || body).nil?
286
+ if (action || to || from || subject || body || plain_layout || html_layout).nil?
281
287
  assert ActionMailer::Base.deliveries.present?, message || "(assert_email) Expected email to have been delivered"
282
288
  return retval
283
289
  end
@@ -287,11 +293,23 @@ module EffectiveTestBotAssertions
287
293
  ActionMailer::Base.deliveries.each do |message|
288
294
  matches = true
289
295
 
296
+ html_body = message.parts.find { |part| part.content_type.start_with?('text/html') }.try(:body).to_s.presence
297
+ plain_body = message.parts.find { |part| part.content_type.start_with?('text/plain') }.try(:body).to_s.presence
298
+ message_body = message.body.to_s
299
+
290
300
  matches &&= (actions.include?(action.to_s)) if action
291
301
  matches &&= (Array(message.to).include?(to)) if to
292
302
  matches &&= (Array(message.from).include?(from)) if from
293
303
  matches &&= (message.subject == subject) if subject
294
- matches &&= (message.body == body) if body
304
+
305
+ if body && html_layout
306
+ matches &&= html_body.to_s.gsub("\r\n", '').gsub("\n", '').include?(">#{body}<")
307
+ elsif body
308
+ matches &&= (plain_body == body || message_body == body)
309
+ end
310
+
311
+ matches &&= (html_body.present? && html_body.include?('<meta')) if html_layout
312
+ matches &&= (html_body.blank? && plain_body.blank? && message_body.exclude?('<meta')) if plain_layout
295
313
 
296
314
  return retval if matches
297
315
  end
@@ -302,6 +320,8 @@ module EffectiveTestBotAssertions
302
320
  ("from: {from}" if from),
303
321
  ("subject: #{subject}" if subject),
304
322
  ("body: #{body}" if body),
323
+ ("an HTML layout" if html_layout),
324
+ ("no HTML layout" if plain_layout),
305
325
  ].compact.to_sentence
306
326
 
307
327
  assert false, message || "(assert_email) Expected email with #{expected} to have been delivered"
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.5.9
4
+ version: 1.5.11
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: 2024-05-07 00:00:00.000000000 Z
11
+ date: 2024-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails