solidus_support 0.3.3 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32902c75bfdc08a3c98057acc7a3ad00195192193069e1d82f1b313ebe838928
4
- data.tar.gz: 4d6ef910489780004e48196d07a3da7c0f105d106753bf66c80dcaf8a57a1b9f
3
+ metadata.gz: 06f44b07249f357975f818d24cd533b0e4419c957c1608c6dfd398956176a456
4
+ data.tar.gz: 7a5c3c693cb6a9c0d36a056bbab25338c54a756a4a2f745a997a3ae1f1a221cc
5
5
  SHA512:
6
- metadata.gz: 1122450b8f36e775258033a303fa56ab125f7856c24de99f35d2cb2f890a126ac10c57e75346c568e3a81a04e27bdd40ff2a0ce7e8009a8d8433c6143a89aa00
7
- data.tar.gz: 58f2ef36a526e9d31873cc89efe76a06c3061731d816c7caae1a3b45d17940db6199229857a745989068029d3de13bf44a5f65f3ed388b929e4827120f647a80
6
+ metadata.gz: aa4396cf0f842d9c14a3a846cb6e49b053eeaebbfc43d7f6f9b42523054f0d1574eaaa8756a433d2c62902fed6b8ac0539bcb4a6da87d4671285d2db87fff866
7
+ data.tar.gz: 2674c879410db8025d8dba10e961598c7bc28b7b17e8bb6d771ece89ae280aad1c257acb948c5ee6c0c810e9574874529c66c3563968bcefc15dc54c5e3162e1
@@ -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
data/.gitignore CHANGED
@@ -8,3 +8,5 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  /log/
11
+ /spec/
12
+
data/.rubocop.yml CHANGED
@@ -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_extension_dev_tools/rubocop
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  branch = ENV.fetch('SOLIDUS_BRANCH', 'master')
@@ -6,5 +8,15 @@ gem 'solidus_core', github: 'solidusio/solidus', branch: branch
6
8
  # Specify your gem's dependencies in solidus_support.gemspec
7
9
  gemspec
8
10
 
11
+ gem 'solidus_extension_dev_tools', github: 'solidusio-contrib/solidus_extension_dev_tools'
12
+ gem 'sprockets', '~> 3'
9
13
  gem 'sprockets-rails'
10
- gem 'sqlite3'
14
+
15
+ case ENV['DB']
16
+ when 'postgresql'
17
+ gem 'pg'
18
+ when 'mysql'
19
+ gem 'mysql2'
20
+ else
21
+ gem 'sqlite3'
22
+ end
data/README.md CHANGED
@@ -24,62 +24,38 @@ SolidusSupport::Migration[5.0] # same as `ActiveRecord::Migration[5.0]`
24
24
 
25
25
  There's no reason to use `SolidusSupport::Migration[5.0]` over `ActiveRecord::Migration[5.0]`, but it is provided.
26
26
 
27
- ### Testing Helpers
27
+ ### Engine Extensions
28
28
 
29
- This gem provides some useful helpers for RSpec to setup an extension's test
30
- environment easily.
29
+ This extension provides a module that extends `Rails::Engine` functionalities
30
+ to support loading correctly the decorators class created into an extension
31
+ both for development and production enviroments.
31
32
 
32
- Into your extension's spec/spec_helper.rb:
33
+ To use it just include the provided module in the Engine as follow:
33
34
 
34
35
  ```ruby
35
- require "solidus_support/extension/feature_helper"
36
+ module SolidusExtensionName
37
+ class Engine < Rails::Engine
38
+ engine_name 'solidus_extension_name'
39
+
40
+ include SolidusSupport::EngineExtensions::Decorators
41
+ # ...
42
+ end
43
+ end
36
44
  ```
37
45
 
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.
41
-
42
- This helper requires the `rails_helper`, also provided by this gem and
43
- requireable as a stand-alone helper.
44
-
45
- By doing:
46
-
47
- ```ruby
48
- require "solidus_support/extension/rails_helper"
49
- ```
50
-
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:
46
+ To make it work, be sure to remove the previous implementation from the
47
+ Engine, that should be something like:
58
48
 
