solidus_support 0.3.3 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32902c75bfdc08a3c98057acc7a3ad00195192193069e1d82f1b313ebe838928
4
- data.tar.gz: 4d6ef910489780004e48196d07a3da7c0f105d106753bf66c80dcaf8a57a1b9f
3
+ metadata.gz: 52891f7c46410b049481d932d3936da5530d1eabd601d0af44760398b4560200
4
+ data.tar.gz: 47b62f091de89edaf01b1e57ce6b1fdf10c558f801ead911822b88bbd8baffa7
5
5
  SHA512:
6
- metadata.gz: 1122450b8f36e775258033a303fa56ab125f7856c24de99f35d2cb2f890a126ac10c57e75346c568e3a81a04e27bdd40ff2a0ce7e8009a8d8433c6143a89aa00
7
- data.tar.gz: 58f2ef36a526e9d31873cc89efe76a06c3061731d816c7caae1a3b45d17940db6199229857a745989068029d3de13bf44a5f65f3ed388b929e4827120f647a80
6
+ metadata.gz: 2e55cb09d122d874ae9548420477d71a001fa7835f0027c976fca6cfef89351f0546b9477a5d219b9c80c15858e46edf510763b97301adf633dcaa97512d7237
7
+ data.tar.gz: 965ee76ae136fe8fc11987327044994b4fb1162a9f5516b1c50a47103ecc068acbf8cdc5ba5af68cb1b6e11bf41eb3c10bb50b0291f249dcee0c45341e0cfcd4
@@ -0,0 +1,35 @@
1
+ version: 2.1
2
+
3
+ orbs:
4
+ # Always take the latest version of the orb, this allows us to
5
+ # run specs against Solidus supported versions only without the need
6
+ # to change this configuration every time a Solidus version is released
7
+ # or goes EOL.
8
+ solidusio_extensions: solidusio/extensions@volatile
9
+
10
+ jobs:
11
+ run-specs-with-postgres:
12
+ executor: solidusio_extensions/postgres
13
+ steps:
14
+ - solidusio_extensions/run-tests
15
+ run-specs-with-mysql:
16
+ executor: solidusio_extensions/mysql
17
+ steps:
18
+ - solidusio_extensions/run-tests
19
+
20
+ workflows:
21
+ "Run specs on supported Solidus versions":
22
+ jobs:
23
+ - run-specs-with-postgres
24
+ - run-specs-with-mysql
25
+ "Weekly run specs against master":
26
+ triggers:
27
+ - schedule:
28
+ cron: "0 0 * * 4" # every Thursday
29
+ filters:
30
+ branches:
31
+ only:
32
+ - master
33
+ jobs:
34
+ - run-specs-with-postgres
35
+ - run-specs-with-mysql
@@ -0,0 +1,5 @@
1
+ bump:
2
+ recurse: false
3
+ file: 'lib/solidus_support/version.rb'
4
+ message: Bump SolidusSupport to %{version}
5
+ branch: false
@@ -0,0 +1,17 @@
1
+ # Number of days of inactivity before an issue becomes stale
2
+ daysUntilStale: 60
3
+ # Number of days of inactivity before a stale issue is closed
4
+ daysUntilClose: 7
5
+ # Issues with these labels will never be considered stale
6
+ exemptLabels:
7
+ - pinned
8
+ - security
9
+ # Label to use when marking an issue as stale
10
+ staleLabel: wontfix
11
+ # Comment to post when marking an issue as stale. Set to `false` to disable
12
+ markComment: >
13
+ This issue has been automatically marked as stale because it has not had
14
+ recent activity. It will be closed if no further activity occurs. Thank you
15
+ for your contributions.
16
+ # Comment to post when closing a stale issue. Set to `false` to disable
17
+ closeComment: false
data/.gitignore CHANGED
@@ -1,10 +1,17 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- /log/
1
+ *.gem
2
+ \#*
3
+ *~
4
+ .#*
5
+ .DS_Store
6
+ .idea
7
+ .project
8
+ .sass-cache
9
+ coverage
10
+ Gemfile.lock
11
+ tmp
12
+ nbproject
13
+ pkg
14
+ *.swp
15
+ spec/dummy
16
+ spec/examples.txt
17
+ log
data/.rspec CHANGED
@@ -1 +1,2 @@
1
1
  --require spec_helper
