spree_core 3.2.1 → 3.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/spree/core/version.rb +1 -1
- data/spree_core.gemspec +1 -1
- metadata +3 -206
- data/spec/fixtures/microdata.html +0 -22
- data/spec/fixtures/microdata_itemref.html +0 -15
- data/spec/fixtures/microdata_no_itemscope.html +0 -20
- data/spec/fixtures/thinking-cat.jpg +0 -0
- data/spec/helpers/base_helper_spec.rb +0 -200
- data/spec/helpers/products_helper_spec.rb +0 -289
- data/spec/lib/calculated_adjustments_spec.rb +0 -7
- data/spec/lib/i18n_spec.rb +0 -123
- data/spec/lib/search/base_spec.rb +0 -86
- data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -103
- data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -110
- data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -17
- data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -72
- data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -39
- data/spec/lib/spree/core/delegate_belongs_to_spec.rb +0 -22
- data/spec/lib/spree/core/importer/order_spec.rb +0 -605
- data/spec/lib/spree/core/number_generator_spec.rb +0 -175
- data/spec/lib/spree/core/token_generator_spec.rb +0 -24
- data/spec/lib/spree/core/validators/email_spec.rb +0 -53
- data/spec/lib/spree/core_spec.rb +0 -23
- data/spec/lib/spree/localized_number_spec.rb +0 -48
- data/spec/lib/spree/migrations_spec.rb +0 -36
- data/spec/lib/spree/money_spec.rb +0 -122
- data/spec/lib/tasks/exchanges_spec.rb +0 -136
- data/spec/mailers/order_mailer_spec.rb +0 -122
- data/spec/mailers/reimbursement_mailer_spec.rb +0 -47
- data/spec/mailers/shipment_mailer_spec.rb +0 -81
- data/spec/mailers/test_mailer_spec.rb +0 -38
- data/spec/models/option_type_prototype_spec.rb +0 -9
- data/spec/models/spree/ability_spec.rb +0 -251
- data/spec/models/spree/address_spec.rb +0 -402
- data/spec/models/spree/adjustable/adjuster/base_spec.rb +0 -10
- data/spec/models/spree/adjustable/adjuster/promotion_spec.rb +0 -211
- data/spec/models/spree/adjustable/adjuster/tax_spec.rb +0 -86
- data/spec/models/spree/adjustable/adjustments_updater_spec.rb +0 -26
- data/spec/models/spree/adjustment_spec.rb +0 -189
- data/spec/models/spree/app_configuration_spec.rb +0 -26
- data/spec/models/spree/asset_spec.rb +0 -28
- data/spec/models/spree/calculator/default_tax_spec.rb +0 -152
- data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -25
- data/spec/models/spree/calculator/flat_rate_spec.rb +0 -47
- data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -41
- data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -15
- data/spec/models/spree/calculator/price_sack_spec.rb +0 -30
- data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -47
- data/spec/models/spree/calculator/shipping.rb +0 -8
- data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -23
- data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -13
- data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -52
- data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -20
- data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -29
- data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -40
- data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -51
- data/spec/models/spree/calculator_spec.rb +0 -69
- data/spec/models/spree/classification_spec.rb +0 -93
- data/spec/models/spree/concerns/display_money_spec.rb +0 -43
- data/spec/models/spree/concerns/user_methods_spec.rb +0 -82
- data/spec/models/spree/concerns/vat_price_calculation_spec.rb +0 -66
- data/spec/models/spree/country_spec.rb +0 -55
- data/spec/models/spree/credit_card_spec.rb +0 -328
- data/spec/models/spree/customer_return_spec.rb +0 -240
- data/spec/models/spree/exchange_spec.rb +0 -75
- data/spec/models/spree/gateway/bogus_simple.rb +0 -20
- data/spec/models/spree/gateway/bogus_spec.rb +0 -13
- data/spec/models/spree/gateway_spec.rb +0 -61
- data/spec/models/spree/image_spec.rb +0 -8
- data/spec/models/spree/inventory_unit_spec.rb +0 -256
- data/spec/models/spree/line_item_spec.rb +0 -346
- data/spec/models/spree/option_type_spec.rb +0 -14
- data/spec/models/spree/option_value_spec.rb +0 -18
- data/spec/models/spree/order/address_spec.rb +0 -50
- data/spec/models/spree/order/adjustments_spec.rb +0 -29
- data/spec/models/spree/order/callbacks_spec.rb +0 -42
- data/spec/models/spree/order/checkout_spec.rb +0 -770
- data/spec/models/spree/order/currency_updater_spec.rb +0 -32
- data/spec/models/spree/order/finalizing_spec.rb +0 -114
- data/spec/models/spree/order/helpers_spec.rb +0 -5
- data/spec/models/spree/order/payment_spec.rb +0 -214
- data/spec/models/spree/order/risk_assessment_spec.rb +0 -84
- data/spec/models/spree/order/shipments_spec.rb +0 -43
- data/spec/models/spree/order/state_machine_spec.rb +0 -212
- data/spec/models/spree/order/store_credit_spec.rb +0 -426
- data/spec/models/spree/order/tax_spec.rb +0 -84
- data/spec/models/spree/order/totals_spec.rb +0 -24
- data/spec/models/spree/order/updating_spec.rb +0 -18
- data/spec/models/spree/order/validations_spec.rb +0 -15
- data/spec/models/spree/order_contents_spec.rb +0 -297
- data/spec/models/spree/order_inventory_spec.rb +0 -239
- data/spec/models/spree/order_merger_spec.rb +0 -135
- data/spec/models/spree/order_spec.rb +0 -1046
- data/spec/models/spree/order_updater_spec.rb +0 -305
- data/spec/models/spree/payment/gateway_options_spec.rb +0 -127
- data/spec/models/spree/payment/store_credit_spec.rb +0 -60
- data/spec/models/spree/payment_method/store_credit_spec.rb +0 -291
- data/spec/models/spree/payment_method_spec.rb +0 -103
- data/spec/models/spree/payment_spec.rb +0 -919
- data/spec/models/spree/preference_spec.rb +0 -80
- data/spec/models/spree/preferences/configuration_spec.rb +0 -30
- data/spec/models/spree/preferences/preferable_spec.rb +0 -344
- data/spec/models/spree/preferences/scoped_store_spec.rb +0 -58
- data/spec/models/spree/preferences/store_spec.rb +0 -46
- data/spec/models/spree/price_spec.rb +0 -128
- data/spec/models/spree/product/scopes_spec.rb +0 -183
- data/spec/models/spree/product_duplicator_spec.rb +0 -103
- data/spec/models/spree/product_filter_spec.rb +0 -26
- data/spec/models/spree/product_option_type_spec.rb +0 -9
- data/spec/models/spree/product_promotion_rule_spec.rb +0 -9
- data/spec/models/spree/product_property_spec.rb +0 -26
- data/spec/models/spree/product_spec.rb +0 -629
- data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -113
- data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -148
- data/spec/models/spree/promotion/actions/create_line_items_spec.rb +0 -86
- data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -36
- data/spec/models/spree/promotion/rules/country_spec.rb +0 -36
- data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -75
- data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -282
- data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -42
- data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -90
- data/spec/models/spree/promotion/rules/product_spec.rb +0 -143
- data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -102
- data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -27
- data/spec/models/spree/promotion/rules/user_spec.rb +0 -45
- data/spec/models/spree/promotion_action_spec.rb +0 -10
- data/spec/models/spree/promotion_category_spec.rb +0 -17
- data/spec/models/spree/promotion_handler/cart_spec.rb +0 -102
- data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -323
- data/spec/models/spree/promotion_handler/free_shipping_spec.rb +0 -48
- data/spec/models/spree/promotion_handler/page_spec.rb +0 -44
- data/spec/models/spree/promotion_rule_spec.rb +0 -29
- data/spec/models/spree/promotion_rule_taxon_spec.rb +0 -9
- data/spec/models/spree/promotion_rule_user_spec.rb +0 -9
- data/spec/models/spree/promotion_spec.rb +0 -679
- data/spec/models/spree/property_prototype_spec.rb +0 -9
- data/spec/models/spree/property_spec.rb +0 -5
- data/spec/models/spree/prototype_spec.rb +0 -5
- data/spec/models/spree/prototype_taxon_spec.rb +0 -9
- data/spec/models/spree/refund_reason_spec.rb +0 -20
- data/spec/models/spree/refund_spec.rb +0 -195
- data/spec/models/spree/reimbursement/credit_spec.rb +0 -36
- data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -140
- data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -83
- data/spec/models/spree/reimbursement_performer_spec.rb +0 -30
- data/spec/models/spree/reimbursement_spec.rb +0 -188
- data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -63
- data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -53
- data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -46
- data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -55
- data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -101
- data/spec/models/spree/return_authorization_reason_spec.rb +0 -7
- data/spec/models/spree/return_authorization_spec.rb +0 -230
- data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -77
- data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -58
- data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -61
- data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -32
- data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -29
- data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -35
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -65
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
- data/spec/models/spree/return_item_spec.rb +0 -731
- data/spec/models/spree/returns_calculator_spec.rb +0 -14
- data/spec/models/spree/role_spec.rb +0 -7
- data/spec/models/spree/shipment_spec.rb +0 -742
- data/spec/models/spree/shipping_calculator_spec.rb +0 -45
- data/spec/models/spree/shipping_category_spec.rb +0 -19
- data/spec/models/spree/shipping_method_spec.rb +0 -95
- data/spec/models/spree/shipping_rate_spec.rb +0 -140
- data/spec/models/spree/state_spec.rb +0 -29
- data/spec/models/spree/stock/availability_validator_spec.rb +0 -36
- data/spec/models/spree/stock/content_item_spec.rb +0 -31
- data/spec/models/spree/stock/coordinator_spec.rb +0 -61
- data/spec/models/spree/stock/differentiator_spec.rb +0 -39
- data/spec/models/spree/stock/estimator_spec.rb +0 -202
- data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -38
- data/spec/models/spree/stock/package_spec.rb +0 -182
- data/spec/models/spree/stock/packer_spec.rb +0 -70
- data/spec/models/spree/stock/prioritizer_spec.rb +0 -125
- data/spec/models/spree/stock/quantifier_spec.rb +0 -126
- data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -29
- data/spec/models/spree/stock/splitter/base_spec.rb +0 -21
- data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -47
- data/spec/models/spree/stock/splitter/weight_spec.rb +0 -32
- data/spec/models/spree/stock_item_spec.rb +0 -432
- data/spec/models/spree/stock_location_spec.rb +0 -243
- data/spec/models/spree/stock_movement_spec.rb +0 -120
- data/spec/models/spree/stock_transfer_spec.rb +0 -50
- data/spec/models/spree/store_credit_event_spec.rb +0 -101
- data/spec/models/spree/store_credit_spec.rb +0 -786
- data/spec/models/spree/store_spec.rb +0 -78
- data/spec/models/spree/tax_category_spec.rb +0 -32
- data/spec/models/spree/tax_rate_spec.rb +0 -561
- data/spec/models/spree/taxon_spec.rb +0 -85
- data/spec/models/spree/taxonomy_spec.rb +0 -18
- data/spec/models/spree/tracker_spec.rb +0 -21
- data/spec/models/spree/user_spec.rb +0 -203
- data/spec/models/spree/variant_spec.rb +0 -818
- data/spec/models/spree/zone_member_spec.rb +0 -38
- data/spec/models/spree/zone_spec.rb +0 -472
- data/spec/spec_helper.rb +0 -79
- data/spec/support/big_decimal.rb +0 -5
- data/spec/support/concerns/adjustment_source.rb +0 -23
- data/spec/support/concerns/default_price.rb +0 -37
- data/spec/support/rake.rb +0 -13
- data/spec/support/test_gateway.rb +0 -2
@@ -1,289 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require "spec_helper"
|
4
|
-
|
5
|
-
module Spree
|
6
|
-
describe ProductsHelper, type: :helper do
|
7
|
-
include ProductsHelper
|
8
|
-
|
9
|
-
let(:product) { create(:product) }
|
10
|
-
let(:currency) { 'USD' }
|
11
|
-
|
12
|
-
before do
|
13
|
-
allow(helper).to receive(:current_currency) { currency }
|
14
|
-
end
|
15
|
-
|
16
|
-
context "#variant_price_diff" do
|
17
|
-
let(:product_price) { 10 }
|
18
|
-
let(:variant_price) { 10 }
|
19
|
-
|
20
|
-
before do
|
21
|
-
@variant = create(:variant, product: product)
|
22
|
-
product.price = 15
|
23
|
-
@variant.price = 10
|
24
|
-
allow(product).to receive(:amount_in) { product_price }
|
25
|
-
allow(@variant).to receive(:amount_in) { variant_price }
|
26
|
-
end
|
27
|
-
|
28
|
-
subject { helper.variant_price(@variant) }
|
29
|
-
|
30
|
-
context "when variant is same as master" do
|
31
|
-
it { is_expected.to be_nil }
|
32
|
-
end
|
33
|
-
|
34
|
-
context "when the master has no price" do
|
35
|
-
let(:product_price) { nil }
|
36
|
-
|
37
|
-
it { is_expected.to be_nil }
|
38
|
-
end
|
39
|
-
|
40
|
-
context "when currency is default" do
|
41
|
-
context "when variant is more than master" do
|
42
|
-
let(:variant_price) { 15 }
|
43
|
-
|
44
|
-
it { is_expected.to eq("(Add: $5.00)") }
|
45
|
-
# Regression test for #2737
|
46
|
-
it { is_expected.to be_html_safe }
|
47
|
-
end
|
48
|
-
|
49
|
-
context "when variant is less than master" do
|
50
|
-
let(:product_price) { 15 }
|
51
|
-
|
52
|
-
it { is_expected.to eq("(Subtract: $5.00)") }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
context "when currency is JPY" do
|
57
|
-
let(:variant_price) { 100 }
|
58
|
-
let(:product_price) { 100 }
|
59
|
-
let(:currency) { 'JPY' }
|
60
|
-
|
61
|
-
context "when variant is more than master" do
|
62
|
-
let(:variant_price) { 150 }
|
63
|
-
|
64
|
-
it { is_expected.to eq("(Add: ¥50)") }
|
65
|
-
end
|
66
|
-
|
67
|
-
context "when variant is less than master" do
|
68
|
-
let(:product_price) { 150 }
|
69
|
-
|
70
|
-
it { is_expected.to eq("(Subtract: ¥50)") }
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
context "#variant_price_full" do
|
76
|
-
before do
|
77
|
-
Spree::Config[:show_variant_full_price] = true
|
78
|
-
@variant1 = create(:variant, product: product)
|
79
|
-
@variant2 = create(:variant, product: product)
|
80
|
-
end
|
81
|
-
|
82
|
-
context "when currency is default" do
|
83
|
-
it "should return the variant price if the price is different than master" do
|
84
|
-
product.price = 10
|
85
|
-
@variant1.price = 15
|
86
|
-
@variant2.price = 20
|
87
|
-
expect(helper.variant_price(@variant1)).to eq("$15.00")
|
88
|
-
expect(helper.variant_price(@variant2)).to eq("$20.00")
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
context "when currency is JPY" do
|
93
|
-
let(:currency) { 'JPY' }
|
94
|
-
|
95
|
-
before do
|
96
|
-
product.variants.active.each do |variant|
|
97
|
-
variant.prices.each do |price|
|
98
|
-
price.currency = currency
|
99
|
-
price.save!
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
it "should return the variant price if the price is different than master" do
|
105
|
-
product.price = 100
|
106
|
-
@variant1.price = 150
|
107
|
-
expect(helper.variant_price(@variant1)).to eq("¥150")
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
it "should be nil when all variant prices are equal" do
|
112
|
-
product.price = 10
|
113
|
-
@variant1.default_price.update_column(:amount, 10)
|
114
|
-
@variant2.default_price.update_column(:amount, 10)
|
115
|
-
expect(helper.variant_price(@variant1)).to be_nil
|
116
|
-
expect(helper.variant_price(@variant2)).to be_nil
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
|
121
|
-
context "#product_description" do
|
122
|
-
# Regression test for #1607
|
123
|
-
it "renders a product description without excessive paragraph breaks" do
|
124
|
-
product.description = %Q{
|
125
|
-
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus a ligula leo. Proin eu arcu at ipsum dapibus ullamcorper. Pellentesque egestas orci nec magna condimentum luctus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut ac ante et mauris bibendum ultricies non sed massa. Fusce facilisis dui eget lacus scelerisque eget aliquam urna ultricies. Duis et rhoncus quam. Praesent tellus nisi, ultrices sed iaculis quis, euismod interdum ipsum.</p>
|
126
|
-
<ul>
|
127
|
-
<li>Lorem ipsum dolor sit amet</li>
|
128
|
-
<li>Lorem ipsum dolor sit amet</li>
|
129
|
-
</ul>
|
130
|
-
}
|
131
|
-
description = product_description(product)
|
132
|
-
expect(description.strip).to eq(product.description.strip)
|
133
|
-
end
|
134
|
-
|
135
|
-
it "renders a product description with automatic paragraph breaks" do
|
136
|
-
product.description = %Q{
|
137
|
-
THIS IS THE BEST PRODUCT EVER!
|
138
|
-
|
139
|
-
"IT CHANGED MY LIFE" - Sue, MD}
|
140
|
-
|
141
|
-
description = product_description(product)
|
142
|
-
expect(description.strip).to eq(%Q{<p>\nTHIS IS THE BEST PRODUCT EVER!</p>"IT CHANGED MY LIFE" - Sue, MD})
|
143
|
-
end
|
144
|
-
|
145
|
-
it "renders a product description without any formatting based on configuration" do
|
146
|
-
initialDescription = %Q{
|
147
|
-
<p>hello world</p>
|
148
|
-
|
149
|
-
<p>tihs is completely awesome and it works</p>
|
150
|
-
|
151
|
-
<p>why so many spaces in the code. and why some more formatting afterwards?</p>
|
152
|
-
}
|
153
|
-
|
154
|
-
product.description = initialDescription
|
155
|
-
|
156
|
-
Spree::Config[:show_raw_product_description] = true
|
157
|
-
description = product_description(product)
|
158
|
-
expect(description).to eq(initialDescription)
|
159
|
-
end
|
160
|
-
|
161
|
-
context "renders a product description default description incase description is blank" do
|
162
|
-
before { product.description = '' }
|
163
|
-
it { expect(product_description(product)).to eq(Spree.t(:product_has_no_description)) }
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
shared_examples_for "line item descriptions" do
|
168
|
-
context 'variant has a blank description' do
|
169
|
-
let(:description) { nil }
|
170
|
-
it { is_expected.to eq(Spree.t(:product_has_no_description)) }
|
171
|
-
end
|
172
|
-
context 'variant has a description' do
|
173
|
-
let(:description) { 'test_desc' }
|
174
|
-
it { is_expected.to eq(description) }
|
175
|
-
end
|
176
|
-
context 'description has nonbreaking spaces' do
|
177
|
-
let(:description) { 'test desc' }
|
178
|
-
it { is_expected.to eq('test desc') }
|
179
|
-
end
|
180
|
-
context 'description has line endings' do
|
181
|
-
let(:description) { "test\n\r\ndesc" }
|
182
|
-
it { is_expected.to eq('test desc') }
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
|
-
context '#line_item_description_text' do
|
187
|
-
subject { line_item_description_text description }
|
188
|
-
|
189
|
-
it_should_behave_like "line item descriptions"
|
190
|
-
end
|
191
|
-
|
192
|
-
context '#cache_key_for_products' do
|
193
|
-
let(:zone) { Spree::Zone.new }
|
194
|
-
let(:price_options) { { tax_zone: zone } }
|
195
|
-
|
196
|
-
subject { helper.cache_key_for_products }
|
197
|
-
before(:each) do
|
198
|
-
@products = double('products collection')
|
199
|
-
allow(helper).to receive(:params) { {page: 10} }
|
200
|
-
allow(helper).to receive(:current_price_options) { price_options }
|
201
|
-
end
|
202
|
-
|
203
|
-
context 'when there is a maximum updated date' do
|
204
|
-
let(:updated_at) { Date.new(2011, 12, 13) }
|
205
|
-
before :each do
|
206
|
-
allow(@products).to receive(:count) { 5 }
|
207
|
-
allow(@products).to receive(:maximum).with(:updated_at) { updated_at }
|
208
|
-
end
|
209
|
-
|
210
|
-
it { is_expected.to eq("en/USD/spree/zones/new/spree/products/all-10-20111213-5") }
|
211
|
-
end
|
212
|
-
|
213
|
-
context 'when there is no considered maximum updated date' do
|
214
|
-
let(:today) { Date.new(2013, 12, 11) }
|
215
|
-
before :each do
|
216
|
-
allow(@products).to receive(:count) { 1234567 }
|
217
|
-
allow(@products).to receive(:maximum).with(:updated_at) { nil }
|
218
|
-
allow(Date).to receive(:today) { today }
|
219
|
-
end
|
220
|
-
|
221
|
-
it { is_expected.to eq("en/USD/spree/zones/new/spree/products/all-10-20131211-1234567") }
|
222
|
-
end
|
223
|
-
end
|
224
|
-
|
225
|
-
context "#cache_key_for_product" do
|
226
|
-
let(:product) { Spree::Product.new }
|
227
|
-
let(:price_options) { { tax_zone: zone } }
|
228
|
-
|
229
|
-
subject(:cache_key) { helper.cache_key_for_product(product) }
|
230
|
-
|
231
|
-
before do
|
232
|
-
allow(helper).to receive(:current_price_options) { price_options }
|
233
|
-
end
|
234
|
-
|
235
|
-
context "when there is a current tax zone" do
|
236
|
-
let(:zone) { Spree::Zone.new }
|
237
|
-
|
238
|
-
it "includes the current_tax_zone" do
|
239
|
-
is_expected.to eq("en/USD/spree/zones/new/spree/products/new/")
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
|
-
context "when there is no current tax zone" do
|
244
|
-
let(:zone) { nil }
|
245
|
-
|
246
|
-
it { is_expected.to eq("en/USD/spree/products/new/") }
|
247
|
-
end
|
248
|
-
|
249
|
-
context "when current_price_options includes nil values" do
|
250
|
-
let(:price_options) do
|
251
|
-
{
|
252
|
-
a: nil,
|
253
|
-
b: Spree::Zone.new
|
254
|
-
}
|
255
|
-
end
|
256
|
-
|
257
|
-
it "does not include nil values" do
|
258
|
-
expect(cache_key).to eq("en/USD/spree/zones/new/spree/products/new/")
|
259
|
-
end
|
260
|
-
end
|
261
|
-
|
262
|
-
context "when current_price_options includes values that do not implement cache_key" do
|
263
|
-
let(:price_options) do
|
264
|
-
{
|
265
|
-
a: true,
|
266
|
-
b: Spree::Zone.new
|
267
|
-
}
|
268
|
-
end
|
269
|
-
|
270
|
-
it "includes string representations of these values" do
|
271
|
-
expect(cache_key).to eq("en/USD/true/spree/zones/new/spree/products/new/")
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
|
-
context "when keys in the options hash are inserted in non-alphabetical order" do
|
276
|
-
let(:price_options) do
|
277
|
-
{
|
278
|
-
b: Spree::Zone.new,
|
279
|
-
a: true
|
280
|
-
}
|
281
|
-
end
|
282
|
-
|
283
|
-
it "the values are nevertheless returned in alphabetical order of their keys" do
|
284
|
-
expect(cache_key).to eq("en/USD/true/spree/zones/new/spree/products/new/")
|
285
|
-
end
|
286
|
-
end
|
287
|
-
end
|
288
|
-
end
|
289
|
-
end
|
data/spec/lib/i18n_spec.rb
DELETED
@@ -1,123 +0,0 @@
|
|
1
|
-
require 'rspec/expectations'
|
2
|
-
require 'spree/i18n'
|
3
|
-
require 'spree/testing_support/i18n'
|
4
|
-
|
5
|
-
describe "i18n" do
|
6
|
-
before do
|
7
|
-
I18n.backend.store_translations(:en,
|
8
|
-
{
|
9
|
-
spree: {
|
10
|
-
foo: "bar",
|
11
|
-
bar: {
|
12
|
-
foo: "bar within bar scope",
|
13
|
-
invalid: nil,
|
14
|
-
legacy_translation: "back in the day..."
|
15
|
-
},
|
16
|
-
invalid: nil,
|
17
|
-
legacy_translation: "back in the day..."
|
18
|
-
}
|
19
|
-
})
|
20
|
-
end
|
21
|
-
|
22
|
-
it "translates within the spree scope" do
|
23
|
-
expect(Spree.normal_t(:foo)).to eql("bar")
|
24
|
-
expect(Spree.translate(:foo)).to eql("bar")
|
25
|
-
end
|
26
|
-
|
27
|
-
it "translates within the spree scope using a path" do
|
28
|
-
allow(Spree).to receive(:virtual_path).and_return('bar')
|
29
|
-
|
30
|
-
expect(Spree.normal_t('.legacy_translation')).to eql("back in the day...")
|
31
|
-
expect(Spree.translate('.legacy_translation')).to eql("back in the day...")
|
32
|
-
end
|
33
|
-
|
34
|
-
it "raise error without any context when using a path" do
|
35
|
-
expect {
|
36
|
-
Spree.normal_t('.legacy_translation')
|
37
|
-
}.to raise_error(StandardError)
|
38
|
-
|
39
|
-
expect {
|
40
|
-
Spree.translate('.legacy_translation')
|
41
|
-
}.to raise_error(StandardError)
|
42
|
-
end
|
43
|
-
|
44
|
-
it "prepends a string scope" do
|
45
|
-
expect(Spree.normal_t(:foo, scope: "bar")).to eql("bar within bar scope")
|
46
|
-
end
|
47
|
-
|
48
|
-
it "prepends to an array scope" do
|
49
|
-
expect(Spree.normal_t(:foo, scope: ["bar"])).to eql("bar within bar scope")
|
50
|
-
end
|
51
|
-
|
52
|
-
it "returns two translations" do
|
53
|
-
expect(Spree.normal_t([:foo, 'bar.foo'])).to eql(["bar", "bar within bar scope"])
|
54
|
-
end
|
55
|
-
|
56
|
-
it "returns reasonable string for missing translations" do
|
57
|
-
expect(Spree.t(:missing_entry)).to include("<span")
|
58
|
-
end
|
59
|
-
|
60
|
-
context "missed + unused translations" do
|
61
|
-
def key_with_locale(key)
|
62
|
-
"#{key} (#{I18n.locale})"
|
63
|
-
end
|
64
|
-
|
65
|
-
before do
|
66
|
-
Spree.used_translations = []
|
67
|
-
end
|
68
|
-
|
69
|
-
context "missed translations" do
|
70
|
-
def assert_missing_translation(key)
|
71
|
-
key = key_with_locale(key)
|
72
|
-
message = Spree.missing_translation_messages.detect { |m| m == key }
|
73
|
-
expect(message).not_to(be_nil, "expected '#{key}' to be missing, but it wasn't.")
|
74
|
-
end
|
75
|
-
|
76
|
-
it "logs missing translations" do
|
77
|
-
Spree.t(:missing, scope: [:else, :where])
|
78
|
-
Spree.check_missing_translations
|
79
|
-
assert_missing_translation("else")
|
80
|
-
assert_missing_translation("else.where")
|
81
|
-
assert_missing_translation("else.where.missing")
|
82
|
-
end
|
83
|
-
|
84
|
-
it "does not log present translations" do
|
85
|
-
Spree.t(:foo)
|
86
|
-
Spree.check_missing_translations
|
87
|
-
expect(Spree.missing_translation_messages).to be_empty
|
88
|
-
end
|
89
|
-
|
90
|
-
it "does not break when asked for multiple translations" do
|
91
|
-
Spree.t [:foo, 'bar.foo']
|
92
|
-
Spree.check_missing_translations
|
93
|
-
expect(Spree.missing_translation_messages).to be_empty
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
context "unused translations" do
|
98
|
-
def assert_unused_translation(key)
|
99
|
-
key = key_with_locale(key)
|
100
|
-
message = Spree.unused_translation_messages.detect { |m| m == key }
|
101
|
-
expect(message).not_to(be_nil, "expected '#{key}' to be unused, but it was used.")
|
102
|
-
end
|
103
|
-
|
104
|
-
def assert_used_translation(key)
|
105
|
-
key = key_with_locale(key)
|
106
|
-
message = Spree.unused_translation_messages.detect { |m| m == key }
|
107
|
-
expect(message).to(be_nil, "expected '#{key}' to be used, but it wasn't.")
|
108
|
-
end
|
109
|
-
|
110
|
-
it "logs translations that aren't used" do
|
111
|
-
Spree.check_unused_translations
|
112
|
-
assert_unused_translation("bar.legacy_translation")
|
113
|
-
assert_unused_translation("legacy_translation")
|
114
|
-
end
|
115
|
-
|
116
|
-
it "does not log used translations" do
|
117
|
-
Spree.t(:foo)
|
118
|
-
Spree.check_unused_translations
|
119
|
-
assert_used_translation("foo")
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
@@ -1,86 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Spree::Core::Search::Base do
|
4
|
-
|
5
|
-
before do
|
6
|
-
include Spree::Core::ProductFilters
|
7
|
-
@taxon = create(:taxon, name: "Ruby on Rails")
|
8
|
-
|
9
|
-
@product1 = create(:product, name: "RoR Mug", price: 9.00)
|
10
|
-
@product1.taxons << @taxon
|
11
|
-
@product2 = create(:product, name: "RoR Shirt", price: 11.00)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "returns all products by default" do
|
15
|
-
params = { per_page: "" }
|
16
|
-
searcher = Spree::Core::Search::Base.new(params)
|
17
|
-
expect(searcher.retrieve_products.count).to eq(2)
|
18
|
-
end
|
19
|
-
|
20
|
-
context "when include_images is included in the initalization params" do
|
21
|
-
let(:params) { { include_images: true, keyword: @product1.name, taxon: @taxon.id } }
|
22
|
-
subject { described_class.new(params).retrieve_products }
|
23
|
-
|
24
|
-
before do
|
25
|
-
@product1.master.images << create(:image, position: 2)
|
26
|
-
@product1.master.images << create(:image, position: 1)
|
27
|
-
@product1.reload
|
28
|
-
end
|
29
|
-
|
30
|
-
it "returns images in correct order" do
|
31
|
-
expect(subject.first).to eq @product1
|
32
|
-
expect(subject.first.images).to eq @product1.master.images
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
it "switches to next page according to the page parameter" do
|
37
|
-
@product3 = create(:product, name: "RoR Pants", price: 14.00)
|
38
|
-
|
39
|
-
params = { per_page: "2" }
|
40
|
-
searcher = Spree::Core::Search::Base.new(ActionController::Parameters.new(params))
|
41
|
-
expect(searcher.retrieve_products.count).to eq(2)
|
42
|
-
|
43
|
-
params.merge! page: "2"
|
44
|
-
searcher = Spree::Core::Search::Base.new(ActionController::Parameters.new(params))
|
45
|
-
expect(searcher.retrieve_products.count).to eq(1)
|
46
|
-
end
|
47
|
-
|
48
|
-
it "maps search params to named scopes" do
|
49
|
-
params = { per_page: "",
|
50
|
-
search: { "price_range_any" => ["Under $10.00"] }}
|
51
|
-
searcher = Spree::Core::Search::Base.new(ActionController::Parameters.new(params))
|
52
|
-
expect(searcher.send(:get_base_scope).to_sql).to match /<= 10/
|
53
|
-
expect(searcher.retrieve_products.count).to eq(1)
|
54
|
-
end
|
55
|
-
|
56
|
-
it "maps multiple price_range_any filters" do
|
57
|
-
params = { per_page: "",
|
58
|
-
search: { "price_range_any" => ["Under $10.00", "$10.00 - $15.00"] }}
|
59
|
-
searcher = Spree::Core::Search::Base.new(ActionController::Parameters.new(params))
|
60
|
-
expect(searcher.send(:get_base_scope).to_sql).to match /<= 10/
|
61
|
-
expect(searcher.send(:get_base_scope).to_sql).to match /between 10 and 15/i
|
62
|
-
expect(searcher.retrieve_products.count).to eq(2)
|
63
|
-
end
|
64
|
-
|
65
|
-
it "uses ransack if scope not found" do
|
66
|
-
params = { per_page: "",
|
67
|
-
search: { "name_not_cont" => "Shirt" }}
|
68
|
-
searcher = Spree::Core::Search::Base.new(ActionController::Parameters.new(params))
|
69
|
-
expect(searcher.retrieve_products.count).to eq(1)
|
70
|
-
end
|
71
|
-
|
72
|
-
it "accepts a current user" do
|
73
|
-
user = double
|
74
|
-
searcher = Spree::Core::Search::Base.new({})
|
75
|
-
searcher.current_user = user
|
76
|
-
expect(searcher.current_user).to eql(user)
|
77
|
-
end
|
78
|
-
|
79
|
-
it "finds products in alternate currencies" do
|
80
|
-
price = create(:price, currency: 'EUR', variant: @product1.master)
|
81
|
-
searcher = Spree::Core::Search::Base.new({})
|
82
|
-
searcher.current_currency = 'EUR'
|
83
|
-
expect(searcher.retrieve_products).to eq([@product1])
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|