59
49
  ```ruby
60
- require "solidus_support/extension/spec_helper"
61
- ```
62
-
63
- ### Coverage Collection
50
+ def self.activate
51
+ Dir.glob(File.join(root, "app/**/*_decorator*.rb")) do |c|
52
+ Rails.configuration.cache_classes ? require(c) : load(c)
53
+ end
54
+ end
64
55
 
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`:
68
-
69
- ```ruby
70
- require "solidus_support/extension/coverage"
56
+ config.to_prepare(&method(:activate).to_proc)
71
57
  ```
72
58
 
73
- **Note: Make sure to add this at the VERY TOP of your spec_helper,
74
- otherwise you'll get skewed coverage reports!**
75
-
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!
79
-
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.
82
-
83
59
  ## Development
84
60
 
85
61
  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.
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler'
2
4
 
3
5
  begin
@@ -1,5 +1,8 @@
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
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'engine_extensions/decorators'
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusSupport
4
+ module EngineExtensions
5
+ module Decorators
6
+ def self.included(engine)
7
+ engine.class_eval do
8
+ extend ClassMethods
9
+ config.to_prepare(&method(:activate).to_proc)
10
+ end
11
+ end
12
+
13
+ module ClassMethods
14
+ def activate
15
+ base_path = root.join('app/decorators')
16
+
17
+ if Rails.respond_to?(:autoloaders)
18
+ # Add decorators folder to the Rails autoloader. This
19
+ # allows Zeitwerk to resolve decorators paths correctly,
20
+ # when used.
21
+ Dir.glob(base_path.join('*')) do |decorators_folder|
22
+ Rails.autoloaders.main.push_dir(decorators_folder)
23
+ end
24
+ end
25
+
26
+ # Load decorator files. This is needed since they are
27
+ # never explicitely referenced in the application code
28
+ # and won't be loaded by default. We need them to be
29
+ # executed anyway to extend exisiting classes.
30
+ Dir.glob(base_path.join('**/*.rb')) do |decorator_path|
31
+ Rails.configuration.cache_classes ? require(decorator_path) : load(decorator_path)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ 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.4.0'
3
5
  end
@@ -17,13 +17,11 @@ Gem::Specification.new do |spec|
17
17
  spec.files = `git ls-files -z`.split("\x0")
18
18
  spec.require_paths = ['lib']
19
19
 
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'
20
+ spec.add_development_dependency 'bundler'
21
+ spec.add_development_dependency 'rake'
22
+ spec.add_development_dependency 'rspec-rails'
23
23
  spec.add_development_dependency 'rubocop'
24
24
  spec.add_development_dependency 'rubocop-rspec'
25
25
  spec.add_development_dependency 'solidus_core'
26
-
27
- spec.add_dependency 'capybara-screenshot'
28
- spec.add_dependency 'codecov'
26
+ spec.add_development_dependency 'solidus_extension_dev_tools'
29
27
  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) }
@@ -10,32 +12,34 @@ RSpec.describe SolidusSupport do
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
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'support/dummy_app'
2
- require 'solidus_support/extension/spec_helper'
4
+ require 'solidus_extension_dev_tools/rspec/spec_helper'
@@ -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,45 @@
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.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Hawthorn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-04 00:00:00.000000000 Z
11
+ date: 2019-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.14'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.14'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec-rails
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.7'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '3.7'
55
- - !ruby/object:Gem::Dependency
56
- name: rubocop
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - ">="
@@ -67,7 +53,7 @@ dependencies:
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
- name: rubocop-rspec
56
+ name: rubocop
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - ">="
@@ -81,7 +67,7 @@ dependencies:
81
67
  - !ruby/object:Gem::Version
82
68
  version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
- name: solidus_core
70
+ name: rubocop-rspec
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - ">="
@@ -95,13 +81,13 @@ dependencies:
95
81
  - !ruby/object:Gem::Version
96
82
  version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
- name: capybara-screenshot
84
+ name: solidus_core
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - ">="
102
88
  - !ruby/object:Gem::Version
103
89
  version: '0'
104
- type: :runtime
90
+ type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
@@ -109,13 +95,13 @@ dependencies:
109
95
  - !ruby/object:Gem::Version
110
96
  version: '0'
111
97
  - !ruby/object:Gem::Dependency
112
- name: codecov
98
+ name: solidus_extension_dev_tools
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
101
  - - ">="
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
- type: :runtime
104
+ type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
@@ -129,6 +115,7 @@ executables: []
129
115
  extensions: []
130
116
  extra_rdoc_files: []
131
117
  files:
118
+ - ".circleci/config.yml"
132
119
  - ".gitignore"
133
120
  - ".rspec"
134
121
  - ".rubocop.yml"
@@ -137,12 +124,9 @@ files:
137
124
  - README.md
138
125
  - Rakefile
139
126
  - 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
127
+ - lib/solidus_support/engine_extensions.rb
128
+ - lib/solidus_support/engine_extensions/decorators.rb
144
129
  - lib/solidus_support/migration.rb
145
- - lib/solidus_support/testing_support/preferences.rb
146
130
  - lib/solidus_support/version.rb
147
131
  - solidus_support.gemspec
148
132
  - spec/solidus_support_spec.rb
@@ -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