solidus_core 2.10.0.beta1 → 2.10.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/app/helpers/spree/base_helper.rb +4 -4
- data/app/helpers/spree/products_helper.rb +2 -1
- data/app/jobs/spree/promotion_code_batch_job.rb +2 -2
- data/app/models/concerns/spree/user_methods.rb +2 -2
- data/app/models/spree/address.rb +11 -15
- data/app/models/spree/adjustment.rb +11 -0
- data/app/models/spree/calculator/price_sack.rb +1 -1
- data/app/models/spree/calculator/shipping/flexi_rate.rb +2 -2
- data/app/models/spree/calculator/tiered_flat_rate.rb +5 -5
- data/app/models/spree/calculator/tiered_percent.rb +6 -6
- data/app/models/spree/carton.rb +1 -1
- data/app/models/spree/credit_card.rb +2 -2
- data/app/models/spree/inventory_unit.rb +1 -19
- data/app/models/spree/line_item.rb +1 -1
- data/app/models/spree/order.rb +3 -2
- data/app/models/spree/order/checkout.rb +1 -1
- data/app/models/spree/order/payments.rb +2 -2
- data/app/models/spree/order_capturing.rb +2 -2
- data/app/models/spree/order_taxation.rb +2 -2
- data/app/models/spree/payment.rb +4 -41
- data/app/models/spree/payment/processing.rb +2 -2
- data/app/models/spree/payment_method.rb +2 -2
- data/app/models/spree/product.rb +3 -3
- data/app/models/spree/product/scopes.rb +8 -7
- data/app/models/spree/promotion.rb +27 -12
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +1 -1
- data/app/models/spree/promotion/actions/free_shipping.rb +1 -1
- data/app/models/spree/promotion/rules/option_value.rb +2 -2
- data/app/models/spree/promotion/rules/product.rb +3 -3
- data/app/models/spree/promotion_action.rb +1 -1
- data/app/models/spree/promotion_chooser.rb +2 -2
- data/app/models/spree/promotion_code.rb +9 -8
- data/app/models/spree/promotion_code/batch_builder.rb +3 -3
- data/app/models/spree/promotion_rule.rb +1 -1
- data/app/models/spree/refund.rb +2 -2
- data/app/models/spree/reimbursement.rb +3 -11
- data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +2 -2
- data/app/models/spree/return_authorization.rb +1 -7
- data/app/models/spree/return_item.rb +3 -42
- data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
- data/app/models/spree/shipment.rb +4 -38
- data/app/models/spree/shipping_calculator.rb +0 -4
- data/app/models/spree/shipping_method.rb +1 -1
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/stock/differentiator.rb +1 -1
- data/app/models/spree/stock/package.rb +1 -1
- data/app/models/spree/stock_item.rb +1 -1
- data/app/models/spree/stock_quantities.rb +13 -12
- data/app/models/spree/tax_calculator/default.rb +0 -4
- data/app/models/spree/tax_calculator/shipping_rate.rb +0 -3
- data/app/models/spree/tax_rate.rb +4 -0
- data/app/models/spree/taxon/paperclip_attachment.rb +13 -0
- data/app/models/spree/user_last_url_storer.rb +46 -0
- data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +36 -0
- data/app/models/spree/variant.rb +9 -9
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +1 -1
- data/app/models/spree/zone.rb +1 -1
- data/config/initializers/money.rb +2 -0
- data/config/locales/en.yml +12 -0
- data/lib/generators/spree/install/install_generator.rb +3 -0
- data/lib/generators/spree/install/templates/config/initializers/spree.rb.tt +8 -0
- data/lib/spree/app_configuration.rb +18 -3
- data/lib/spree/core.rb +12 -0
- data/lib/spree/core/controller_helpers/auth.rb +1 -13
- data/lib/spree/core/engine.rb +2 -2
- data/lib/spree/core/environment_extension.rb +9 -0
- data/lib/spree/core/importer/order.rb +26 -26
- data/lib/spree/core/product_filters.rb +15 -15
- data/lib/spree/core/role_configuration.rb +2 -2
- data/lib/spree/core/search/variant.rb +1 -1
- data/lib/spree/core/state_machines.rb +78 -0
- data/lib/spree/core/state_machines/inventory_unit.rb +42 -0
- data/lib/spree/core/state_machines/payment.rb +61 -0
- data/lib/spree/core/state_machines/reimbursement.rb +33 -0
- data/lib/spree/core/state_machines/return_authorization.rb +32 -0
- data/lib/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
- data/lib/spree/core/state_machines/return_item/reception_status.rb +42 -0
- data/lib/spree/core/state_machines/shipment.rb +58 -0
- data/lib/spree/core/stock_configuration.rb +1 -0
- data/lib/spree/core/validators/email.rb +1 -8
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/money.rb +2 -2
- data/lib/spree/permission_sets/user_management.rb +3 -0
- data/lib/spree/permitted_attributes.rb +3 -3
- data/lib/spree/preferences/static_model_preferences.rb +2 -2
- data/lib/spree/testing_support/dummy_app.rb +4 -1
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +8 -1
- data/lib/spree/testing_support/factories/promotion_factory.rb +7 -0
- data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
- data/solidus_core.gemspec +2 -2
- data/spec/lib/spree/core/environment_extension_spec.rb +12 -1
- data/spec/lib/spree/core/stock_configuration_spec.rb +36 -0
- data/spec/lib/spree/core/validators/email_spec.rb +18 -18
- data/spec/models/spree/address_spec.rb +23 -0
- data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +1 -1
- data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +1 -1
- data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +2 -2
- data/spec/models/spree/calculator/shipping/per_item_spec.rb +1 -1
- data/spec/models/spree/calculator/shipping/price_sack_spec.rb +24 -15
- data/spec/models/spree/carton_spec.rb +8 -0
- data/spec/models/spree/classification_spec.rb +21 -9
- data/spec/models/spree/concerns/user_address_book_spec.rb +4 -4
- data/spec/models/spree/concerns/user_methods_spec.rb +2 -1
- data/spec/models/spree/order_merger_spec.rb +3 -3
- data/spec/models/spree/order_spec.rb +8 -15
- data/spec/models/spree/order_updater_spec.rb +4 -3
- data/spec/models/spree/payment_create_spec.rb +4 -14
- data/spec/models/spree/permission_sets/user_management_spec.rb +2 -0
- data/spec/models/spree/preference_spec.rb +4 -4
- data/spec/models/spree/preferences/preferable_spec.rb +3 -3
- data/spec/models/spree/preferences/statically_configurable_spec.rb +2 -2
- data/spec/models/spree/promotion_rule_spec.rb +6 -6
- data/spec/models/spree/promotion_spec.rb +73 -52
- data/spec/models/spree/reimbursement_type/original_payment_spec.rb +1 -1
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +1 -1
- data/spec/models/spree/returns_calculator_spec.rb +2 -2
- data/spec/models/spree/shipping_calculator_spec.rb +1 -13
- data/spec/models/spree/shipping_method_spec.rb +32 -0
- data/spec/models/spree/stock/availability_validator_spec.rb +2 -2
- data/spec/models/spree/stock/differentiator_spec.rb +2 -2
- data/spec/models/spree/stock/estimator_spec.rb +3 -3
- data/spec/models/spree/stock/package_spec.rb +28 -28
- data/spec/models/spree/stock/simple_coordinator_spec.rb +11 -11
- data/spec/models/spree/stock/splitter/base_spec.rb +4 -4
- data/spec/models/spree/stock/splitter/shipping_category_spec.rb +7 -7
- data/spec/models/spree/stock_quantities_spec.rb +1 -1
- data/spec/models/spree/store_credit_spec.rb +1 -1
- data/spec/models/spree/tax_rate_spec.rb +1 -0
- data/spec/models/spree/taxons/paperclip_attachment_spec.rb +29 -0
- data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +31 -0
- data/spec/models/spree/user_last_url_storer_spec.rb +60 -0
- metadata +17 -12
- data/spec/migrate/20190106184413_remove_code_from_spree_promotions_spec.rb +0 -162
- data/spec/models/spree/order/updating_spec.rb +0 -18
|
@@ -12,27 +12,27 @@ RSpec.describe Spree::EmailValidator do
|
|
|
12
12
|
|
|
13
13
|
let(:valid_emails) {
|
|
14
14
|
[
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
'valid@email.com',
|
|
16
|
+
'valid@email.com.uk',
|
|
17
|
+
'e@email.com',
|
|
18
|
+
'valid+email@email.com',
|
|
19
|
+
'valid-email@email.com',
|
|
20
|
+
'valid_email@email.com',
|
|
21
|
+
'valid.email@email.com'
|
|
22
|
+
]
|
|
23
23
|
}
|
|
24
24
|
let(:invalid_emails) {
|
|
25
25
|
[
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
26
|
+
'invalid email@email.com',
|
|
27
|
+
'.invalid.email@email.com',
|
|
28
|
+
'invalid.email.@email.com',
|
|
29
|
+
'@email.com',
|
|
30
|
+
'.@email.com',
|
|
31
|
+
'invalidemailemail.com',
|
|
32
|
+
'@invalid.email@email.com',
|
|
33
|
+
'invalid@email@email.com',
|
|
34
|
+
'invalid.email@@email.com'
|
|
35
|
+
]
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
it 'validates valid email addresses' do
|
|
@@ -152,6 +152,29 @@ RSpec.describe Spree::Address, type: :model do
|
|
|
152
152
|
it "sets up a new record with Spree::Config[:default_country_iso]" do
|
|
153
153
|
expect(Spree::Address.build_default.country).to eq default_country
|
|
154
154
|
end
|
|
155
|
+
|
|
156
|
+
it 'accepts other attributes' do
|
|
157
|
+
address = Spree::Address.build_default(first_name: 'Ryan')
|
|
158
|
+
|
|
159
|
+
expect(address.country).to eq default_country
|
|
160
|
+
expect(address.first_name).to eq 'Ryan'
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
it 'accepts a block' do
|
|
164
|
+
address = Spree::Address.build_default do |record|
|
|
165
|
+
record.first_name = 'Ryan'
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
expect(address.country).to eq default_country
|
|
169
|
+
expect(address.first_name).to eq 'Ryan'
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
it 'can override the country' do
|
|
173
|
+
another_country = build :country
|
|
174
|
+
address = Spree::Address.build_default(country: another_country)
|
|
175
|
+
|
|
176
|
+
expect(address.country).to eq another_country
|
|
177
|
+
end
|
|
155
178
|
end
|
|
156
179
|
|
|
157
180
|
# Regression test for https://github.com/spree/spree/issues/1142
|
|
@@ -6,7 +6,7 @@ require 'shared_examples/calculator_shared_examples'
|
|
|
6
6
|
module Spree
|
|
7
7
|
module Calculator::Shipping
|
|
8
8
|
RSpec.describe FlatRate, type: :model do
|
|
9
|
-
subject {
|
|
9
|
+
subject { described_class.new(preferred_amount: 4.00) }
|
|
10
10
|
|
|
11
11
|
it_behaves_like 'a calculator with a description'
|
|
12
12
|
|
|
@@ -15,7 +15,7 @@ module Spree
|
|
|
15
15
|
build(:stock_package, variants_contents: { variant1 => 4, variant2 => 6 })
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
let(:subject) {
|
|
18
|
+
let(:subject) { described_class.new }
|
|
19
19
|
|
|
20
20
|
context "compute" do
|
|
21
21
|
it "should compute amount correctly when all fees are 0" do
|
|
@@ -46,7 +46,7 @@ module Spree
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
it "should allow creation of new object with all the attributes" do
|
|
49
|
-
|
|
49
|
+
described_class.new(preferred_first_item: 1,
|
|
50
50
|
preferred_additional_item: 1,
|
|
51
51
|
preferred_max_items: 1)
|
|
52
52
|
end
|
|
@@ -15,7 +15,7 @@ module Spree
|
|
|
15
15
|
build(:stock_package, variants_contents: { variant1 => 5, variant2 => 3 })
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
subject {
|
|
18
|
+
subject { described_class.new(preferred_amount: 10) }
|
|
19
19
|
|
|
20
20
|
it "correctly calculates per item shipping" do
|
|
21
21
|
expect(subject.compute(package).to_f).to eq(80) # 5 x 10 + 3 x 10
|
|
@@ -5,7 +5,7 @@ require 'shared_examples/calculator_shared_examples'
|
|
|
5
5
|
|
|
6
6
|
RSpec.describe Spree::Calculator::Shipping::PriceSack, type: :model do
|
|
7
7
|
let(:calculator) do
|
|
8
|
-
calculator =
|
|
8
|
+
calculator = described_class.new
|
|
9
9
|
calculator.preferred_minimal_amount = 5
|
|
10
10
|
calculator.preferred_normal_amount = 10
|
|
11
11
|
calculator.preferred_discount_amount = 1
|
|
@@ -14,22 +14,31 @@ RSpec.describe Spree::Calculator::Shipping::PriceSack, type: :model do
|
|
|
14
14
|
|
|
15
15
|
it_behaves_like 'a calculator with a description'
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe '#compute' do
|
|
18
|
+
subject { calculator.compute(package) }
|
|
19
|
+
let(:package) { build(:stock_package, variants_contents: { build(:variant) => 1 }) }
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
before do
|
|
22
|
+
# This hack is due to our factories not being so smart to understand
|
|
23
|
+
# that they should create line items with the price of the associated
|
|
24
|
+
# variant by default.
|
|
25
|
+
allow_any_instance_of(Spree::Stock::ContentItem).to receive(:price) { amount }
|
|
26
|
+
end
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
context 'when price < minimal amount' do
|
|
29
|
+
let(:amount) { 2 }
|
|
30
|
+
|
|
31
|
+
it "returns the discounted amount" do
|
|
32
|
+
expect(subject).to eq(10)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
context 'when price > minimal amount' do
|
|
37
|
+
let(:amount) { 6 }
|
|
29
38
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
it "returns the discounted amount" do
|
|
40
|
+
expect(subject).to eq(1)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
34
43
|
end
|
|
35
44
|
end
|
|
@@ -5,6 +5,14 @@ require 'rails_helper'
|
|
|
5
5
|
RSpec.describe Spree::Carton do
|
|
6
6
|
let(:carton) { create(:carton) }
|
|
7
7
|
|
|
8
|
+
describe 'shipping method' do
|
|
9
|
+
it 'returns soft deleted shipping method' do
|
|
10
|
+
carton = create(:carton)
|
|
11
|
+
carton.shipping_method.discard
|
|
12
|
+
expect(carton.reload.shipping_method).to be_present
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
8
16
|
describe "#create" do
|
|
9
17
|
subject { carton }
|
|
10
18
|
|
|
@@ -34,9 +34,21 @@ module Spree
|
|
|
34
34
|
|
|
35
35
|
context "removing product from taxon" do
|
|
36
36
|
before :each do
|
|
37
|
-
|
|
38
|
-
expect(
|
|
39
|
-
taxon_with_5_products.products.destroy(
|
|
37
|
+
element = taxon_with_5_products.products[1]
|
|
38
|
+
expect(element.classifications.first.position).to eq(2)
|
|
39
|
+
taxon_with_5_products.products.destroy(element)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "resets positions" do
|
|
43
|
+
expect positions_to_be_valid(taxon_with_5_products)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
context "Discard'ing a product" do
|
|
48
|
+
before :each do
|
|
49
|
+
element = taxon_with_5_products.products[1]
|
|
50
|
+
expect(element.classifications.first.position).to eq(2)
|
|
51
|
+
element.discard
|
|
40
52
|
end
|
|
41
53
|
|
|
42
54
|
it "resets positions" do
|
|
@@ -59,9 +71,9 @@ module Spree
|
|
|
59
71
|
|
|
60
72
|
context "removing taxon from product" do
|
|
61
73
|
before :each do
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
74
|
+
element = taxon_with_5_products.products[1]
|
|
75
|
+
element.taxons.destroy(taxon_with_5_products)
|
|
76
|
+
element.save!
|
|
65
77
|
end
|
|
66
78
|
|
|
67
79
|
it "resets positions" do
|
|
@@ -71,9 +83,9 @@ module Spree
|
|
|
71
83
|
|
|
72
84
|
context "replacing product's taxons" do
|
|
73
85
|
before :each do
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
86
|
+
element = taxon_with_5_products.products[1]
|
|
87
|
+
element.taxons = []
|
|
88
|
+
element.save!
|
|
77
89
|
end
|
|
78
90
|
|
|
79
91
|
it "resets positions" do
|
|
@@ -77,7 +77,7 @@ module Spree
|
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
context "and changing another address field at the same time" do
|
|
80
|
-
let(:updated_address_attributes) { address.attributes.tap { |
|
|
80
|
+
let(:updated_address_attributes) { address.attributes.tap { |value| value[:first_name] = "Newbie" } }
|
|
81
81
|
|
|
82
82
|
subject { user.save_in_address_book(updated_address_attributes, true) }
|
|
83
83
|
|
|
@@ -104,7 +104,7 @@ module Spree
|
|
|
104
104
|
let(:address1) { create(:address) }
|
|
105
105
|
let(:address2) { create(:address, firstname: "Different") }
|
|
106
106
|
let(:updated_attrs) do
|
|
107
|
-
address2.attributes.tap { |
|
|
107
|
+
address2.attributes.tap { |value| value[:firstname] = "Johnny" }
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
before do
|
|
@@ -191,8 +191,8 @@ module Spree
|
|
|
191
191
|
|
|
192
192
|
it "archives address2" do
|
|
193
193
|
subject
|
|
194
|
-
|
|
195
|
-
expect(
|
|
194
|
+
user_address_two = user.user_addresses.all_historical.find_by(address_id: address2.id)
|
|
195
|
+
expect(user_address_two.archived).to be true
|
|
196
196
|
end
|
|
197
197
|
|
|
198
198
|
context "via a new address that matches an archived one" do
|
|
@@ -62,7 +62,7 @@ RSpec.describe Spree::UserMethods do
|
|
|
62
62
|
|
|
63
63
|
describe '#available_store_credit_total' do
|
|
64
64
|
subject do
|
|
65
|
-
test_user.available_store_credit_total(currency: 'USD')
|
|
65
|
+
test_user.reload.available_store_credit_total(currency: 'USD')
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
context 'when the user does not have any credit' do
|
|
@@ -95,6 +95,7 @@ RSpec.describe Spree::UserMethods do
|
|
|
95
95
|
|
|
96
96
|
context 'with credits of multiple currencies' do
|
|
97
97
|
let!(:credit_3) { create(:store_credit, user: test_user, amount: 400, currency: 'GBP') }
|
|
98
|
+
before { test_user.reload }
|
|
98
99
|
|
|
99
100
|
it 'separates the currencies' do
|
|
100
101
|
expect(test_user.available_store_credit_total(currency: 'USD')).to eq(100 + 200)
|
|
@@ -77,13 +77,13 @@ module Spree
|
|
|
77
77
|
|
|
78
78
|
context "2 equal line items" do
|
|
79
79
|
before do
|
|
80
|
-
@
|
|
81
|
-
@
|
|
80
|
+
@line_item_one = order_1.contents.add(variant, 1, foos: {})
|
|
81
|
+
@line_item_two = order_2.contents.add(variant, 1, foos: {})
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
specify do
|
|
85
85
|
without_partial_double_verification do
|
|
86
|
-
expect(order_1).to receive(:foos_match).with(@
|
|
86
|
+
expect(order_1).to receive(:foos_match).with(@line_item_one, kind_of(Hash)).and_return(true)
|
|
87
87
|
end
|
|
88
88
|
subject.merge!(order_2)
|
|
89
89
|
expect(order_1.line_items.count).to eq(1)
|
|
@@ -366,26 +366,19 @@ RSpec.describe Spree::Order, type: :model do
|
|
|
366
366
|
end
|
|
367
367
|
end
|
|
368
368
|
|
|
369
|
-
context "
|
|
370
|
-
|
|
371
|
-
Spree::Order.class_eval do
|
|
372
|
-
register_update_hook :add_awesome_sauce
|
|
373
|
-
end
|
|
374
|
-
end
|
|
369
|
+
context ".register_update_hook", partial_double_verification: false do
|
|
370
|
+
let(:order) { create(:order) }
|
|
375
371
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
end
|
|
372
|
+
before { Spree::Order.register_update_hook :foo }
|
|
373
|
+
after { Spree::Order.update_hooks.clear }
|
|
379
374
|
|
|
380
|
-
it "calls
|
|
381
|
-
order
|
|
382
|
-
expect(order).to receive(:add_awesome_sauce)
|
|
375
|
+
it "calls hooks during #recalculate" do
|
|
376
|
+
expect(order).to receive :foo
|
|
383
377
|
order.recalculate
|
|
384
378
|
end
|
|
385
379
|
|
|
386
|
-
it "calls hook during finalize" do
|
|
387
|
-
order
|
|
388
|
-
expect(order).to receive(:add_awesome_sauce)
|
|
380
|
+
it "calls hook during #finalize!" do
|
|
381
|
+
expect(order).to receive :foo
|
|
389
382
|
order.finalize!
|
|
390
383
|
end
|
|
391
384
|
end
|
|
@@ -158,7 +158,8 @@ module Spree
|
|
|
158
158
|
amount: -500,
|
|
159
159
|
finalized: true,
|
|
160
160
|
label: 'Some other credit')
|
|
161
|
-
|
|
161
|
+
|
|
162
|
+
line_item.adjustments.each { |item| item.update_column(:eligible, true) }
|
|
162
163
|
|
|
163
164
|
order.recalculate
|
|
164
165
|
|
|
@@ -172,7 +173,7 @@ module Spree
|
|
|
172
173
|
create_adjustment('Promotion A', -200)
|
|
173
174
|
create_adjustment('Promotion B', -200)
|
|
174
175
|
end
|
|
175
|
-
line_item.adjustments.each { |
|
|
176
|
+
line_item.adjustments.each { |item| item.update_column(:eligible, true) }
|
|
176
177
|
|
|
177
178
|
order.recalculate
|
|
178
179
|
|
|
@@ -186,7 +187,7 @@ module Spree
|
|
|
186
187
|
create_adjustment('Promotion A', -200)
|
|
187
188
|
create_adjustment('Promotion B', -200)
|
|
188
189
|
end
|
|
189
|
-
line_item.adjustments.each { |
|
|
190
|
+
line_item.adjustments.each { |item| item.update_column(:eligible, true) }
|
|
190
191
|
|
|
191
192
|
order.recalculate
|
|
192
193
|
|
|
@@ -156,20 +156,10 @@ module Spree
|
|
|
156
156
|
context "unpermitted" do
|
|
157
157
|
let(:attributes) { ActionController::Parameters.new(valid_attributes) }
|
|
158
158
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
payment_method: nil,
|
|
164
|
-
source: nil
|
|
165
|
-
)
|
|
166
|
-
end
|
|
167
|
-
else
|
|
168
|
-
it "raises an exception" do
|
|
169
|
-
expect {
|
|
170
|
-
new_payment
|
|
171
|
-
}.to raise_exception(ActionController::UnfilteredParameters)
|
|
172
|
-
end
|
|
159
|
+
it "raises an exception" do
|
|
160
|
+
expect {
|
|
161
|
+
new_payment
|
|
162
|
+
}.to raise_exception(ActionController::UnfilteredParameters)
|
|
173
163
|
end
|
|
174
164
|
end
|
|
175
165
|
|
|
@@ -25,11 +25,13 @@ RSpec.describe Spree::PermissionSets::UserManagement do
|
|
|
25
25
|
context 'when the user does not have a role' do
|
|
26
26
|
let(:user) { create(:user) }
|
|
27
27
|
it { is_expected.to be_able_to(:update_email, user) }
|
|
28
|
+
it { is_expected.to be_able_to(:update_password, user) }
|
|
28
29
|
end
|
|
29
30
|
|
|
30
31
|
context 'when the user has a role' do
|
|
31
32
|
let(:user) { create(:user, spree_roles: [create(:role)]) }
|
|
32
33
|
it { is_expected.not_to be_able_to(:update_email, user) }
|
|
34
|
+
it { is_expected.not_to be_able_to(:update_password, user) }
|
|
33
35
|
end
|
|
34
36
|
|
|
35
37
|
it { is_expected.not_to be_able_to(:delete, Spree.user_class) }
|
|
@@ -12,10 +12,10 @@ RSpec.describe Spree::Preference, type: :model do
|
|
|
12
12
|
|
|
13
13
|
describe "type coversion for values" do
|
|
14
14
|
def round_trip_preference(key, value)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
element = Spree::Preference.new
|
|
16
|
+
element.value = value
|
|
17
|
+
element.key = key
|
|
18
|
+
element.save
|
|
19
19
|
|
|
20
20
|
Spree::Preference.find_by(key: key)
|
|
21
21
|
end
|
|
@@ -272,9 +272,9 @@ RSpec.describe Spree::Preferences::Preferable, type: :model do
|
|
|
272
272
|
before(:all) do
|
|
273
273
|
class CreatePrefTest < ActiveRecord::Migration[4.2]
|
|
274
274
|
def self.up
|
|
275
|
-
create_table :pref_tests do |
|
|
276
|
-
|
|
277
|
-
|
|
275
|
+
create_table :pref_tests do |item|
|
|
276
|
+
item.string :col
|
|
277
|
+
item.text :preferences
|
|
278
278
|
end
|
|
279
279
|
end
|
|
280
280
|
|