2
+ --color
@@ -1,8 +1,2 @@
1
- Metrics/BlockLength:
2
- ExcludedMethods: ['describe', 'context']
3
-
4
- Metrics/LineLength:
5
- Max: 100
6
-
7
- Style/Documentation:
8
- Enabled: false
1
+ require:
2
+ - solidus_dev_support/rubocop
@@ -0,0 +1,114 @@
1
+ # Changelog
2
+
3
+ ## [v0.5.0](https://github.com/solidusio/solidus_support/tree/v0.5.0) (2020-02-18)
4
+
5
+ [Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.4.1...v0.5.0)
6
+
7
+ **Merged pull requests:**
8
+
9
+ - Load Solidus engine extension files automatically [\#42](https://github.com/solidusio/solidus_support/pull/42) ([aldesantis](https://github.com/aldesantis))
10
+ - Deprecate SolidusSupport.solidus\_gem\_version [\#37](https://github.com/solidusio/solidus_support/pull/37) ([kennyadsl](https://github.com/kennyadsl))
11
+
12
+ ## [v0.4.1](https://github.com/solidusio/solidus_support/tree/v0.4.1) (2020-01-16)
13
+
14
+ [Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.4.0...v0.4.1)
15
+
16
+ **Closed issues:**
17
+
18
+ - Should use require\_dependency instead of require/load [\#34](https://github.com/solidusio/solidus_support/issues/34)
19
+ - Add a LICENSE [\#20](https://github.com/solidusio/solidus_support/issues/20)
20
+
21
+ **Merged pull requests:**
22
+
23
+ - Update solidus\_dev\_support [\#41](https://github.com/solidusio/solidus_support/pull/41) ([aldesantis](https://github.com/aldesantis))
24
+ - Replace manual cache checks w/ require\_dependency [\#39](https://github.com/solidusio/solidus_support/pull/39) ([elia](https://github.com/elia))
25
+ - Fixes isse when zeitwerk is not enabled [\#38](https://github.com/solidusio/solidus_support/pull/38) ([softr8](https://github.com/softr8))
26
+ - Spring cleaning [\#33](https://github.com/solidusio/solidus_support/pull/33) ([aldesantis](https://github.com/aldesantis))
27
+
28
+ ## [v0.4.0](https://github.com/solidusio/solidus_support/tree/v0.4.0) (2019-12-16)
29
+
30
+ [Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.3.2...v0.4.0)
31
+
32
+ **Closed issues:**
33
+
34
+ - Configure CircleCI [\#30](https://github.com/solidusio/solidus_support/issues/30)
35
+ - Models::SolidusGlobalize::Spree::TaxonomyDecorator \(NameError\) [\#26](https://github.com/solidusio/solidus_support/issues/26)
36
+
37
+ **Merged pull requests:**
38
+
39
+ - Fix issues with test runs [\#32](https://github.com/solidusio/solidus_support/pull/32) ([aldesantis](https://github.com/aldesantis))
40
+ - Add CircleCI configuration [\#31](https://github.com/solidusio/solidus_support/pull/31) ([aldesantis](https://github.com/aldesantis))
41
+ - Introduce solidus\_extension\_dev\_tools [\#29](https://github.com/solidusio/solidus_support/pull/29) ([aldesantis](https://github.com/aldesantis))
42
+ - Remove support for testing and extensions [\#28](https://github.com/solidusio/solidus_support/pull/28) ([MinasMazar](https://github.com/MinasMazar))
43
+ - Add SolidusSupport::EngineExtension::Decorators to load decorators [\#27](https://github.com/solidusio/solidus_support/pull/27) ([kennyadsl](https://github.com/kennyadsl))
44
+ - Add support for Codecov [\#24](https://github.com/solidusio/solidus_support/pull/24) ([aldesantis](https://github.com/aldesantis))
45
+ - Add `capybara-screenshot` dependency [\#23](https://github.com/solidusio/solidus_support/pull/23) ([spaghetticode](https://github.com/spaghetticode))
46
+
47
+ ## [v0.3.2](https://github.com/solidusio/solidus_support/tree/v0.3.2) (2019-08-08)
48
+
49
+ [Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.2.1...v0.3.2)
50
+
51
+ **Merged pull requests:**
52
+
53
+ - Do not reset spree preferences starting from v2.9 [\#22](https://github.com/solidusio/solidus_support/pull/22) ([kennyadsl](https://github.com/kennyadsl))
54
+ - Update Travis config [\#19](https://github.com/solidusio/solidus_support/pull/19) ([aitbw](https://github.com/aitbw))
55
+ - Override Capybara JS driver via `CAPYBARA\_DRIVER` ENV variable [\#18](https://github.com/solidusio/solidus_support/pull/18) ([spaghetticode](https://github.com/spaghetticode))
56
+ - Migrate from Poltergeist to Headless Chrome [\#16](https://github.com/solidusio/solidus_support/pull/16) ([aitbw](https://github.com/aitbw))
57
+ - Remove running rubocop on rake task [\#14](https://github.com/solidusio/solidus_support/pull/14) ([kennyadsl](https://github.com/kennyadsl))
58
+ - Cleanup extension [\#13](https://github.com/solidusio/solidus_support/pull/13) ([kennyadsl](https://github.com/kennyadsl))
59
+ - Fix how we compare gem versions to determine new gateway code usage [\#12](https://github.com/solidusio/solidus_support/pull/12) ([kennyadsl](https://github.com/kennyadsl))
60
+ - Add payment method parent class [\#8](https://github.com/solidusio/solidus_support/pull/8) ([tvdeyen](https://github.com/tvdeyen))
61
+ - Improve gem documentation [\#7](https://github.com/solidusio/solidus_support/pull/7) ([kennyadsl](https://github.com/kennyadsl))
62
+
63
+ ## [v0.2.1](https://github.com/solidusio/solidus_support/tree/v0.2.1) (2018-02-22)
64
+
65
+ [Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.2.0...v0.2.1)
66
+
67
+ **Merged pull requests:**
68
+
69
+ - Ensure database cleaning is very last in each spec [\#9](https://github.com/solidusio/solidus_support/pull/9) ([jhawthorn](https://github.com/jhawthorn))
70
+
71
+ ## [v0.2.0](https://github.com/solidusio/solidus_support/tree/v0.2.0) (2017-10-25)
72
+
73
+ [Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.1.5...v0.2.0)
74
+
75
+ **Merged pull requests:**
76
+
77
+ - Rename FactoryBot [\#6](https://github.com/solidusio/solidus_support/pull/6) ([tvdeyen](https://github.com/tvdeyen))
78
+ - Remove unused files [\#5](https://github.com/solidusio/solidus_support/pull/5) ([tvdeyen](https://github.com/tvdeyen))
79
+
80
+ ## [v0.1.5](https://github.com/solidusio/solidus_support/tree/v0.1.5) (2017-07-27)
81
+
82
+ [Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.1.4...v0.1.5)
83
+
84
+ ## [v0.1.4](https://github.com/solidusio/solidus_support/tree/v0.1.4) (2017-07-26)
85
+
86
+ [Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.1.3...v0.1.4)
87
+
88
+ ## [v0.1.3](https://github.com/solidusio/solidus_support/tree/v0.1.3) (2017-07-26)
89
+
90
+ [Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.1.2...v0.1.3)
91
+
92
+ **Merged pull requests:**
93
+
94
+ - Add a basic spec\_helper for extensions to include [\#2](https://github.com/solidusio/solidus_support/pull/2) ([jhawthorn](https://github.com/jhawthorn))
95
+
96
+ ## [v0.1.2](https://github.com/solidusio/solidus_support/tree/v0.1.2) (2017-07-24)
97
+
98
+ [Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.1.1...v0.1.2)
99
+
100
+ **Merged pull requests:**
101
+
102
+ - Add SolidusSupport.payment\_source\_parent\_class [\#1](https://github.com/solidusio/solidus_support/pull/1) ([jordan-brough](https://github.com/jordan-brough))
103
+
104
+ ## [v0.1.1](https://github.com/solidusio/solidus_support/tree/v0.1.1) (2017-05-03)
105
+
106
+ [Full Changelog](https://github.com/solidusio/solidus_support/compare/v0.1.0...v0.1.1)
107
+
108
+ ## [v0.1.0](https://github.com/solidusio/solidus_support/tree/v0.1.0) (2017-03-21)
109
+
110
+ [Full Changelog](https://github.com/solidusio/solidus_support/compare/b34d603b2b603e8799ce801913b577322bd39bdc...v0.1.0)
111
+
112
+
113
+
114
+ \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
data/Gemfile CHANGED
@@ -1,10 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
4
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
2
5
 
3
6
  branch = ENV.fetch('SOLIDUS_BRANCH', 'master')
4
7
  gem 'solidus_core', github: 'solidusio/solidus', branch: branch
5
8
 
6
- # Specify your gem's dependencies in solidus_support.gemspec
7
- gemspec
9
+ case ENV['DB']
10
+ when 'mysql'
11
+ gem 'mysql2'
12
+ when 'postgresql'
13
+ gem 'pg'
14
+ else
15
+ gem 'sqlite3'
16
+ end
8
17
 
9
- gem 'sprockets-rails'
10
- gem 'sqlite3'
18
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ Copyright (c) 2017 Solidus
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ * Neither the name Solidus nor the names of its contributors may be used to
13
+ endorse or promote products derived from this software without specific
14
+ prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md CHANGED
@@ -1,16 +1,18 @@
1
1
  # SolidusSupport
2
2
 
3
- This gem holds some common functionality for Solidus Extensions.
3
+ This gem contains common runtime functionality for Solidus extensions.
4
4
 
5
- It has some utilities to make it easier to support multiple versions of Solidus.
5
+ If you are looking for development tools instead, see
6
+ [solidus_dev_support](https://github.com/solidusio-contrib/solidus_dev_support).
6
7
 
7
8
  ## Usage
8
9
 
9
10
  ### `SolidusSupport::Migration`
10
11
 
11
- Rails >= 5 introduced the concept of specifying what rails version your migration was written for, like `ActiveRecord::Migration[5.0]`.
12
- Not specifying a version is deprecated in Rails 5.0 and removed in rails 5.1.
13
- This wasn't backported to Rails 4.2, but Rails 4.2 _is_ Rails 4.2. So we provide this helper.
12
+ Rails >= 5 introduced the concept of specifying what Rails version your migration was written for,
13
+ like `ActiveRecord::Migration[5.0]`. Not specifying a version is deprecated in Rails 5.0 and removed
14
+ in Rails 5.1. This wasn't backported to Rails 4.2, so we provide this helper to return the right
15
+ parent class:
14
16
 
15
17
  ``` ruby
16
18
  # On Rails 4.2
@@ -22,69 +24,65 @@ SolidusSupport::Migration[4.2] # same as `ActiveRecord::Migration[4.2]`
22
24
  SolidusSupport::Migration[5.0] # same as `ActiveRecord::Migration[5.0]`
23
25
  ```
24
26
 
25
- There's no reason to use `SolidusSupport::Migration[5.0]` over `ActiveRecord::Migration[5.0]`, but it is provided.
27
+ There's no reason to use `SolidusSupport::Migration[5.0]` over `ActiveRecord::Migration[5.0]`, but
28
+ it is provided.
26
29
 
27
- ### Testing Helpers
30
+ ### Engine extensions
28
31
 
29
- This gem provides some useful helpers for RSpec to setup an extension's test
30
- environment easily.
31
-
32
- Into your extension's spec/spec_helper.rb:
32
+ This extension provides a module that decorates `Rails::Engine` to seamlessly support autoloading
33
+ decorators both with the classic autoloader and with Zeitwerk on Rails 6. In order to use it, just
34
+ include the provided module in your `Engine` class:
33
35
 
34
36
  ```ruby
35
- require "solidus_support/extension/feature_helper"
36
- ```
37
-
38
- This helper loads configuration needed to run extensions feature specs
39
- correctly, setting up Capybara and configuring Rails test application
40
- to precompile assets before the first feature spec.
37
+ module SolidusExtensionName
38
+ class Engine < Rails::Engine
39
+ engine_name 'solidus_extension_name'
41
40
 
42
- This helper requires the `rails_helper`, also provided by this gem and
43
- requireable as a stand-alone helper.
41
+ include SolidusSupport::EngineExtensions
44
42
 
45
- By doing:
46
-
47
- ```ruby
48
- require "solidus_support/extension/rails_helper"
43
+ # ...
44
+ end
45
+ end
49
46
  ```
50
47
 
51
- extension's test suite will have all Rails related tests configuration,
52
- like authorization helpers, Solidus core factories, url helpers, and
53
- other helpers to easily work with Solidus Config.
54
-
55
- This `rails_helper` in turn requires the basic `spec_helper`, which is
56
- responsible to load a basic RSpec configuration, which could be needed
57
- in all extensions. It is also requireable as a stand-alone helper with:
48
+ If needed, also ensure to remove the original implementation of `.activate`:
58
49
 
59
50
  ```ruby
60
- require "solidus_support/extension/spec_helper"
51
+ def self.activate
52
+ Dir.glob(File.join(root, "app/**/*_decorator*.rb")) do |c|
53
+ Rails.configuration.cache_classes ? require(c) : load(c)
54
+ end
55
+ end
56
+
57
+ config.to_prepare(&method(:activate).to_proc)
61
58
  ```
62
59
 
63
- ### Coverage Collection
60
+ #### Loading files conditionally
64
61
 
65
- The gem also includes a SimpleCov configuration that will send your test
66
- coverage information directly to Codecov.io. Simply add this at the top
67
- of your `spec/spec_helper.rb`:
62
+ If you include `EngineExtensions` in your extension and structure your files according to the
63
+ expected paths, they will be loaded automagically only when the relevant Solidus engines are
64
+ available.
68
65
 
69
- ```ruby
70
- require "solidus_support/extension/coverage"
71
- ```
66
+ Here's what an example structure may look like:
72
67
 
73
- **Note: Make sure to add this at the VERY TOP of your spec_helper,
74
- otherwise you'll get skewed coverage reports!**
68
+ - `lib/views/backend`: will only be added to the view paths when `solidus_backend` is available.
69
+ - `lib/controllers/backend`: will only be added to the controller paths when `solidus_backend` is
70
+ available.
71
+ - `lib/decorators/backend`: will only be added to the decorator paths when `solidus_backend` is
72
+ available.
75
73
 
76
- If your extension is in a public repo and being tested on Travis or
77
- CircleCI, there's nothing else you need to do - you'll get coverage
78
- reports for free!
74
+ The same goes for `frontend` and `api`.
79
75
 
80
- If your setup is more complex, look at the [SimpleCov](https://github.com/colszowka/simplecov)
81
- and [codecov-ruby](https://github.com/codecov/codecov-ruby) docs.
76
+ We strongly recommend following this structure and making your extensions so that they're not
77
+ dependent on anything other than `solidus_core`, only augmenting the functionality of the other
78
+ engines when they are available.
82
79
 
83
80
  ## Development
84
81
 
85
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
86
-
87
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
82
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new
83
+ version, update the version number in `version.rb`, and then run `bundle exec rake release`, which
84
+ will create a git tag for the version, push git commits and tags, and push the `.gem` file to
85
+ [rubygems.org](https://rubygems.org).
88
86
 
89
87
  ## Contributing
90
88
 
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler'
2
4
 
3
5
  begin
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # frozen_string_literal: true
4
+
5
+ require "bundler/setup"
6
+ require "solidus_support"
7
+
8
+ # You can add fixtures and/or initialization code here to make experimenting
9
+ # with your gem easier. You can also use a different console, if you like.
10
+ $LOAD_PATH.unshift(*Dir["#{__dir__}/../app/*"])
11
+
12
+ # (If you use this, don't forget to add pry to your Gemfile!)
13
+ # require "pry"
14
+ # Pry.start
15
+
16
+ require "irb"
17
+ IRB.start(__FILE__)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ gem install bundler --conservative
7
+ bundle update
@@ -1,29 +1,29 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'solidus_support/version'
2
4
  require 'solidus_support/migration'
5
+ require 'solidus_support/engine_extensions'
3
6
  require 'solidus_core'
4
7
 
5
8
  module SolidusSupport
6
9
  class << self
7
10
  def solidus_gem_version
8
- if Spree.respond_to?(:solidus_gem_version)
9
- Spree.solidus_gem_version
10
- elsif Spree.respond_to?(:gem_version)
11
- # 1.1 doesn't have solidus_gem_version
12
- Gem::Version.new(Spree.solidus_version)
13
- else
14
- # 1.0 doesn't have gem_version
15
- Gem::Specification.detect { |x| x.name == 'solidus_core' }.version
16
- end
11
+ ActiveSupport::Deprecation.warn <<-WARN.squish, caller
12
+ SolidusSupport.solidus_gem_version is deprecated and will be removed
13
+ in solidus_support 1.0. Please use Spree.solidus_gem_version instead.
14
+ WARN
15
+
16
+ Spree.solidus_gem_version
17
17
  end
18
18
 
19
19
  def reset_spree_preferences_deprecated?
20
20
  first_version_without_reset = Gem::Requirement.new('>= 2.9')
21
- first_version_without_reset.satisfied_by?(solidus_gem_version)
21
+ first_version_without_reset.satisfied_by?(Spree.solidus_gem_version)
22
22
  end
23
23
 
24
24
  def new_gateway_code?
25
25
  first_version_with_new_gateway_code = Gem::Requirement.new('>= 2.3')
26
- first_version_with_new_gateway_code.satisfied_by?(solidus_gem_version)
26
+ first_version_with_new_gateway_code.satisfied_by?(Spree.solidus_gem_version)
27
27
  end
28
28
 
29
29
  def payment_source_parent_class
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusSupport
4
+ module EngineExtensions
5
+ include ActiveSupport::Deprecation::DeprecatedConstantAccessor
6
+ deprecate_constant 'Decorators', 'SolidusSupport::EngineExtensions'
7
+
8
+ def self.included(engine)
9
+ engine.extend ClassMethods
10
+
11
+ engine.class_eval do
12
+ solidus_decorators_root.glob('*') do |decorators_folder|
13
+ config.autoload_paths += [decorators_folder]
14
+ end
15
+
16
+ config.to_prepare(&method(:activate))
17
+
18
+ enable_solidus_engine_support('backend') if SolidusSupport.backend_available?
19
+ enable_solidus_engine_support('frontend') if SolidusSupport.frontend_available?
20
+ enable_solidus_engine_support('api') if SolidusSupport.api_available?
21
+ end
22
+ end
23
+
24
+ module ClassMethods
25
+ def activate
26
+ load_solidus_decorators_from(solidus_decorators_root)
27
+ load_solidus_subscribers_from(solidus_subscribers_root)
28
+ end
29
+
30
+ # Loads Solidus event subscriber files.
31
+ #
32
+ # This allows to add event subscribers to extensions without explicitly subscribing them,
33
+ # similarly to what happens in Solidus core.
34
+ def load_solidus_subscribers_from(path)
35
+ if defined? Spree::Event
36
+ path.glob("**/*_subscriber.rb") do |subscriber_path|
37
+ require_dependency(subscriber_path)
38
+ end
39
+ Spree::Event.subscribers.each(&:subscribe!)
40
+ end
41
+ end
42
+
43
+ # Loads decorator files.
44
+ #
45
+ # This is needed since they are never explicitly referenced in the application code and
46
+ # won't be loaded by default. We need them to be executed regardless in order to decorate
47
+ # existing classes.
48
+ def load_solidus_decorators_from(path)
49
+ path.glob('**/*.rb') do |decorator_path|
50
+ require_dependency(decorator_path)
51
+ end
52
+ end
53
+
54
+ private
55
+
56
+ # Returns the root for this engine's decorators.
57
+ #
58
+ # @return [Path]
59
+ def solidus_decorators_root
60
+ root.join('app/decorators')
61
+ end
62
+
63
+ # Returns the root for this engine's Solidus event subscribers.
64
+ #
65
+ # @return [Path]
66
+ def solidus_subscribers_root
67
+ root.join("app/subscribers")
68
+ end
69
+
70
+ # Enables support for a Solidus engine.
71
+ #
72
+ # This will tell Rails to:
73
+ #
74
+ # * add +lib/controllers/[engine]+ to the controller paths;
75
+ # * add +lib/views/[engine]+ to the view paths;
76
+ # * load the decorators in +lib/decorators/[engine]+.
77
+ #
78
+ # @see #load_solidus_decorators_from
79
+ def enable_solidus_engine_support(engine)
80
+ paths['app/controllers'] << "lib/controllers/#{engine}"
81
+ paths['app/views'] << "lib/views/#{engine}"
82
+
83
+ path = root.join("lib/decorators/#{engine}")
84
+
85
+ config.autoload_paths += path.glob('*')
86
+
87
+ engine_context = self
88
+ config.to_prepare do
89
+ engine_context.instance_eval do
90
+ load_solidus_decorators_from(path)
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SolidusSupport
2
4
  module Migration
3
5
  def self.[](version)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SolidusSupport
2
- VERSION = '0.3.3'.freeze
4
+ VERSION = '0.6.0'
3
5
  end
@@ -1,29 +1,33 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('lib', __dir__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ $:.push File.expand_path('lib', __dir__)
5
4
  require 'solidus_support/version'
6
5
 
7
- Gem::Specification.new do |spec|
8
- spec.name = 'solidus_support'
9
- spec.version = SolidusSupport::VERSION
10
- spec.authors = ['John Hawthorn']
11
- spec.email = ['john@stembolt.com']
6
+ Gem::Specification.new do |s|
7
+ s.name = 'solidus_support'
8
+ s.version = SolidusSupport::VERSION
9
+ s.summary = 'Common runtime helpers for Solidus extensions.'
10
+ s.license = 'BSD-3-Clause'
12
11
 
13
- spec.summary = 'A common functionality for solidus extensions'
14
- spec.description = 'Collection of common functionality for solidus extensions'
15
- spec.homepage = 'https://solidus.io'
12
+ s.author = 'John Hawthorn'
13
+ s.email = 'john@stembolt.com'
14
+ s.homepage = 'https://github.com/solidusio/solidus_support'
16
15
 
17
- spec.files = `git ls-files -z`.split("\x0")
18
- spec.require_paths = ['lib']
16
+ s.files = Dir.chdir(File.expand_path(__dir__)) do
17
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ end
19
+ s.test_files = Dir['spec/**/*']
20
+ s.bindir = "exe"
21
+ s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ s.require_paths = ["lib"]
19
23
 
20
- spec.add_development_dependency 'bundler', '~> 1.14'
21
- spec.add_development_dependency 'rake', '~> 10.0'
22
- spec.add_development_dependency 'rspec-rails', '~> 3.7'
23
- spec.add_development_dependency 'rubocop'
24
- spec.add_development_dependency 'rubocop-rspec'
25
- spec.add_development_dependency 'solidus_core'
24
+ s.add_dependency 'activesupport', ['>= 5.2', '< 7.0.x']
26
25
 
27
- spec.add_dependency 'capybara-screenshot'
28
- spec.add_dependency 'codecov'
26
+ s.add_development_dependency 'bundler'
27
+ s.add_development_dependency 'rake'
28
+ s.add_development_dependency 'rspec-rails'
29
+ s.add_development_dependency 'rubocop'
30
+ s.add_development_dependency 'rubocop-rspec'
31
+ s.add_development_dependency 'solidus_core'
32
+ s.add_development_dependency 'solidus_dev_support'
29
33
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe SolidusSupport do
2
4
  describe '.payment_method_parent_class' do
3
5
  subject { described_class.payment_method_parent_class(credit_card: credit_card) }
@@ -5,37 +7,39 @@ RSpec.describe SolidusSupport do
5
7
  let(:credit_card) { nil }
6
8
 
7
9
  before do
8
- allow(described_class).to receive(:solidus_gem_version) do
10
+ allow(Spree).to receive(:solidus_gem_version) do
9
11
  Gem::Version.new(solidus_version)
10
12
  end
11
13
  end
12
14
 
13
- context 'For Solidus < 2.3' do
15
+ context 'with Solidus < 2.3' do
14
16
  let(:solidus_version) { '2.2.1' }
15
17
 
16
18
  it { is_expected.to eq(Spree::Gateway) }
17
19
  end
18
20
 
19
- context 'For Solidus >= 2.3' do
21
+ context 'with Solidus >= 2.3' do
20
22
  let(:solidus_version) { '2.3.1' }
21
23
 
22
24
  it { is_expected.to eq(Spree::PaymentMethod) }
23
25
  end
24
26
 
27
+ # rubocop:disable RSpec/NestedGroups
25
28
  context 'with credit_card: true' do
26
29
  let(:credit_card) { true }
27
30
 
28
- context 'For Solidus < 2.3' do
31
+ context 'with Solidus < 2.3' do
29
32
  let(:solidus_version) { '2.2.1' }
30
33
 
31
34
  it { is_expected.to eq(Spree::Gateway) }
32
35
  end
33
36
 
34
- context 'For Solidus >= 2.3' do
37
+ context 'with Solidus >= 2.3' do
35
38
  let(:solidus_version) { '2.3.1' }
36
39
 
37
40
  it { is_expected.to eq(Spree::PaymentMethod::CreditCard) }
38
41
  end
39
42
  end
43
+ # rubocop:enable RSpec/NestedGroups
40
44
  end
41
45
  end
@@ -1,2 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Configure Rails Environment
4
+ ENV['RAILS_ENV'] = 'test'
5
+
6
+ # Run Coverage report
7
+ require 'solidus_dev_support/rspec/coverage'
8
+
9
+ # Load dummy app
1
10
  require_relative 'support/dummy_app'
2
- require 'solidus_support/extension/spec_helper'
11
+
12
+ # Requires factories and other useful helpers defined in spree_core.
13
+ require 'solidus_dev_support/rspec/spec_helper'
14
+
15
+ # Requires supporting ruby files with custom matchers and macros, etc,
16
+ # in spec/support/ and its subdirectories.
17
+ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  ENV['RAILS_ENV'] = 'test'
2
4
  ENV['DISABLE_DATABASE_ENVIRONMENT_CHECK'] = '1'
3
5
 
@@ -1,4 +1,16 @@
1
+ <% if ENV['DB'] == 'postgresql' %>
2
+ test:
3
+ adapter: postgresql
4
+ database: circle_test
5
+ username: root
6
+ <% elsif ENV['DB'] == 'mysql' %>
7
+ test:
8
+ adapter: mysql2
9
+ database: circle_test
10
+ username: root
11
+ <% else %>
1
12
  test:
2
13
  adapter: sqlite3
3
14
  database: ':memory:'
4
15
  timeout: 10000
16
+ <% end %>
metadata CHANGED
@@ -1,59 +1,65 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Hawthorn
8
- autorequire:
9
- bindir: bin
8
+ autorequire:
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-04 00:00:00.000000000 Z
11
+ date: 2020-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.14'
20
- type: :development
19
+ version: '5.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 7.0.x
23
+ type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '5.2'
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: '1.14'
32
+ version: 7.0.x
27
33
  - !ruby/object:Gem::Dependency
28
- name: rake
34
+ name: bundler
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - "~>"
37
+ - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: '10.0'
39
+ version: '0'
34
40
  type: :development
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - "~>"
44
+ - - ">="
39
45
  - !ruby/object:Gem::Version
40
- version: '10.0'
46
+ version: '0'
41
47
  - !ruby/object:Gem::Dependency
42
- name: rspec-rails
48
+ name: rake
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - "~>"
51
+ - - ">="
46
52
  - !ruby/object:Gem::Version
47
- version: '3.7'
53
+ version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - "~>"
58
+ - - ">="
53
59
  - !ruby/object:Gem::Version
54
- version: '3.7'
60
+ version: '0'
55
61
  - !ruby/object:Gem::Dependency
56
- name: rubocop
62
+ name: rspec-rails
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - ">="
@@ -67,7 +73,7 @@ dependencies:
67
73
  - !ruby/object:Gem::Version
68
74
  version: '0'
69
75
  - !ruby/object:Gem::Dependency
70
- name: rubocop-rspec
76
+ name: rubocop
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - ">="
@@ -81,7 +87,7 @@ dependencies:
81
87
  - !ruby/object:Gem::Version
82
88
  version: '0'
83
89
  - !ruby/object:Gem::Dependency
84
- name: solidus_core
90
+ name: rubocop-rspec
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
93
  - - ">="
@@ -95,13 +101,13 @@ dependencies:
95
101
  - !ruby/object:Gem::Version
96
102
  version: '0'
97
103
  - !ruby/object:Gem::Dependency
98
- name: capybara-screenshot
104
+ name: solidus_core
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
107
  - - ">="
102
108
  - !ruby/object:Gem::Version
103
109
  version: '0'
104
- type: :runtime
110
+ type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
@@ -109,50 +115,52 @@ dependencies:
109
115
  - !ruby/object:Gem::Version
110
116
  version: '0'
111
117
  - !ruby/object:Gem::Dependency
112
- name: codecov
118
+ name: solidus_dev_support
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
121
  - - ">="
116
122
  - !ruby/object:Gem::Version
117
123
  version: '0'
118
- type: :runtime
124
+ type: :development
119
125
  prerelease: false
120
126
  version_requirements: !ruby/object:Gem::Requirement
121
127
  requirements:
122
128
  - - ">="
123
129
  - !ruby/object:Gem::Version
124
130
  version: '0'
125
- description: Collection of common functionality for solidus extensions
126
- email:
127
- - john@stembolt.com
131
+ description:
132
+ email: john@stembolt.com
128
133
  executables: []
129
134
  extensions: []
130
135
  extra_rdoc_files: []
131
136
  files:
137
+ - ".circleci/config.yml"
138
+ - ".gem_release.yml"
139
+ - ".github/stale.yml"
132
140
  - ".gitignore"
133
141
  - ".rspec"
134
142
  - ".rubocop.yml"
135
- - ".travis.yml"
143
+ - CHANGELOG.md
136
144
  - Gemfile
145
+ - LICENSE
137
146
  - README.md
138
147
  - Rakefile
148
+ - bin/console
149
+ - bin/setup
139
150
  - lib/solidus_support.rb
140
- - lib/solidus_support/extension/coverage.rb
141
- - lib/solidus_support/extension/feature_helper.rb
142
- - lib/solidus_support/extension/rails_helper.rb
143
- - lib/solidus_support/extension/spec_helper.rb
151
+ - lib/solidus_support/engine_extensions.rb
144
152
  - lib/solidus_support/migration.rb
145
- - lib/solidus_support/testing_support/preferences.rb
146
153
  - lib/solidus_support/version.rb
147
154
  - solidus_support.gemspec
148
155
  - spec/solidus_support_spec.rb
149
156
  - spec/spec_helper.rb
150
157
  - spec/support/dummy_app.rb
151
158
  - spec/support/dummy_app/database.yml
152
- homepage: https://solidus.io
153
- licenses: []
159
+ homepage: https://github.com/solidusio/solidus_support
160
+ licenses:
161
+ - BSD-3-Clause
154
162
  metadata: {}
155
- post_install_message:
163
+ post_install_message:
156
164
  rdoc_options: []
157
165
  require_paths:
158
166
  - lib
@@ -167,8 +175,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
175
  - !ruby/object:Gem::Version
168
176
  version: '0'
169
177
  requirements: []
170
- rubygems_version: 3.0.6
171
- signing_key:
178
+ rubygems_version: 3.0.8
179
+ signing_key:
172
180
  specification_version: 4
173
- summary: A common functionality for solidus extensions
174
- test_files: []
181
+ summary: Common runtime helpers for Solidus extensions.
182
+ test_files:
183
+ - spec/spec_helper.rb
184
+ - spec/solidus_support_spec.rb
185
+ - spec/support/dummy_app.rb
186
+ - spec/support/dummy_app/database.yml
@@ -1,18 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- dist: trusty
4
- cache:
5
- bundler: true
6
- before_install:
7
- - "gem install bundler --pre"
8
- - "bundler -v"
9
- rvm:
10
- - 2.4.2
11
- env:
12
- matrix:
13
- - SOLIDUS_BRANCH=v2.4
14
- - SOLIDUS_BRANCH=v2.5
15
- - SOLIDUS_BRANCH=v2.6
16
- - SOLIDUS_BRANCH=v2.7
17
- - SOLIDUS_BRANCH=v2.8
18
- - SOLIDUS_BRANCH=master
@@ -1,16 +0,0 @@
1
- # A SimpleCov and Codecov configuration to track code coverage in your extension
2
- #
3
- # Include it AT THE TOP of your spec/spec_helper.rb:
4
- #
5
- # require 'solidus_support/extension/coverage'
6
- #
7
- # Note that things may not work properly if you don't include this at the very top!
8
- #
9
-
10
- require 'simplecov'
11
- SimpleCov.start 'rails'
12
-
13
- if ENV['CI']
14
- require 'codecov'
15
- SimpleCov.formatter = SimpleCov::Formatter::Codecov
16
- end
@@ -1,44 +0,0 @@
1
- # A basic feature_helper to be included as the starting point for extensions
2
- #
3
- # Can be required from an extension's spec/feature_helper.rb
4
- #
5
- # require 'solidus_support/extension/feature_helper'
6
- #
7
-
8
- require 'solidus_support/extension/rails_helper'
9
-
10
- require 'capybara-screenshot/rspec'
11
- require 'selenium/webdriver'
12
-
13
- Capybara.register_driver :selenium_chrome_headless do |app|
14
- capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
15
- chromeOptions: { args: %w[headless start-maximized] }
16
- )
17
-
18
- Capybara::Selenium::Driver.new(
19
- app,
20
- browser: :chrome,
21
- desired_capabilities: capabilities
22
- )
23
- end
24
-
25
- Capybara.javascript_driver = (ENV['CAPYBARA_DRIVER'] || :selenium_chrome_headless).to_sym
26
- Capybara.default_max_wait_time = 10
27
-
28
- require 'spree/testing_support/capybara_ext'
29
-
30
- RSpec.configure do |config|
31
- config.when_first_matching_example_defined(type: :feature) do
32
- config.before :suite do
33
- # Preload assets
34
- if Rails.application.respond_to?(:precompiled_assets)
35
- Rails.application.precompiled_assets
36
- else
37
- # For older sprockets 2.x
38
- Rails.application.config.assets.precompile.each do |asset|
39
- Rails.application.assets.find_asset(asset)
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,45 +0,0 @@
1
- # A basic rails_helper to be included as the starting point for extensions
2
- #
3
- # Can be required from an extension's spec/rails_helper.rb
4
- #
5
- # require 'solidus_support/extension/rails_helper'
6
- #
7
-
8
- require 'solidus_support/extension/spec_helper'
9
-
10
- require 'rspec/rails'
11
- require 'database_cleaner'
12
- require 'ffaker'
13
-
14
- require 'spree/testing_support/authorization_helpers'
15
- require 'spree/testing_support/factories'
16
- require 'spree/testing_support/url_helpers'
17
- require 'spree/testing_support/preferences'
18
- require 'solidus_support/testing_support/preferences'
19
-
20
- RSpec.configure do |config|
21
- config.include FactoryBot::Syntax::Methods
22
-
23
- # visit spree.admin_path
24
- # current_path.should eql(spree.products_path)
25
- config.include Spree::TestingSupport::UrlHelpers
26
-
27
- config.include Spree::TestingSupport::Preferences
28
- config.include SolidusSupport::TestingSupport::Preferences
29
-
30
- config.before :suite do
31
- DatabaseCleaner.clean_with :truncation
32
- end
33
-
34
- # Around each spec check if it is a Javascript test and switch between using
35
- # database transactions or not where necessary.
36
- config.around(:each) do |example|
37
- DatabaseCleaner.strategy = RSpec.current_example.metadata[:js] ? :truncation : :transaction
38
-
39
- DatabaseCleaner.cleaning do
40
- reset_spree_preferences unless SolidusSupport.reset_spree_preferences_deprecated?
41
-
42
- example.run
43
- end
44
- end
45
- end
@@ -1,19 +0,0 @@
1
- # A basic spec_helper to be included as the starting point for extensions
2
- #
3
- # Can be required from an extension's spec/spec_helper.rb
4
- #
5
- # require 'solidus_support/extension/spec_helper'
6
- #
7
-
8
- RSpec.configure do |config|
9
- config.filter_run focus: true
10
- config.run_all_when_everything_filtered = true
11
-
12
- config.mock_with :rspec
13
- config.color = true
14
-
15
- config.fail_fast = ENV['FAIL_FAST'] || false
16
- config.order = 'random'
17
-
18
- Kernel.srand config.seed
19
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SolidusSupport
4
- module TestingSupport
5
- module Preferences
6
- # This wrapper method allows to stub spree preferences using
7
- # the new standard way of solidus core but also works with
8
- # old versions that does not have the stub_spree_preferences
9
- # method yet. This way we can start using this method in our
10
- # extensions safely.
11
- #
12
- # To have this available, it is needed to require in the
13
- # spec/spec_helper.rb of the extension both:
14
- #
15
- # require 'spree/testing_support/preferences'
16
- # require 'solidus_support/testing_support/preferences'
17
- #
18
- # @example Set a preference on Spree::Config
19
- # stub_spree_preferences(allow_guest_checkout: false)
20
- #
21
- # @example Set a preference on Spree::Api::Config
22
- # stub_spree_preferences(Spree::Api::Config, requires_authentication: false)
23
- #
24
- # @example Set a preference on a custom Spree::CustomExtension::Config
25
- # stub_spree_preferences(Spree::CustomExtension::Config, custom_pref: true)
26
- #
27
- # @param prefs_or_conf_class [Class, Hash] the class we want to stub
28
- # preferences for or the preferences hash (see prefs param). If this
29
- # param is an Hash, preferences will be stubbed on Spree::Config.
30
- # @param prefs [Hash, nil] names and values to be stubbed
31
- def stub_spree_preferences(prefs_or_conf_class, prefs = nil)
32
- super && return if SolidusSupport.reset_spree_preferences_deprecated?
33
-
34
- if prefs_or_conf_class.is_a?(Hash)
35
- preference_store_class = Spree::Config
36
- preferences = prefs_or_conf_class
37
- else
38
- preference_store_class = prefs_or_conf_class
39
- preferences = prefs
40
- end
41
- preference_store_class.set(preferences)
42
- end
43
- end
44
- end
45
- end