use_cases 1.1.0 → 1.1.1
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/use_cases/events/event_registry.rb +23 -0
- data/lib/use_cases/events/publish_job.rb +5 -3
- data/lib/use_cases/events/publisher.rb +3 -1
- data/lib/use_cases/events/subscriber.rb +4 -2
- data/lib/use_cases/module_optins/authorized.rb +2 -2
- data/lib/use_cases/module_optins/publishing.rb +5 -21
- data/lib/use_cases/module_optins.rb +1 -1
- data/lib/use_cases/rspec/matchers.rb +1 -1
- data/lib/use_cases/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c61b0fc85c1ed9ffdee1bc0f03b6991a7fcd9b64bb502e5b6859e5e124865068
|
4
|
+
data.tar.gz: b99383f71920f2c376e2bb197e4a7be3140630b36dcd33b3169bc15582adc5ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93f9d4b5b4f7492ac49d142b51336b6837c3ad8ff54706a1fa363bd851bd6f7d366e6131bb5e8399ef32de8e38608c07f33c8794ab7cb5fd571e6450b8f866f6
|
7
|
+
data.tar.gz: ea72716e2909d65ec10904df231262ba6104cab8e564eb99129f1ba2adfaf2a43b1e93b5ab7c1285aa3e72f76d52b9440e65ce2c7a5a903ae191685f4bee3a39
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module UseCases
|
4
|
+
module Events
|
5
|
+
class EventRegistry
|
6
|
+
def self.register(event_id)
|
7
|
+
event_ids << event_id
|
8
|
+
listener_name = ["on", event_id].join("_").gsub(".", "_")
|
9
|
+
UseCases.publisher.register_event(event_id)
|
10
|
+
|
11
|
+
UseCases.subscribers.each do |subscriber|
|
12
|
+
next if !subscriber.respond_to?(listener_name) || UseCases.publisher.subscribed?(subscriber.method(listener_name))
|
13
|
+
|
14
|
+
UseCases.publisher.subscribe(subscriber)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.event_ids
|
19
|
+
@event_ids ||= []
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,12 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
3
|
return unless defined? ActiveJob
|
3
4
|
|
4
5
|
module UseCases
|
5
6
|
module Events
|
6
7
|
class PublishJob < ActiveJob::Base
|
7
|
-
def perform(
|
8
|
-
|
9
|
-
|
8
|
+
def perform(event_id, payload)
|
9
|
+
event_id += ".async"
|
10
|
+
Events::EventRegistry.register(event_id)
|
11
|
+
UseCases.publisher.publish(event_id, payload)
|
10
12
|
end
|
11
13
|
end
|
12
14
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "dry/events/publisher"
|
2
4
|
|
3
5
|
module UseCases
|
@@ -16,7 +18,7 @@ module UseCases
|
|
16
18
|
|
17
19
|
def publish(event_name, payload)
|
18
20
|
super
|
19
|
-
PublishJob.perform_later(event_name, payload) if defined?(PublishJob)
|
21
|
+
PublishJob.perform_later(event_name, payload) if defined?(PublishJob) && !event_name.to_s.end_with?(".async")
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module UseCases
|
2
4
|
module Events
|
3
5
|
module Subscriber
|
@@ -6,8 +8,8 @@ module UseCases
|
|
6
8
|
end
|
7
9
|
|
8
10
|
def should_subscribe_to?(event_name)
|
9
|
-
event_handler_name = "on_#{event_name.gsub(
|
10
|
-
|
11
|
+
event_handler_name = "on_#{event_name.gsub(".", "_")}"
|
12
|
+
|
11
13
|
respond_to?(event_handler_name.to_sym)
|
12
14
|
end
|
13
15
|
end
|
@@ -17,10 +17,10 @@ module UseCases
|
|
17
17
|
failure: :unauthorized,
|
18
18
|
failure_message: "Not Authorized",
|
19
19
|
merge_input_as: :resource
|
20
|
-
}
|
20
|
+
}.freeze
|
21
21
|
|
22
22
|
def authorize(name, options = {})
|
23
|
-
options = DEFAULT_OPTIONS.merge(options)
|
23
|
+
options = DEFAULT_OPTIONS.merge(options)
|
24
24
|
|
25
25
|
check name, options
|
26
26
|
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
require "use_cases/events/publisher"
|
4
4
|
require "use_cases/events/subscriber"
|
5
5
|
require "use_cases/events/publish_job"
|
6
|
+
require "use_cases/events/event_registry"
|
6
7
|
|
7
8
|
module UseCases
|
8
9
|
module ModuleOptins
|
@@ -15,7 +16,10 @@ module UseCases
|
|
15
16
|
module StepPatch
|
16
17
|
def initialize(*)
|
17
18
|
super
|
18
|
-
|
19
|
+
%w[success failure].map do |event_type|
|
20
|
+
event_id = [options[:publish], event_type].join(".")
|
21
|
+
Events::EventRegistry.register(event_id)
|
22
|
+
end
|
19
23
|
end
|
20
24
|
|
21
25
|
def call(*args)
|
@@ -33,26 +37,6 @@ module UseCases
|
|
33
37
|
UseCases.publisher.publish(key, payload)
|
34
38
|
end
|
35
39
|
|
36
|
-
|
37
|
-
def finalize_subscriptions!
|
38
|
-
event_ids.each do |event_id|
|
39
|
-
listener_name = ['on', event_id].join('_').gsub('.', '_')
|
40
|
-
UseCases.publisher.register_event(event_id)
|
41
|
-
|
42
|
-
UseCases.subscribers.each do |subscriber|
|
43
|
-
next if !subscriber.respond_to?(listener_name) || UseCases.publisher.subscribed?(subscriber.method(listener_name))
|
44
|
-
|
45
|
-
UseCases.publisher.subscribe(subscriber)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def event_ids
|
51
|
-
%w[success failure success.async failure.async].map do |event_type|
|
52
|
-
[options[:publish], event_type].join('.')
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
40
|
private
|
57
41
|
|
58
42
|
def extract_payload(step_result, args)
|
@@ -29,7 +29,7 @@ RSpec::Matchers.define(:be_failure_with_payload) do |expected_result|
|
|
29
29
|
else
|
30
30
|
"the use case was expected to fail but it succeeded with #{test_subject.success.inspect}"
|
31
31
|
end
|
32
|
-
end
|
32
|
+
end
|
33
33
|
end
|
34
34
|
|
35
35
|
RSpec::Matchers.define(:be_failure_with) do |*expected_failure|
|
data/lib/use_cases/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: use_cases
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ring Twice
|
@@ -160,6 +160,7 @@ files:
|
|
160
160
|
- lib/use_case.rb
|
161
161
|
- lib/use_cases.rb
|
162
162
|
- lib/use_cases/dsl.rb
|
163
|
+
- lib/use_cases/events/event_registry.rb
|
163
164
|
- lib/use_cases/events/publish_job.rb
|
164
165
|
- lib/use_cases/events/publisher.rb
|
165
166
|
- lib/use_cases/events/subscriber.rb
|