active_delivery 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +53 -21
  4. data/lib/.rbnext/3.0/abstract_notifier/async_adapters/active_job.rb +2 -2
  5. data/lib/.rbnext/3.0/abstract_notifier/base.rb +4 -4
  6. data/lib/.rbnext/3.0/active_delivery/base.rb +8 -8
  7. data/lib/.rbnext/3.0/active_delivery/lines/base.rb +4 -4
  8. data/lib/.rbnext/3.0/active_delivery/testing/minitest.rb +58 -0
  9. data/lib/.rbnext/3.0/active_delivery/testing.rb +1 -0
  10. data/lib/.rbnext/3.1/abstract_notifier/async_adapters/active_job.rb +2 -2
  11. data/lib/.rbnext/3.1/abstract_notifier/base.rb +4 -4
  12. data/lib/.rbnext/3.1/active_delivery/base.rb +8 -8
  13. data/lib/.rbnext/3.1/active_delivery/lines/base.rb +4 -4
  14. data/lib/.rbnext/3.1/active_delivery/testing/minitest.rb +58 -0
  15. data/lib/.rbnext/3.2/abstract_notifier/async_adapters/active_job.rb +36 -0
  16. data/lib/.rbnext/3.2/abstract_notifier/base.rb +223 -0
  17. data/lib/.rbnext/3.2/abstract_notifier/testing/rspec.rb +164 -0
  18. data/lib/.rbnext/3.2/abstract_notifier/testing.rb +53 -0
  19. data/lib/.rbnext/3.2/active_delivery/base.rb +249 -0
  20. data/lib/.rbnext/3.2/active_delivery/lines/base.rb +101 -0
  21. data/lib/.rbnext/3.2/active_delivery/lines/notifier.rb +57 -0
  22. data/lib/.rbnext/3.2/active_delivery/testing/rspec.rb +222 -0
  23. data/lib/abstract_notifier/async_adapters/active_job.rb +2 -2
  24. data/lib/abstract_notifier/base.rb +4 -4
  25. data/lib/abstract_notifier/testing/minitest.rb +1 -1
  26. data/lib/abstract_notifier/testing/rspec.rb +4 -4
  27. data/lib/abstract_notifier/testing.rb +2 -2
  28. data/lib/active_delivery/base.rb +8 -8
  29. data/lib/active_delivery/lines/base.rb +4 -4
  30. data/lib/active_delivery/lines/notifier.rb +6 -6
  31. data/lib/active_delivery/testing/minitest.rb +58 -0
  32. data/lib/active_delivery/testing/rspec.rb +4 -4
  33. data/lib/active_delivery/testing.rb +1 -0
  34. data/lib/active_delivery/version.rb +1 -1
  35. metadata +17 -6
