solidus_support 0.7.0 → 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 +58 -9
- data/Gemfile +12 -0
- data/bin/console +1 -0
- 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 +36 -14
- data/solidus_support.gemspec +2 -0
- data/spec/examples.txt +15 -6
- 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 +31 -15
- data/spec/support/dummy_app.rb +0 -1
- metadata +42 -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,54 @@
|
|
|
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
|
+
|
|
38
|
+
## [v0.7.0](https://github.com/solidusio/solidus_support/tree/v0.7.0) (2020-10-28)
|
|
39
|
+
|
|
40
|
+
[Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.6.0...v0.7.0)
|
|
41
|
+
|
|
42
|
+
**Closed issues:**
|
|
43
|
+
|
|
44
|
+
- Could we get a new release? [\#49](https://github.com/solidusio/solidus_support/issues/49)
|
|
45
|
+
|
|
46
|
+
**Merged pull requests:**
|
|
47
|
+
|
|
48
|
+
- Use `Spree::Event. activate_all_subscribers` when available [\#53](https://github.com/solidusio/solidus_support/pull/53) ([spaghetticode](https://github.com/spaghetticode))
|
|
49
|
+
- Support Rails 5.1.x [\#51](https://github.com/solidusio/solidus_support/pull/51) ([brchristian](https://github.com/brchristian))
|
|
50
|
+
- Remove redundant `solidus_core` dev dependency [\#50](https://github.com/solidusio/solidus_support/pull/50) ([brchristian](https://github.com/brchristian))
|
|
51
|
+
|
|
3
52
|
## [v0.6.0](https://github.com/solidusio/solidus_support/tree/v0.6.0) (2020-07-24)
|
|
4
53
|
|
|
5
54
|
[Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.5.1...v0.6.0)
|
|
@@ -36,7 +85,11 @@
|
|
|
36
85
|
**Merged pull requests:**
|
|
37
86
|
|
|
38
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))
|
|
39
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))
|
|
40
93
|
|
|
41
94
|
## [v0.4.1](https://github.com/solidusio/solidus_support/tree/v0.4.1) (2020-01-16)
|
|
42
95
|
|
|
@@ -47,13 +100,6 @@
|
|
|
47
100
|
- Should use require\_dependency instead of require/load [\#34](https://github.com/solidusio/solidus_support/issues/34)
|
|
48
101
|
- Add a LICENSE [\#20](https://github.com/solidusio/solidus_support/issues/20)
|
|
49
102
|
|
|
50
|
-
**Merged pull requests:**
|
|
51
|
-
|
|
52
|
-
- Update solidus\_dev\_support [\#41](https://github.com/solidusio/solidus_support/pull/41) ([aldesantis](https://github.com/aldesantis))
|
|
53
|
-
- Replace manual cache checks w/ require\_dependency [\#39](https://github.com/solidusio/solidus_support/pull/39) ([elia](https://github.com/elia))
|
|
54
|
-
- Fixes isse when zeitwerk is not enabled [\#38](https://github.com/solidusio/solidus_support/pull/38) ([softr8](https://github.com/softr8))
|
|
55
|
-
- Spring cleaning [\#33](https://github.com/solidusio/solidus_support/pull/33) ([aldesantis](https://github.com/aldesantis))
|
|
56
|
-
|
|
57
103
|
## [v0.4.0](https://github.com/solidusio/solidus_support/tree/v0.4.0) (2019-12-16)
|
|
58
104
|
|
|
59
105
|
[Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.3.2...v0.4.0)
|
|
@@ -81,7 +127,7 @@
|
|
|
81
127
|
- Add `capybara-screenshot` dependency [\#23](https://github.com/solidusio/solidus_support/pull/23) ([spaghetticode](https://github.com/spaghetticode))
|
|
82
128
|
- Do not reset spree preferences starting from v2.9 [\#22](https://github.com/solidusio/solidus_support/pull/22) ([kennyadsl](https://github.com/kennyadsl))
|
|
83
129
|
- Update Travis config [\#19](https://github.com/solidusio/solidus_support/pull/19) ([aitbw](https://github.com/aitbw))
|
|
84
|
-
- 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))
|
|
85
131
|
- Migrate from Poltergeist to Headless Chrome [\#16](https://github.com/solidusio/solidus_support/pull/16) ([aitbw](https://github.com/aitbw))
|
|
86
132
|
- Remove running rubocop on rake task [\#14](https://github.com/solidusio/solidus_support/pull/14) ([kennyadsl](https://github.com/kennyadsl))
|
|
87
133
|
- Cleanup extension [\#13](https://github.com/solidusio/solidus_support/pull/13) ([kennyadsl](https://github.com/kennyadsl))
|
|
@@ -105,7 +151,6 @@
|
|
|
105
151
|
|
|
106
152
|
- Rename FactoryBot [\#6](https://github.com/solidusio/solidus_support/pull/6) ([tvdeyen](https://github.com/tvdeyen))
|
|
107
153
|
- Remove unused files [\#5](https://github.com/solidusio/solidus_support/pull/5) ([tvdeyen](https://github.com/tvdeyen))
|
|
108
|
-
- Add a basic spec\_helper for extensions to include [\#2](https://github.com/solidusio/solidus_support/pull/2) ([jhawthorn](https://github.com/jhawthorn))
|
|
109
154
|
|
|
110
155
|
## [v0.1.5](https://github.com/solidusio/solidus_support/tree/v0.1.5) (2017-07-27)
|
|
111
156
|
|
|
@@ -119,6 +164,10 @@
|
|
|
119
164
|
|
|
120
165
|
[Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.1.2...v0.1.3)
|
|
121
166
|
|
|
167
|
+
**Merged pull requests:**
|
|
168
|
+
|
|
169
|
+
- Add a basic spec\_helper for extensions to include [\#2](https://github.com/solidusio/solidus_support/pull/2) ([jhawthorn](https://github.com/jhawthorn))
|
|
170
|
+
|
|
122
171
|
## [v0.1.2](https://github.com/solidusio/solidus_support/tree/v0.1.2) (2017-07-24)
|
|
123
172
|
|
|
124
173
|
[Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.1.1...v0.1.2)
|
data/Gemfile
CHANGED
|
@@ -16,3 +16,15 @@ else
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
gemspec
|
|
19
|
+
|
|
20
|
+
# There is an issue with Sprockets 4 not accepting a custom path for
|
|
21
|
+
# the assets manifest, which doesn't play well with in-memory dummy
|
|
22
|
+
# apps such as the one we use in this gem.
|
|
23
|
+
|
|
24
|
+
# A fix was provided for sprockets-rails[1] but it was not accepted
|
|
25
|
+
# yet.
|
|
26
|
+
|
|
27
|
+
# [1]: rails/sprockets-rails#446
|
|
28
|
+
#
|
|
29
|
+
# Please do not remove this line until we have a solution.
|
|
30
|
+
gem 'sprockets', '~> 3'
|
data/bin/console
CHANGED
|
@@ -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
|
|
|
@@ -21,28 +22,49 @@ module SolidusSupport
|
|
|
21
22
|
first_version_without_reset.satisfied_by?(Spree.solidus_gem_version)
|
|
22
23
|
end
|
|
23
24
|
|
|
25
|
+
def combined_first_and_last_name_in_address?
|
|
26
|
+
versions_before_preference = Gem::Requirement.new('< 2.11.0')
|
|
27
|
+
versions_after_preference = Gem::Requirement.new('>= 3.0.0.alpha')
|
|
28
|
+
|
|
29
|
+
return false if versions_before_preference.satisfied_by?(Spree.solidus_gem_version)
|
|
30
|
+
return true if versions_after_preference.satisfied_by?(Spree.solidus_gem_version)
|
|
31
|
+
|
|
32
|
+
Spree::Config.use_combined_first_and_last_name_in_address
|
|
33
|
+
end
|
|
34
|
+
|
|
24
35
|
def new_gateway_code?
|
|
25
|
-
|
|
26
|
-
|
|
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
|
|
27
42
|
end
|
|
28
43
|
|
|
29
44
|
def payment_source_parent_class
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
|
35
51
|
end
|
|
36
52
|
|
|
37
53
|
def payment_method_parent_class(credit_card: false)
|
|
38
|
-
if
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
|
44
61
|
else
|
|
45
|
-
|
|
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
|
|
46
68
|
end
|
|
47
69
|
end
|
|
48
70
|
|
data/solidus_support.gemspec
CHANGED
|
@@ -21,10 +21,12 @@ Gem::Specification.new do |s|
|
|
|
21
21
|
s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
22
22
|
s.require_paths = ["lib"]
|
|
23
23
|
|
|
24
|
+
s.add_development_dependency 'rails'
|
|
24
25
|
s.add_development_dependency 'bundler'
|
|
25
26
|
s.add_development_dependency 'rake'
|
|
26
27
|
s.add_development_dependency 'rspec-rails'
|
|
27
28
|
s.add_development_dependency 'rubocop'
|
|
28
29
|
s.add_development_dependency 'rubocop-rspec'
|
|
29
30
|
s.add_development_dependency 'solidus_dev_support'
|
|
31
|
+
s.add_development_dependency 'omnes', '~> 0.2.2'
|
|
30
32
|
end
|
data/spec/examples.txt
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
example_id
|
|
2
|
-
|
|
3
|
-
./spec/
|
|
4
|
-
./spec/
|
|
5
|
-
./spec/
|
|
6
|
-
./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,34 +12,50 @@ 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
|
-
|
|
25
|
+
it { is_expected.to eq(Spree::PaymentMethod::CreditCard) }
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe '.combined_first_and_last_name_in_address?' do
|
|
30
|
+
subject { described_class.combined_first_and_last_name_in_address? }
|
|
33
31
|
|
|
34
|
-
|
|
32
|
+
before do
|
|
33
|
+
allow(Spree).to receive(:solidus_gem_version) do
|
|
34
|
+
Gem::Version.new(solidus_version)
|
|
35
35
|
end
|
|
36
|
+
end
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
context 'when Solidus did not have the code to combine addresses fields' do
|
|
39
|
+
let(:solidus_version) { '2.9.3' }
|
|
40
|
+
|
|
41
|
+
it { is_expected.to be_falsey }
|
|
42
|
+
end
|
|
39
43
|
|
|
40
|
-
|
|
44
|
+
context 'when Solidus has preference to choose if combine addresses fields' do
|
|
45
|
+
let(:solidus_version) { '2.11.3' }
|
|
46
|
+
before do
|
|
47
|
+
allow(Spree::Config)
|
|
48
|
+
.to receive(:use_combined_first_and_last_name_in_address)
|
|
49
|
+
.and_return(true)
|
|
41
50
|
end
|
|
51
|
+
|
|
52
|
+
it { is_expected.to be_truthy }
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
context 'when Solidus only has code to combine addresses fields' do
|
|
56
|
+
let(:solidus_version) { '3.0.0' }
|
|
57
|
+
|
|
58
|
+
it { is_expected.to be_truthy }
|
|
42
59
|
end
|
|
43
|
-
# rubocop:enable RSpec/NestedGroups
|
|
44
60
|
end
|
|
45
61
|
end
|
data/spec/support/dummy_app.rb
CHANGED
|
@@ -14,7 +14,6 @@ module DummyApp
|
|
|
14
14
|
class Application < ::Rails::Application
|
|
15
15
|
config.eager_load = false
|
|
16
16
|
config.paths['config/database'] = File.expand_path('dummy_app/database.yml', __dir__)
|
|
17
|
-
config.active_record.sqlite3.represent_boolean_as_integer = true unless Gem::Version.new(Rails.version) < Gem::Version.new('5.2')
|
|
18
17
|
end
|
|
19
18
|
end
|
|
20
19
|
|
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
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
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: rails
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: bundler
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -94,7 +108,21 @@ dependencies:
|
|
|
94
108
|
- - ">="
|
|
95
109
|
- !ruby/object:Gem::Version
|
|
96
110
|
version: '0'
|
|
97
|
-
|
|
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:
|
|
98
126
|
email: john@stembolt.com
|
|
99
127
|
executables: []
|
|
100
128
|
extensions: []
|
|
@@ -115,10 +143,15 @@ files:
|
|
|
115
143
|
- bin/setup
|
|
116
144
|
- lib/solidus_support.rb
|
|
117
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
|
|
118
149
|
- lib/solidus_support/migration.rb
|
|
119
150
|
- lib/solidus_support/version.rb
|
|
120
151
|
- solidus_support.gemspec
|
|
121
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
|
|
122
155
|
- spec/solidus_support_spec.rb
|
|
123
156
|
- spec/spec_helper.rb
|
|
124
157
|
- spec/support/dummy_app.rb
|
|
@@ -127,7 +160,7 @@ homepage: https://github.com/solidusio/solidus_support
|
|
|
127
160
|
licenses:
|
|
128
161
|
- BSD-3-Clause
|
|
129
162
|
metadata: {}
|
|
130
|
-
post_install_message:
|
|
163
|
+
post_install_message:
|
|
131
164
|
rdoc_options: []
|
|
132
165
|
require_paths:
|
|
133
166
|
- lib
|
|
@@ -142,12 +175,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
142
175
|
- !ruby/object:Gem::Version
|
|
143
176
|
version: '0'
|
|
144
177
|
requirements: []
|
|
145
|
-
rubygems_version: 3.0.3
|
|
146
|
-
signing_key:
|
|
178
|
+
rubygems_version: 3.0.3.1
|
|
179
|
+
signing_key:
|
|
147
180
|
specification_version: 4
|
|
148
181
|
summary: Common runtime helpers for Solidus extensions.
|
|
149
182
|
test_files:
|
|
150
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
|
|
151
186
|
- spec/examples.txt
|
|
152
187
|
- spec/solidus_support_spec.rb
|
|
153
188
|
- spec/support/dummy_app.rb
|