solidus_support 0.8.1 → 0.9.0
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/CHANGELOG.md +42 -10
- data/lib/solidus_support/engine_extensions.rb +18 -12
- data/lib/solidus_support/legacy_event_compat/bus.rb +34 -0
- data/lib/solidus_support/legacy_event_compat/subscriber.rb +54 -0
- data/lib/solidus_support/legacy_event_compat.rb +47 -0
- data/lib/solidus_support/version.rb +1 -1
- data/lib/solidus_support.rb +26 -14
- data/solidus_support.gemspec +1 -0
- data/spec/examples.txt +15 -9
- data/spec/solidus_support/legacy_event_compat/bus_spec.rb +31 -0
- data/spec/solidus_support/legacy_event_compat/legacy_event_compat_spec.rb +93 -0
- data/spec/solidus_support_spec.rb +3 -20
- metadata +28 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c78d734eb4b421be9efa6eb57baee461ef4fe899bb1d734b17f9b467aa6856fd
|
4
|
+
data.tar.gz: eb7ac669aed3124a9b418862abfb9daaaf9f9b6493e278363f437f09bad37c00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9db377ce30fbb4818a7e6a29440b8fd61310f84227e5e9c1f1e21d97c7c14ade8609aed46e4e1abc23afb2e116cef98202597cae4defefe331df6b4b69722bf2
|
7
|
+
data.tar.gz: aa70ce113298641e54738f9362717150d9261744e23ef17d6377724bdfc361882571f2647652273a83ec35bdd20fac89e3630352e92d32601d380dd472512099
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,40 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [Unreleased](https://github.com/solidusio/solidus_support/tree/HEAD)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.8.1...HEAD)
|
6
|
+
|
7
|
+
**Closed issues:**
|
8
|
+
|
9
|
+
- Release 0.5.2 version [\#64](https://github.com/solidusio/solidus_support/issues/64)
|
10
|
+
|
11
|
+
**Merged pull requests:**
|
12
|
+
|
13
|
+
- Compatibility layer for the legacy/new event system [\#70](https://github.com/solidusio/solidus_support/pull/70) ([waiting-for-dev](https://github.com/waiting-for-dev))
|
14
|
+
- Fix dependency on the engines load order when adding paths [\#65](https://github.com/solidusio/solidus_support/pull/65) ([waiting-for-dev](https://github.com/waiting-for-dev))
|
15
|
+
- Remove support for Solidus \<= 2.3 [\#62](https://github.com/solidusio/solidus_support/pull/62) ([elia](https://github.com/elia))
|
16
|
+
- Update the changelog with the latest releases [\#61](https://github.com/solidusio/solidus_support/pull/61) ([elia](https://github.com/elia))
|
17
|
+
|
18
|
+
## [v0.8.1](https://github.com/solidusio/solidus_support/tree/v0.8.1) (2021-01-27)
|
19
|
+
|
20
|
+
[Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.8.0...v0.8.1)
|
21
|
+
|
22
|
+
**Merged pull requests:**
|
23
|
+
|
24
|
+
- Fix combined\_first\_and\_last\_name\_in\_address version [\#59](https://github.com/solidusio/solidus_support/pull/59) ([kennyadsl](https://github.com/kennyadsl))
|
25
|
+
|
26
|
+
## [v0.8.0](https://github.com/solidusio/solidus_support/tree/v0.8.0) (2021-01-19)
|
27
|
+
|
28
|
+
[Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.7.0...v0.8.0)
|
29
|
+
|
30
|
+
**Implemented enhancements:**
|
31
|
+
|
32
|
+
- Add a method to check if combined address name is being used [\#58](https://github.com/solidusio/solidus_support/pull/58) ([kennyadsl](https://github.com/kennyadsl))
|
33
|
+
|
34
|
+
**Fixed bugs:**
|
35
|
+
|
36
|
+
- Fix project' specs [\#57](https://github.com/solidusio/solidus_support/pull/57) ([kennyadsl](https://github.com/kennyadsl))
|
37
|
+
|
3
38
|
## [v0.7.0](https://github.com/solidusio/solidus_support/tree/v0.7.0) (2020-10-28)
|
4
39
|
|
5
40
|
[Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.6.0...v0.7.0)
|
@@ -10,9 +45,9 @@
|
|
10
45
|
|
11
46
|
**Merged pull requests:**
|
12
47
|
|
13
|
-
- Use `Spree::Event.
|
48
|
+
- Use `Spree::Event. activate_all_subscribers` when available [\#53](https://github.com/solidusio/solidus_support/pull/53) ([spaghetticode](https://github.com/spaghetticode))
|
14
49
|
- Support Rails 5.1.x [\#51](https://github.com/solidusio/solidus_support/pull/51) ([brchristian](https://github.com/brchristian))
|
15
|
-
- Remove redundant `
|
50
|
+
- Remove redundant `solidus_core` dev dependency [\#50](https://github.com/solidusio/solidus_support/pull/50) ([brchristian](https://github.com/brchristian))
|
16
51
|
|
17
52
|
## [v0.6.0](https://github.com/solidusio/solidus_support/tree/v0.6.0) (2020-07-24)
|
18
53
|
|
@@ -50,7 +85,11 @@
|
|
50
85
|
**Merged pull requests:**
|
51
86
|
|
52
87
|
- Load Solidus engine extension files automatically [\#42](https://github.com/solidusio/solidus_support/pull/42) ([aldesantis](https://github.com/aldesantis))
|
88
|
+
- Update solidus\_dev\_support [\#41](https://github.com/solidusio/solidus_support/pull/41) ([aldesantis](https://github.com/aldesantis))
|
89
|
+
- Replace manual cache checks w/ require\_dependency [\#39](https://github.com/solidusio/solidus_support/pull/39) ([elia](https://github.com/elia))
|
90
|
+
- Fixes isse when zeitwerk is not enabled [\#38](https://github.com/solidusio/solidus_support/pull/38) ([softr8](https://github.com/softr8))
|
53
91
|
- Deprecate SolidusSupport.solidus\_gem\_version [\#37](https://github.com/solidusio/solidus_support/pull/37) ([kennyadsl](https://github.com/kennyadsl))
|
92
|
+
- Spring cleaning [\#33](https://github.com/solidusio/solidus_support/pull/33) ([aldesantis](https://github.com/aldesantis))
|
54
93
|
|
55
94
|
## [v0.4.1](https://github.com/solidusio/solidus_support/tree/v0.4.1) (2020-01-16)
|
56
95
|
|
@@ -61,13 +100,6 @@
|
|
61
100
|
- Should use require\_dependency instead of require/load [\#34](https://github.com/solidusio/solidus_support/issues/34)
|
62
101
|
- Add a LICENSE [\#20](https://github.com/solidusio/solidus_support/issues/20)
|
63
102
|
|
64
|
-
**Merged pull requests:**
|
65
|
-
|
66
|
-
- Update solidus\_dev\_support [\#41](https://github.com/solidusio/solidus_support/pull/41) ([aldesantis](https://github.com/aldesantis))
|
67
|
-
- Replace manual cache checks w/ require\_dependency [\#39](https://github.com/solidusio/solidus_support/pull/39) ([elia](https://github.com/elia))
|
68
|
-
- Fixes isse when zeitwerk is not enabled [\#38](https://github.com/solidusio/solidus_support/pull/38) ([softr8](https://github.com/softr8))
|
69
|
-
- Spring cleaning [\#33](https://github.com/solidusio/solidus_support/pull/33) ([aldesantis](https://github.com/aldesantis))
|
70
|
-
|
71
103
|
## [v0.4.0](https://github.com/solidusio/solidus_support/tree/v0.4.0) (2019-12-16)
|
72
104
|
|
73
105
|
[Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.3.2...v0.4.0)
|
@@ -95,7 +127,7 @@
|
|
95
127
|
- Add `capybara-screenshot` dependency [\#23](https://github.com/solidusio/solidus_support/pull/23) ([spaghetticode](https://github.com/spaghetticode))
|
96
128
|
- Do not reset spree preferences starting from v2.9 [\#22](https://github.com/solidusio/solidus_support/pull/22) ([kennyadsl](https://github.com/kennyadsl))
|
97
129
|
- Update Travis config [\#19](https://github.com/solidusio/solidus_support/pull/19) ([aitbw](https://github.com/aitbw))
|
98
|
-
- Override Capybara JS driver via `
|
130
|
+
- Override Capybara JS driver via `CAPYBARA_DRIVER` ENV variable [\#18](https://github.com/solidusio/solidus_support/pull/18) ([spaghetticode](https://github.com/spaghetticode))
|
99
131
|
- Migrate from Poltergeist to Headless Chrome [\#16](https://github.com/solidusio/solidus_support/pull/16) ([aitbw](https://github.com/aitbw))
|
100
132
|
- Remove running rubocop on rake task [\#14](https://github.com/solidusio/solidus_support/pull/14) ([kennyadsl](https://github.com/kennyadsl))
|
101
133
|
- Cleanup extension [\#13](https://github.com/solidusio/solidus_support/pull/13) ([kennyadsl](https://github.com/kennyadsl))
|
@@ -15,9 +15,9 @@ module SolidusSupport
|
|
15
15
|
|
16
16
|
config.to_prepare(&method(:activate))
|
17
17
|
|
18
|
-
enable_solidus_engine_support('backend')
|
19
|
-
enable_solidus_engine_support('frontend')
|
20
|
-
enable_solidus_engine_support('api')
|
18
|
+
enable_solidus_engine_support('backend')
|
19
|
+
enable_solidus_engine_support('frontend')
|
20
|
+
enable_solidus_engine_support('api')
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
@@ -32,7 +32,7 @@ module SolidusSupport
|
|
32
32
|
# This allows to add event subscribers to extensions without explicitly subscribing them,
|
33
33
|
# similarly to what happens in Solidus core.
|
34
34
|
def load_solidus_subscribers_from(path)
|
35
|
-
if
|
35
|
+
if SolidusSupport::LegacyEventCompat.using_legacy?
|
36
36
|
path.glob("**/*_subscriber.rb") do |subscriber_path|
|
37
37
|
require_dependency(subscriber_path)
|
38
38
|
end
|
@@ -82,17 +82,23 @@ module SolidusSupport
|
|
82
82
|
#
|
83
83
|
# @see #load_solidus_decorators_from
|
84
84
|
def enable_solidus_engine_support(engine)
|
85
|
-
|
86
|
-
|
85
|
+
initializer "#{name}_#{engine}_paths", before: :initialize_dependency_mechanism do
|
86
|
+
if SolidusSupport.send(:"#{engine}_available?")
|
87
|
+
paths['app/controllers'] << "lib/controllers/#{engine}"
|
88
|
+
paths['app/views'] << "lib/views/#{engine}"
|
89
|
+
end
|
90
|
+
end
|
87
91
|
|
88
|
-
|
92
|
+
if SolidusSupport.send(:"#{engine}_available?")
|
93
|
+
path = root.join("lib/decorators/#{engine}")
|
89
94
|
|
90
|
-
|
95
|
+
config.autoload_paths += path.glob('*')
|
91
96
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
97
|
+
engine_context = self
|
98
|
+
config.to_prepare do
|
99
|
+
engine_context.instance_eval do
|
100
|
+
load_solidus_decorators_from(path)
|
101
|
+
end
|
96
102
|
end
|
97
103
|
end
|
98
104
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SolidusSupport
|
4
|
+
module LegacyEventCompat
|
5
|
+
# Compatibility for some event-driven operations
|
6
|
+
module Bus
|
7
|
+
# Publication of an event
|
8
|
+
#
|
9
|
+
# If extensions want to support the legacy sytem, they need to use a
|
10
|
+
# compatible API. That means it's not possible to publish an instance as
|
11
|
+
# event, which is something supported by Omnes but not the legacy adapter.
|
12
|
+
# Instead, a payload can be given. E.g.:
|
13
|
+
#
|
14
|
+
# ```
|
15
|
+
# SolidusSupport::LegacyEventCompat::Bus.publish(:foo, bar: :baz)
|
16
|
+
# ```
|
17
|
+
#
|
18
|
+
# Legacy subscribers will receive an
|
19
|
+
# `ActiveSupport::Notifications::Fanout`, while omnes subscribers will get
|
20
|
+
# an `Omnes::UnstructuredEvent`. Both instances are compatible as they
|
21
|
+
# implement a `#payload` method.
|
22
|
+
#
|
23
|
+
# @param event_name [Symbol]
|
24
|
+
# @param payload [Hash<Symbol, Any>]
|
25
|
+
def self.publish(event_name, **payload)
|
26
|
+
if SolidusSupport::LegacyEventCompat.using_legacy?
|
27
|
+
Spree::Event.fire(event_name, payload)
|
28
|
+
else
|
29
|
+
Spree::Bus.publish(event_name, **payload, caller_location: caller_locations(1)[0])
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
begin
|
4
|
+
require "omnes"
|
5
|
+
rescue LoadError
|
6
|
+
end
|
7
|
+
|
8
|
+
module SolidusSupport
|
9
|
+
module LegacyEventCompat
|
10
|
+
# Compatibility for subscriber modules
|
11
|
+
#
|
12
|
+
# Thanks to this module, extensions can create legacy subscriber modules
|
13
|
+
# (see {Spree::Event::Subscriber}) and translate them automatically to an
|
14
|
+
# {Omnes::Subscriber}). E.g.:
|
15
|
+
#
|
16
|
+
# ```
|
17
|
+
# module MyExtension
|
18
|
+
# module MySubscriber
|
19
|
+
# include Spree::Event::Subscriber
|
20
|
+
# include SolidusSupport::LegacyEventCompat::Subscriber
|
21
|
+
#
|
22
|
+
# event_action :order_finalized
|
23
|
+
#
|
24
|
+
# def order_finalized(event)
|
25
|
+
# event.payload[:order].do_something
|
26
|
+
# end
|
27
|
+
# end
|
28
|
+
# end
|
29
|
+
#
|
30
|
+
# MyExtension::MySubscriber.omnes_subscriber.subscribe_to(Spree::Bus)
|
31
|
+
# ```
|
32
|
+
#
|
33
|
+
# The generated omnes subscriptions will call the corresponding legacy
|
34
|
+
# subscriber method with the omnes event. It'll compatible as long as the
|
35
|
+
# omnes event responds to the `#payload` method (see
|
36
|
+
# {Omnes::UnstructuredEvent}).
|
37
|
+
module Subscriber
|
38
|
+
# @api private
|
39
|
+
ADAPTER = lambda do |legacy_subscriber, legacy_subscriber_method, _omnes_subscriber, omnes_event|
|
40
|
+
legacy_subscriber.send(legacy_subscriber_method, omnes_event)
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.included(legacy_subscriber)
|
44
|
+
legacy_subscriber.define_singleton_method(:omnes_subscriber) do
|
45
|
+
@omnes_subscriber ||= Class.new.include(::Omnes::Subscriber).tap do |subscriber|
|
46
|
+
legacy_subscriber.event_actions.each do |(legacy_subscriber_method, event_name)|
|
47
|
+
subscriber.handle(event_name.to_sym, with: ADAPTER.curry[legacy_subscriber, legacy_subscriber_method])
|
48
|
+
end
|
49
|
+
end.new
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'solidus_support/legacy_event_compat/bus'
|
4
|
+
require 'solidus_support/legacy_event_compat/subscriber'
|
5
|
+
|
6
|
+
module SolidusSupport
|
7
|
+
# Compatibility middleman for {Spree::Event} and {Spree::Bus}
|
8
|
+
#
|
9
|
+
# Solidus v3.2 changed to use [Omnes](https://github.com/nebulab/omnes) as the
|
10
|
+
# backbone for event-driven behavior (see {Spree::Bus}) by default. Before
|
11
|
+
# that, a custom adapter based on {ActiveSupport::Notifications} was used (see
|
12
|
+
# {Spree::Event}. Both systems are still supported on v3.2.
|
13
|
+
#
|
14
|
+
# This module provides compatibility support so that extensions can easily
|
15
|
+
# target both systems regardless of the underlying circumstances:
|
16
|
+
#
|
17
|
+
# - Solidus v3.2 with the new system.
|
18
|
+
# - Solidus v3.2 with the legacy system.
|
19
|
+
# - Solidus v2.9 to v3.1, when only {Spree::Event} existed.
|
20
|
+
# - Possible future versions of Solidus, whether the legacy system is
|
21
|
+
# eventually removed or not.
|
22
|
+
module LegacyEventCompat
|
23
|
+
# Returns whether the application is using the legacy event system
|
24
|
+
#
|
25
|
+
# @return [Boolean]
|
26
|
+
def self.using_legacy?
|
27
|
+
legacy_present? &&
|
28
|
+
(legacy_alone? ||
|
29
|
+
legacy_chosen?)
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.legacy_present?
|
33
|
+
defined?(Spree::Event)
|
34
|
+
end
|
35
|
+
private_class_method :legacy_present?
|
36
|
+
|
37
|
+
def self.legacy_alone?
|
38
|
+
!Spree::Config.respond_to?(:use_legacy_events)
|
39
|
+
end
|
40
|
+
private_class_method :legacy_alone?
|
41
|
+
|
42
|
+
def self.legacy_chosen?
|
43
|
+
Spree::Config.use_legacy_events
|
44
|
+
end
|
45
|
+
private_class_method :legacy_chosen?
|
46
|
+
end
|
47
|
+
end
|
data/lib/solidus_support.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'solidus_support/version'
|
4
4
|
require 'solidus_support/migration'
|
5
|
+
require 'solidus_support/legacy_event_compat'
|
5
6
|
require 'solidus_support/engine_extensions'
|
6
7
|
require 'solidus_core'
|
7
8
|
|
@@ -32,27 +33,38 @@ module SolidusSupport
|
|
32
33
|
end
|
33
34
|
|
34
35
|
def new_gateway_code?
|
35
|
-
|
36
|
-
|
36
|
+
ActiveSupport::Deprecation.warn <<-WARN.squish, caller
|
37
|
+
SolidusSupport.new_gateway_code? is deprecated without replacement and will be removed
|
38
|
+
in solidus_support 1.0.
|
39
|
+
WARN
|
40
|
+
|
41
|
+
true
|
37
42
|
end
|
38
43
|
|
39
44
|
def payment_source_parent_class
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
+
ActiveSupport::Deprecation.warn <<-WARN.squish, caller
|
46
|
+
SolidusSupport.payment_source_parent_class is deprecated and will be removed
|
47
|
+
in solidus_support 1.0. Please use Spree::PaymentSource instead.
|
48
|
+
WARN
|
49
|
+
|
50
|
+
Spree::PaymentSource
|
45
51
|
end
|
46
52
|
|
47
53
|
def payment_method_parent_class(credit_card: false)
|
48
|
-
if
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
+
if credit_card
|
55
|
+
ActiveSupport::Deprecation.warn <<-WARN.squish, caller
|
56
|
+
SolidusSupport.payment_method_parent_class(credit_card: true) is deprecated and will be removed
|
57
|
+
in solidus_support 1.0. Please use Spree::PaymentMethod::CreditCard instead.
|
58
|
+
WARN
|
59
|
+
|
60
|
+
Spree::PaymentMethod::CreditCard
|
54
61
|
else
|
55
|
-
|
62
|
+
ActiveSupport::Deprecation.warn <<-WARN.squish, caller
|
63
|
+
SolidusSupport.payment_method_parent_class(credit_card: false) is deprecated and will be removed
|
64
|
+
in solidus_support 1.0. Please use Spree::PaymentMethod instead.
|
65
|
+
WARN
|
66
|
+
|
67
|
+
Spree::PaymentMethod
|
56
68
|
end
|
57
69
|
end
|
58
70
|
|
data/solidus_support.gemspec
CHANGED
data/spec/examples.txt
CHANGED
@@ -1,9 +1,15 @@
|
|
1
|
-
example_id
|
2
|
-
|
3
|
-
./spec/
|
4
|
-
./spec/
|
5
|
-
./spec/
|
6
|
-
./spec/
|
7
|
-
./spec/
|
8
|
-
./spec/
|
9
|
-
./spec/
|
1
|
+
example_id | status | run_time |
|
2
|
+
----------------------------------------------------------------------------- | ------ | --------------- |
|
3
|
+
./spec/solidus_support/legacy_event_compat/bus_spec.rb[1:1:1] | passed | 0.00525 seconds |
|
4
|
+
./spec/solidus_support/legacy_event_compat/legacy_event_compat_spec.rb[1:1:1] | passed | 0.00032 seconds |
|
5
|
+
./spec/solidus_support/legacy_event_compat/legacy_event_compat_spec.rb[1:1:2] | passed | 0.00026 seconds |
|
6
|
+
./spec/solidus_support/legacy_event_compat/legacy_event_compat_spec.rb[1:1:3] | passed | 0.00031 seconds |
|
7
|
+
./spec/solidus_support/legacy_event_compat/legacy_event_compat_spec.rb[1:1:4] | passed | 0.0006 seconds |
|
8
|
+
./spec/solidus_support/legacy_event_compat/legacy_event_compat_spec.rb[1:1:5] | passed | 0.00035 seconds |
|
9
|
+
./spec/solidus_support/legacy_event_compat/legacy_event_compat_spec.rb[1:1:6] | passed | 0.00019 seconds |
|
10
|
+
./spec/solidus_support/legacy_event_compat/legacy_event_compat_spec.rb[1:1:7] | passed | 0.00656 seconds |
|
11
|
+
./spec/solidus_support_spec.rb[1:1:1:1] | passed | 0.00095 seconds |
|
12
|
+
./spec/solidus_support_spec.rb[1:1:2:1] | passed | 1.11 seconds |
|
13
|
+
./spec/solidus_support_spec.rb[1:2:1:1] | passed | 0.0055 seconds |
|
14
|
+
./spec/solidus_support_spec.rb[1:2:2:1] | passed | 0.00081 seconds |
|
15
|
+
./spec/solidus_support_spec.rb[1:2:3:1] | passed | 0.0003 seconds |
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe SolidusSupport::LegacyEventCompat::Bus do
|
4
|
+
describe '#publish' do
|
5
|
+
if SolidusSupport::LegacyEventCompat.using_legacy?
|
6
|
+
it 'forwards to Spree::Event' do
|
7
|
+
box = nil
|
8
|
+
subscription = Spree::Event.subscribe(:foo) { |event| box = event.payload[:bar] }
|
9
|
+
|
10
|
+
described_class.publish(:foo, bar: :baz)
|
11
|
+
|
12
|
+
expect(box).to be(:baz)
|
13
|
+
ensure
|
14
|
+
Spree::Event.unsubscribe(subscription)
|
15
|
+
end
|
16
|
+
else
|
17
|
+
it 'forwards to Spree::Bus' do
|
18
|
+
box = nil
|
19
|
+
Spree::Bus.register(:foo)
|
20
|
+
subscription = Spree::Bus.subscribe(:foo) { |event| box = event.payload[:bar] }
|
21
|
+
|
22
|
+
described_class.publish(:foo, bar: :baz)
|
23
|
+
|
24
|
+
expect(box).to be(:baz)
|
25
|
+
ensure
|
26
|
+
Spree::Bus.unsubscribe(subscription)
|
27
|
+
Spree::Bus.registry.unregister(:foo)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'omnes'
|
4
|
+
|
5
|
+
RSpec.describe SolidusSupport::LegacyEventCompat::Subscriber do
|
6
|
+
subject { Module.new.include(Spree::Event::Subscriber).include(described_class) }
|
7
|
+
|
8
|
+
describe '#omnes_subscriber' do
|
9
|
+
it 'returns an Omnes::Subscriber' do
|
10
|
+
subject.module_eval do
|
11
|
+
event_action :foo
|
12
|
+
|
13
|
+
def foo(_event); end
|
14
|
+
end
|
15
|
+
|
16
|
+
expect(subject.omnes_subscriber.is_a?(Omnes::Subscriber)).to be(true)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'adds single-event definitions matching legacy event actions' do
|
20
|
+
subject.module_eval do
|
21
|
+
event_action :foo
|
22
|
+
|
23
|
+
def foo(_event); end
|
24
|
+
end
|
25
|
+
bus = Omnes::Bus.new
|
26
|
+
bus.register(:foo)
|
27
|
+
|
28
|
+
subscriptions = subject.omnes_subscriber.subscribe_to(bus)
|
29
|
+
|
30
|
+
event = Struct.new(:omnes_event_name).new(:foo)
|
31
|
+
expect(subscriptions.first.matches?(event)).to be(true)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'coerces event names given as Strings' do
|
35
|
+
subject.module_eval do
|
36
|
+
event_action 'foo'
|
37
|
+
|
38
|
+
def foo(_event); end
|
39
|
+
end
|
40
|
+
bus = Omnes::Bus.new
|
41
|
+
bus.register(:foo)
|
42
|
+
|
43
|
+
subscriptions = subject.omnes_subscriber.subscribe_to(bus)
|
44
|
+
|
45
|
+
event = Struct.new(:omnes_event_name).new(:foo)
|
46
|
+
expect(subscriptions.first.matches?(event)).to be(true)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'executes legacy event action methods as handlers with the omnes event' do
|
50
|
+
subject.module_eval do
|
51
|
+
event_action :foo
|
52
|
+
|
53
|
+
def foo(event)
|
54
|
+
event[:bar]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
bus = Omnes::Bus.new
|
58
|
+
bus.register(:foo)
|
59
|
+
|
60
|
+
subscriptions = subject.omnes_subscriber.subscribe_to(bus)
|
61
|
+
|
62
|
+
expect(
|
63
|
+
bus.publish(:foo, bar: :baz).executions.first.result
|
64
|
+
).to be(:baz)
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'distingish when event name is given explicitly' do
|
68
|
+
subject.module_eval do
|
69
|
+
event_action :foo, event_name: :bar
|
70
|
+
|
71
|
+
def foo(_event)
|
72
|
+
:bar
|
73
|
+
end
|
74
|
+
end
|
75
|
+
bus = Omnes::Bus.new
|
76
|
+
bus.register(:bar)
|
77
|
+
|
78
|
+
subscriptions = subject.omnes_subscriber.subscribe_to(bus)
|
79
|
+
|
80
|
+
expect(
|
81
|
+
bus.publish(:bar).executions.first.result
|
82
|
+
).to be(:bar)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "returns the same omnes subscriber instance if called again" do
|
86
|
+
expect(subject.omnes_subscriber).to be(subject.omnes_subscriber)
|
87
|
+
end
|
88
|
+
|
89
|
+
it "doesn't fail when no event action has been defined" do
|
90
|
+
expect { subject.omnes_subscriber }.not_to raise_error
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -12,35 +12,18 @@ RSpec.describe SolidusSupport do
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
context 'with
|
16
|
-
let(:solidus_version) { '2.2.1' }
|
17
|
-
|
18
|
-
it { is_expected.to eq(Spree::Gateway) }
|
19
|
-
end
|
20
|
-
|
21
|
-
context 'with Solidus >= 2.3' do
|
15
|
+
context 'with credit_card: false' do
|
22
16
|
let(:solidus_version) { '2.3.1' }
|
23
17
|
|
24
18
|
it { is_expected.to eq(Spree::PaymentMethod) }
|
25
19
|
end
|
26
20
|
|
27
|
-
# rubocop:disable RSpec/NestedGroups
|
28
21
|
context 'with credit_card: true' do
|
29
22
|
let(:credit_card) { true }
|
23
|
+
let(:solidus_version) { '2.3.1' }
|
30
24
|
|
31
|
-
|
32
|
-
let(:solidus_version) { '2.2.1' }
|
33
|
-
|
34
|
-
it { is_expected.to eq(Spree::Gateway) }
|
35
|
-
end
|
36
|
-
|
37
|
-
context 'with Solidus >= 2.3' do
|
38
|
-
let(:solidus_version) { '2.3.1' }
|
39
|
-
|
40
|
-
it { is_expected.to eq(Spree::PaymentMethod::CreditCard) }
|
41
|
-
end
|
25
|
+
it { is_expected.to eq(Spree::PaymentMethod::CreditCard) }
|
42
26
|
end
|
43
|
-
# rubocop:enable RSpec/NestedGroups
|
44
27
|
end
|
45
28
|
|
46
29
|
describe '.combined_first_and_last_name_in_address?' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Hawthorn
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -108,7 +108,21 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
-
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: omnes
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.2.2
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.2.2
|
125
|
+
description:
|
112
126
|
email: john@stembolt.com
|
113
127
|
executables: []
|
114
128
|
extensions: []
|
@@ -129,10 +143,15 @@ files:
|
|
129
143
|
- bin/setup
|
130
144
|
- lib/solidus_support.rb
|
131
145
|
- lib/solidus_support/engine_extensions.rb
|
146
|
+
- lib/solidus_support/legacy_event_compat.rb
|
147
|
+
- lib/solidus_support/legacy_event_compat/bus.rb
|
148
|
+
- lib/solidus_support/legacy_event_compat/subscriber.rb
|
132
149
|
- lib/solidus_support/migration.rb
|
133
150
|
- lib/solidus_support/version.rb
|
134
151
|
- solidus_support.gemspec
|
135
152
|
- spec/examples.txt
|
153
|
+
- spec/solidus_support/legacy_event_compat/bus_spec.rb
|
154
|
+
- spec/solidus_support/legacy_event_compat/legacy_event_compat_spec.rb
|
136
155
|
- spec/solidus_support_spec.rb
|
137
156
|
- spec/spec_helper.rb
|
138
157
|
- spec/support/dummy_app.rb
|
@@ -141,7 +160,7 @@ homepage: https://github.com/solidusio/solidus_support
|
|
141
160
|
licenses:
|
142
161
|
- BSD-3-Clause
|
143
162
|
metadata: {}
|
144
|
-
post_install_message:
|
163
|
+
post_install_message:
|
145
164
|
rdoc_options: []
|
146
165
|
require_paths:
|
147
166
|
- lib
|
@@ -156,12 +175,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
175
|
- !ruby/object:Gem::Version
|
157
176
|
version: '0'
|
158
177
|
requirements: []
|
159
|
-
rubygems_version: 3.1
|
160
|
-
signing_key:
|
178
|
+
rubygems_version: 3.0.3.1
|
179
|
+
signing_key:
|
161
180
|
specification_version: 4
|
162
181
|
summary: Common runtime helpers for Solidus extensions.
|
163
182
|
test_files:
|
164
183
|
- spec/spec_helper.rb
|
184
|
+
- spec/solidus_support/legacy_event_compat/legacy_event_compat_spec.rb
|
185
|
+
- spec/solidus_support/legacy_event_compat/bus_spec.rb
|
165
186
|
- spec/examples.txt
|
166
187
|
- spec/solidus_support_spec.rb
|
167
188
|
- spec/support/dummy_app.rb
|