@@ -0,0 +1,101 @@
1
+ # frozen_string_literal: true
2
+
3
+ unless "".respond_to?(:safe_constantize)
4
+ require "active_delivery/ext/string_constantize"
5
+ using ActiveDelivery::Ext::StringConstantize
6
+ end
7
+
8
+ module ActiveDelivery
9
+ module Lines
10
+ class Base
11
+ attr_reader :id, :options
12
+ attr_accessor :owner
13
+ attr_accessor :handler_class_name
14
+
15
+ def initialize(id:, owner:, **options)
16
+ @id = id
17
+ @owner = owner
18
+ @options = options.tap(&:freeze)
19
+ @resolver = options[:resolver] || build_pattern_resolver(options[:resolver_pattern])
20
+ end
21
+
22
+ def dup_for(new_owner)
23
+ self.class.new(id:, **options, owner: new_owner)
24
+ end
25
+
26
+ def resolve_class(name)
27
+ resolver&.call(name)
28
+ end
29
+
30
+ def notify?(method_name)
31
+ handler_class&.respond_to?(method_name)
32
+ end
33
+
34
+ def notify_now(handler, mid, ...)
35
+ end
36
+
37
+ def notify_later(handler, mid, ...)
38
+ end
39
+
40
+ def notify_later_with_options(handler, enqueue_options, mid, ...)
41
+ notify_later(handler, mid, ...)
42
+ end
43
+
44
+ def notify(mid, *__rest__, params:, sync:, enqueue_options:, **__kwrest__)
45
+ clazz = params.empty? ? handler_class : handler_class.with(**params)
46
+ if sync
47
+ return notify_now(clazz, mid, *__rest__, **__kwrest__)
48
+ end
49
+
50
+ if enqueue_options.empty?
51
+ notify_later(clazz, mid, *__rest__, **__kwrest__)
52
+ else
53
+ notify_later_with_options(clazz, enqueue_options, mid, *__rest__, **__kwrest__)
54
+ end
55
+ end
56
+
57
+ def handler_class
58
+ if ::ActiveDelivery.cache_classes
59
+ return @handler_class if instance_variable_defined?(:@handler_class)
60
+ end
61
+
62
+ return @handler_class = nil if owner.abstract_class?
63
+
64
+ superline = owner.superclass.delivery_lines[id] if owner.superclass.respond_to?(:delivery_lines) && owner.superclass.delivery_lines[id]
65
+
66
+ # If an explicit class name has been specified somewhere in the ancestor chain, use it.
67
+ class_name = @handler_class_name || superline&.handler_class_name
68
+
69
+ @handler_class =
70
+ if class_name
71
+ class_name.is_a?(Class) ? class_name : class_name.safe_constantize
72
+ else
73
+ resolve_class(owner) || superline&.handler_class
74
+ end
75
+ end
76
+
77
+ private
78
+
79
+ attr_reader :resolver
80
+
81
+ def build_pattern_resolver(pattern)
82
+ return unless pattern
83
+
84
+ proc do |delivery|
85
+ delivery_class = delivery.name
86
+
87
+ next unless delivery_class
88
+
89
+ *namespace, delivery_name = delivery_class.split("::")
90
+
91
+ delivery_namespace = ""
92
+ delivery_namespace = "#{namespace.join("::")}::" unless namespace.empty?
93
+
94
+ delivery_name = delivery_name.sub(/Delivery$/, "")
95
+
96
+ (pattern % {delivery_class:, delivery_name:, delivery_namespace:}).safe_constantize
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ unless "".respond_to?(:safe_constantize)
4
+ require "active_delivery/ext/string_constantize"
5
+ using ActiveDelivery::Ext::StringConstantize
6
+ end
7
+
8
+ module ActiveDelivery
9
+ module Lines
10
+ # AbstractNotifier line for Active Delivery.
11
+ #
12
+ # You must provide custom `resolver` to infer notifier class
13
+ # (if String#safe_constantize is defined, we convert "*Delivery" -> "*Notifier").
14
+ #
15
+ # Resolver is a callable object.
16
+ class Notifier < ActiveDelivery::Lines::Base
17
+ DEFAULT_SUFFIX = "Notifier"
18
+
19
+ def initialize(**opts)
20
+ super
21
+ @resolver ||= build_resolver(options.fetch(:suffix, DEFAULT_SUFFIX))
22
+ end
23
+
24
+ def resolve_class(klass)
25
+ resolver&.call(klass)
26
+ end
27
+
28
+ def notify?(method_name)
29
+ return unless handler_class
30
+ handler_class.action_methods.include?(method_name.to_s)
31
+ end
32
+
33
+ def notify_now(handler, mid, *__rest__)
34
+ handler.public_send(mid, *__rest__).notify_now
35
+ end
36
+
37
+ def notify_later(handler, mid, *__rest__)
38
+ handler.public_send(mid, *__rest__).notify_later
39
+ end
40
+
41
+ def notify_later_with_options(handler, enqueue_options, mid, *__rest__)
42
+ handler.public_send(mid, *__rest__).notify_later(**enqueue_options)
43
+ end
44
+
45
+ private
46
+
47
+ attr_reader :resolver
48
+
49
+ def build_resolver(suffix)
50
+ lambda do |klass|
51
+ klass_name = klass.name
52
+ klass_name&.sub(/Delivery\z/, suffix)&.safe_constantize
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,222 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveDelivery
4
+ class HaveDeliveredTo < RSpec::Matchers::BuiltIn::BaseMatcher
5
+ attr_reader :delivery_class, :event, :args, :kwargs, :params, :sync_value
6
+
7
+ def initialize(delivery_class, event = nil, *args, **kwargs)
8
+ @delivery_class = delivery_class
9
+ @event = event
10
+ @args = args
11
+ @kwargs = kwargs
12
+ set_expected_number(:exactly, 1)
13
+ end
14
+
15
+ def with(params)
16
+ @params = params
17
+ self
18
+ end
19
+
20
+ def synchronously
21
+ @sync_value = true
22
+ self
23
+ end
24
+
25
+ def exactly(count)
26
+ set_expected_number(:exactly, count)
27
+ self
28
+ end
29
+
30
+ def at_least(count)
31
+ set_expected_number(:at_least, count)
32
+ self
33
+ end
34
+
35
+ def at_most(count)
36
+ set_expected_number(:at_most, count)
37
+ self
38
+ end
39
+
40
+ def times
41
+ self
42
+ end
43
+
44
+ def once
45
+ exactly(:once)
46
+ end
47
+
48
+ def twice
49
+ exactly(:twice)
50
+ end
51
+
52
+ def thrice
53
+ exactly(:thrice)
54
+ end
55
+
56
+ def supports_block_expectations?
57
+ true
58
+ end
59
+
60
+ def matches?(proc)
61
+ raise ArgumentError, "have_delivered_to only supports block expectations" unless Proc === proc
62
+
63
+ TestDelivery.enable { proc.call }
64
+
65
+ actual_deliveries = TestDelivery.store
66
+
67
+ @matching_deliveries, @unmatching_deliveries =
68
+ actual_deliveries.partition do |(delivery, options)|
69
+ next false unless delivery_class == delivery.owner.class
70
+
71
+ next false if !sync_value.nil? && (options.fetch(:sync, false) != sync_value)
72
+
73
+ next false unless params.nil? || params === delivery.owner.params
74
+
75
+ next false unless event.nil? || event == delivery.notification
76
+
77
+ actual_args = delivery.params
78
+ actual_kwargs = delivery.options
79
+
80
+ next false unless args.each.with_index.all? do |arg, i|
81
+ arg === actual_args[i]
82
+ end
83
+
84
+ next false unless kwargs.all? do |k, v|
85
+ v === actual_kwargs[k]
86
+ end
87
+
88
+ true
89
+ end
90
+
91
+ @matching_count = @matching_deliveries.size
92
+
93
+ case @expectation_type
94
+ when :exactly then @expected_number == @matching_count
95
+ when :at_most then @expected_number >= @matching_count
96
+ when :at_least then @expected_number <= @matching_count
97
+ end
98
+ end
99
+
100
+ def failure_message
101
+ (+"expected to deliver").tap do |msg|
102
+ msg << " :#{event} notification" if event
103
+ msg << " via #{delivery_class}#{sync_value ? " (sync)" : ""} with:"
104
+ msg << "\n - params: #{params_description(params)}" if params
105
+ msg << "\n - args: #{args.empty? ? "<none>" : args}"
106
+ msg << "\n#{message_expectation_modifier}, but"
107
+
108
+ if @unmatching_deliveries.any?
109
+ msg << " delivered the following unexpected notifications:"
110
+ msg << deliveries_description(@unmatching_deliveries)
111
+ elsif @matching_count.positive?
112
+ msg << " delivered #{@matching_count} matching notifications" \
113
+ " (#{count_failure_message}):"
114
+ msg << deliveries_description(@matching_deliveries)
115
+ else
116
+ msg << " haven't delivered anything"
117
+ end
118
+ end
119
+ end
120
+
121
+ private
122
+
123
+ def set_expected_number(relativity, count)
124
+ @expectation_type = relativity
125
+ @expected_number =
126
+ case count
127
+ when :once then 1
128
+ when :twice then 2
129
+ when :thrice then 3
130
+ else Integer(count)
131
+ end
132
+ end
133
+
134
+ def failure_message_when_negated
135
+ "expected not to deliver #{event ? " :#{event} notification" : ""} via #{delivery_class}"
136
+ end
137
+
138
+ def message_expectation_modifier
139
+ number_modifier = (@expected_number == 1) ? "once" : "#{@expected_number} times"
140
+ case @expectation_type
141
+ when :exactly then "exactly #{number_modifier}"
142
+ when :at_most then "at most #{number_modifier}"
143
+ when :at_least then "at least #{number_modifier}"
144
+ end
145
+ end
146
+
147
+ def count_failure_message
148
+ diff = @matching_count - @expected_number
149
+ if diff.positive?
150
+ "#{diff} extra item(s)"
151
+ else
152
+ "#{diff} missing item(s)"
153
+ end
154
+ end
155
+
156
+ def deliveries_description(deliveries)
157
+ deliveries.each.with_object(+"") do |(delivery, options), msg|
158
+ msg << "\n :#{delivery.notification} via #{delivery.owner.class}" \
159
+ "#{options[:sync] ? " (sync)" : ""}" \
160
+ " with:" \
161
+ "\n - params: #{delivery.owner.params.empty? ? "<none>" : delivery.owner.params.inspect}" \
162
+ "\n - args: #{delivery.params}" \
163
+ "\n - kwargs: #{delivery.options}"
164
+ end
165
+ end
166
+
167
+ def params_description(data)
168
+ if data.is_a?(RSpec::Matchers::Composable)
169
+ data.description
170
+ else
171
+ data
172
+ end
173
+ end
174
+ end
175
+
176
+ class DeliverVia < RSpec::Matchers::BuiltIn::BaseMatcher
177
+ attr_reader :lines
178
+
179
+ def initialize(*lines)
180
+ @actual_lines = []
181
+ @lines = lines.sort
182
+ end
183
+
184
+ def supports_block_expectations?
185
+ true
186
+ end
187
+
188
+ def matches?(proc)
189
+ raise ArgumentError, "deliver_via only supports block expectations" unless Proc === proc
190
+
191
+ TestDelivery.lines.clear
192
+
193
+ proc.call
194
+
195
+ @actual_lines = TestDelivery.lines.sort
196
+
197
+ lines == @actual_lines
198
+ end
199
+
200
+ private
201
+
202
+ def failure_message
203
+ "expected to deliver via #{lines.join(", ")} lines, but delivered to #{@actual_lines.any? ? @actual_lines.join(", ") : "none"}"
204
+ end
205
+ end
206
+ end
207
+
208
+ RSpec.configure do |config|
209
+ config.include(Module.new do
210
+ def have_delivered_to(*__rest__)
211
+ ActiveDelivery::HaveDeliveredTo.new(*__rest__)
212
+ end
213
+ end)
214
+
215
+ config.include(Module.new do
216
+ def deliver_via(*__rest__)
217
+ ActiveDelivery::DeliverVia.new(*__rest__)
218
+ end
219
+ end, type: :delivery)
220
+ end
221
+
222
+ RSpec::Matchers.define_negated_matcher :have_not_delivered_to, :have_delivered_to
@@ -22,8 +22,8 @@ module AbstractNotifier
22
22
  job.set(queue:).perform_later(...)
23
23
  end
24
24
 
25
- def enqueue_delivery(delivery, **opts)
26
- job.set(queue:, **opts).perform_later(
25
+ def enqueue_delivery(delivery, **)
26
+ job.set(queue:, **).perform_later(
27
27
  delivery.notifier_class.name,
28
28
  delivery.action_name,
29
29
  **delivery.delivery_params
@@ -23,9 +23,9 @@ module AbstractNotifier
23
23
 
24
24
  alias_method :notification, :processed
25
25
 
26
- def notify_later(**opts)
26
+ def notify_later(**)
27
27
  if notifier_class.async_adapter.respond_to?(:enqueue_delivery)
28
- notifier_class.async_adapter.enqueue_delivery(self, **opts)
28
+ notifier_class.async_adapter.enqueue_delivery(self, **)
29
29
  else
30
30
  notifier_class.async_adapter.enqueue(notifier_class.name, action_name, params:, args:, kwargs:)
31
31
  end
@@ -73,8 +73,8 @@ module AbstractNotifier
73
73
  end
74
74
  # rubocop:enable Style/MethodMissingSuper
75
75
 
76
- def respond_to_missing?(*args)
77
- notifier_class.respond_to_missing?(*args)
76
+ def respond_to_missing?(*)
77
+ notifier_class.respond_to_missing?(*)
78
78
  end
79
79
  end
80
80
 
@@ -19,7 +19,7 @@ module AbstractNotifier
19
19
 
20
20
  def assert_notifications_enqueued(count, params)
21
21
  yield
22
- assert_equal enqueued_deliveries.count, count
22
+ assert_equal count, enqueued_deliveries.count
23
23
  count.times do |i|
24
24
  delivery = enqueued_deliveries[0 - i]
25
25
  if !params[:via]
@@ -153,12 +153,12 @@ end
153
153
 
154
154
  RSpec.configure do |config|
155
155
  config.include(Module.new do
156
- def have_sent_notification(*args)
157
- AbstractNotifier::HaveSentNotification.new(*args)
156
+ def have_sent_notification(*)
157
+ AbstractNotifier::HaveSentNotification.new(*)
158
158
  end
159
159
 
160
- def have_enqueued_notification(*args)
161
- AbstractNotifier::HaveEnqueuedNotification.new(*args)
160
+ def have_enqueued_notification(*)
161
+ AbstractNotifier::HaveEnqueuedNotification.new(*)
162
162
  end
163
163
  end)
164
164
  end
@@ -36,12 +36,12 @@ module AbstractNotifier
36
36
  Driver.send_notification payload.merge(via: notifier.class)
37
37
  end
38
38
 
39
- def notify_later(**opts)
39
+ def notify_later(**)
40
40
  return super unless AbstractNotifier.test?
41
41
 
42
42
  payload = notification.payload
43
43
 
44
- Driver.enqueue_notification payload.merge(via: notifier.class, **opts)
44
+ Driver.enqueue_notification payload.merge(via: notifier.class, **)
45
45
  end
46
46
  end
47
47
  end
@@ -77,8 +77,8 @@ module ActiveDelivery
77
77
 
78
78
  # The same as .notify but delivers synchronously
79
79
  # (i.e. #deliver_now for mailers)
80
- def notify!(mid, *args, **hargs)
81
- notify(mid, *args, **hargs, sync: true)
80
+ def notify!(mid, *, **hargs)
81
+ notify(mid, *, **hargs, sync: true)
82
82
  end
83
83
 
84
84
  alias_method :notify_now, :notify!
@@ -93,7 +93,7 @@ module ActiveDelivery
93
93
  end
94
94
  end
95
95
 
96
- def register_line(line_id, line_class = nil, notifier: nil, **options)
96
+ def register_line(line_id, line_class = nil, notifier: nil, **)
97
97
  raise ArgumentError, "A line class or notifier configuration must be provided" if line_class.nil? && notifier.nil?
98
98
 
99
99
  # Configure Notifier
@@ -101,7 +101,7 @@ module ActiveDelivery
101
101
  line_class = ActiveDelivery::Lines::Notifier
102
102
  end
103
103
 
104
- delivery_lines[line_id] = line_class.new(id: line_id, owner: self, **options)
104
+ delivery_lines[line_id] = line_class.new(id: line_id, owner: self, **)
105
105
 
106
106
  instance_eval <<~CODE, __FILE__, __LINE__ + 1
107
107
  def #{line_id}(val)
@@ -152,13 +152,13 @@ module ActiveDelivery
152
152
  super
153
153
  end
154
154
 
155
- def method_missing(mid, *args, **kwargs)
155
+ def method_missing(mid, *, **)
156
156
  return super unless respond_to_missing?(mid)
157
157
 
158
158
  # Lazily define a class method to avoid lookups
159
159
  delivers(mid)
160
160
 
161
- public_send(mid, *args, **kwargs)
161
+ public_send(mid, *, **)
162
162
  end
163
163
  end
164
164
 
@@ -197,7 +197,7 @@ module ActiveDelivery
197
197
  super
198
198
  end
199
199
 
200
- def method_missing(mid, *args, **kwargs)
200
+ def method_missing(mid, *, **)
201
201
  return super unless respond_to_missing?(mid)
202
202
 
203
203
  # Lazily define a method to avoid future lookups
@@ -211,7 +211,7 @@ module ActiveDelivery
211
211
  end
212
212
  CODE
213
213
 
214
- public_send(mid, *args, **kwargs)
214
+ public_send(mid, *, **)
215
215
  end
216
216
 
217
217
  protected
@@ -41,16 +41,16 @@ module ActiveDelivery
41
41
  notify_later(handler, mid, ...)
42
42
  end
43
43
 
44
- def notify(mid, *args, params:, sync:, enqueue_options:, **kwargs)
44
+ def notify(mid, *, params:, sync:, enqueue_options:, **)
45
45
  clazz = params.empty? ? handler_class : handler_class.with(**params)
46
46
  if sync
47
- return notify_now(clazz, mid, *args, **kwargs)
47
+ return notify_now(clazz, mid, *, **)
48
48
  end
49
49
 
50
50
  if enqueue_options.empty?
51
- notify_later(clazz, mid, *args, **kwargs)
51
+ notify_later(clazz, mid, *, **)
52
52
  else
53
- notify_later_with_options(clazz, enqueue_options, mid, *args, **kwargs)
53
+ notify_later_with_options(clazz, enqueue_options, mid, *, **)
54
54
  end
55
55
  end
56
56
 
@@ -30,16 +30,16 @@ module ActiveDelivery
30
30
  handler_class.action_methods.include?(method_name.to_s)
31
31
  end
32
32
 
33
- def notify_now(handler, mid, *args)
34
- handler.public_send(mid, *args).notify_now
33
+ def notify_now(handler, mid, *)
34
+ handler.public_send(mid, *).notify_now
35
35
  end
36
36
 
37
- def notify_later(handler, mid, *args)
38
- handler.public_send(mid, *args).notify_later
37
+ def notify_later(handler, mid, *)
38
+ handler.public_send(mid, *).notify_later
39
39
  end
40
40
 
41
- def notify_later_with_options(handler, enqueue_options, mid, *args)
42
- handler.public_send(mid, *args).notify_later(**enqueue_options)
41
+ def notify_later_with_options(handler, enqueue_options, mid, *)
42
+ handler.public_send(mid, *).notify_later(**enqueue_options)
43
43
  end
44
44
 
45
45
  private
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveDelivery
4
+ module TestHelper
5
+ def assert_deliveries(count)
6
+ TestDelivery.enable { yield }
7
+
8
+ assert_equal TestDelivery.store.count, count, "Expected #{count} deliveries, got #{TestDelivery.store.count}"
9
+ end
10
+
11
+ def assert_no_deliveries(&) = assert_deliveries(0, &)
12
+
13
+ def assert_delivery_enqueued(delivery_class, event, count: 1, params: nil, with: nil)
14
+ TestDelivery.enable { yield }
15
+
16
+ deliveries = TestDelivery.store
17
+
18
+ if with
19
+ args = with
20
+ kwargs = args.pop if args.last.is_a?(Hash)
21
+ end
22
+
23
+ matching_deliveries, _unmatching_deliveries =
24
+ deliveries.partition do |(delivery, options)|
25
+ next false if delivery_class != delivery.owner.class
26
+
27
+ next false if event != delivery.notification
28
+
29
+ next false if params && !hash_include?(delivery.owner.params, params)
30
+
31
+ next true unless with
32
+
33
+ actual_args = delivery.params
34
+ actual_kwargs = delivery.options
35
+
36
+ next false unless args.each.with_index.all? do |arg, i|
37
+ arg === actual_args[i]
38
+ end
39
+
40
+ next false unless kwargs.all? do |k, v|
41
+ v === actual_kwargs[k]
42
+ end
43
+
44
+ true
45
+ end
46
+
47
+ assert_equal count, matching_deliveries.count, "Expected #{count} deliveries, got #{deliveries.count}"
48
+ end
49
+
50
+ private
51
+
52
+ def hash_include?(haystack, needle)
53
+ needle.all? do |k, v|
54
+ haystack.key?(k) && haystack[k] == v
55
+ end
56
+ end
57
+ end
58
+ end
@@ -207,14 +207,14 @@ end
207
207
 
208
208
  RSpec.configure do |config|
209
209
  config.include(Module.new do
210
- def have_delivered_to(*args)
211
- ActiveDelivery::HaveDeliveredTo.new(*args)
210
+ def have_delivered_to(*)
211
+ ActiveDelivery::HaveDeliveredTo.new(*)
212
212
  end
213
213
  end)
214
214
 
215
215
  config.include(Module.new do
216
- def deliver_via(*args)
217
- ActiveDelivery::DeliverVia.new(*args)
216
+ def deliver_via(*)
217
+ ActiveDelivery::DeliverVia.new(*)
218
218
  end
219
219
  end, type: :delivery)
220
220
  end
@@ -60,3 +60,4 @@ end
60
60
  ActiveDelivery::Base.prepend ActiveDelivery::TestDelivery
61
61
 
62
62
  require "active_delivery/testing/rspec" if defined?(RSpec::Core)
63
+ require "active_delivery/testing/minitest" if defined?(Minitest::Assertions)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveDelivery
4
- VERSION = "1.1.0"
4
+ VERSION = "1.2.0"
5
5
  end