spree_core 3.3.6 → 3.4.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/helpers/spree/base_helper.rb +17 -18
- data/app/helpers/spree/products_helper.rb +5 -5
- data/app/models/concerns/spree/calculated_adjustments.rb +4 -3
- data/app/models/concerns/spree/default_price.rb +4 -5
- data/app/models/concerns/spree/display_money.rb +1 -1
- data/app/models/concerns/spree/named_type.rb +1 -1
- data/app/models/concerns/spree/ransackable_attributes.rb +5 -6
- data/app/models/concerns/spree/user_address.rb +6 -6
- data/app/models/concerns/spree/user_methods.rb +3 -3
- data/app/models/concerns/spree/user_payment_source.rb +4 -2
- data/app/models/concerns/spree/user_reporting.rb +1 -1
- data/app/models/spree/ability.rb +3 -3
- data/app/models/spree/address.rb +13 -9
- data/app/models/spree/adjustable/adjuster/promotion.rb +1 -1
- data/app/models/spree/adjustable/adjustments_updater.rb +2 -2
- data/app/models/spree/adjustable/promotion_accumulator.rb +6 -4
- data/app/models/spree/adjustment.rb +2 -3
- data/app/models/spree/app_configuration.rb +5 -6
- data/app/models/spree/base.rb +1 -1
- data/app/models/spree/calculator/default_tax.rb +4 -5
- data/app/models/spree/calculator/flat_percent_item_total.rb +1 -1
- data/app/models/spree/calculator/flat_rate.rb +3 -3
- data/app/models/spree/calculator/flexi_rate.rb +5 -5
- data/app/models/spree/calculator/price_sack.rb +9 -9
- data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -1
- data/app/models/spree/calculator/shipping/flat_rate.rb +3 -3
- data/app/models/spree/calculator/shipping/flexi_rate.rb +7 -7
- data/app/models/spree/calculator/shipping/per_item.rb +2 -2
- data/app/models/spree/calculator/shipping/price_sack.rb +4 -4
- data/app/models/spree/calculator/tiered_flat_rate.rb +3 -2
- data/app/models/spree/calculator/tiered_percent.rb +4 -3
- data/app/models/spree/calculator.rb +4 -4
- data/app/models/spree/classification.rb +2 -2
- data/app/models/spree/credit_card.rb +1 -1
- data/app/models/spree/exchange.rb +4 -5
- data/app/models/spree/gateway/bogus.rb +20 -20
- data/app/models/spree/gateway/bogus_simple.rb +2 -4
- data/app/models/spree/gateway.rb +4 -4
- data/app/models/spree/image.rb +3 -3
- data/app/models/spree/inventory_unit.rb +30 -30
- data/app/models/spree/line_item.rb +7 -9
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/order/checkout.rb +5 -5
- data/app/models/spree/order/currency_updater.rb +1 -4
- data/app/models/spree/order/payments.rb +4 -4
- data/app/models/spree/order/store_credit.rb +2 -2
- data/app/models/spree/order.rb +11 -29
- data/app/models/spree/order_contents.rb +6 -5
- data/app/models/spree/order_inventory.rb +3 -4
- data/app/models/spree/order_updater.rb +13 -14
- data/app/models/spree/payment/processing.rb +25 -26
- data/app/models/spree/payment.rb +72 -79
- data/app/models/spree/payment_capture_event.rb +1 -1
- data/app/models/spree/payment_method/check.rb +1 -1
- data/app/models/spree/payment_method/store_credit.rb +5 -5
- data/app/models/spree/payment_method.rb +7 -7
- data/app/models/spree/preferences/configuration.rb +6 -9
- data/app/models/spree/preferences/preferable.rb +11 -11
- data/app/models/spree/preferences/preferable_class_methods.rb +2 -3
- data/app/models/spree/preferences/scoped_store.rb +6 -5
- data/app/models/spree/preferences/store.rb +9 -14
- data/app/models/spree/price.rb +1 -1
- data/app/models/spree/product/scopes.rb +49 -49
- data/app/models/spree/product.rb +16 -16
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +2 -1
- data/app/models/spree/promotion/actions/free_shipping.rb +1 -1
- data/app/models/spree/promotion/rules/first_order.rb +7 -6
- data/app/models/spree/promotion/rules/item_total.rb +3 -5
- data/app/models/spree/promotion/rules/one_use_per_user.rb +1 -2
- data/app/models/spree/promotion/rules/option_value.rb +14 -6
- data/app/models/spree/promotion/rules/product.rb +4 -4
- data/app/models/spree/promotion/rules/taxon.rb +6 -6
- data/app/models/spree/promotion/rules/user.rb +3 -3
- data/app/models/spree/promotion/rules/user_logged_in.rb +1 -1
- data/app/models/spree/promotion.rb +15 -16
- data/app/models/spree/promotion_action.rb +1 -1
- data/app/models/spree/promotion_handler/cart.rb +3 -2
- data/app/models/spree/promotion_handler/free_shipping.rb +1 -3
- data/app/models/spree/promotion_handler/page.rb +3 -3
- data/app/models/spree/promotion_rule.rb +5 -4
- data/app/models/spree/refund.rb +8 -8
- data/app/models/spree/reimbursement/credit.rb +1 -1
- data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -3
- data/app/models/spree/reimbursement.rb +4 -8
- data/app/models/spree/reimbursement_performer.rb +0 -5
- data/app/models/spree/reimbursement_tax_calculator.rb +5 -12
- data/app/models/spree/reimbursement_type.rb +2 -2
- data/app/models/spree/return_authorization.rb +22 -26
- data/app/models/spree/return_item/eligibility_validator/default.rb +3 -3
- data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +2 -2
- data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +2 -2
- data/app/models/spree/return_item/eligibility_validator/order_completed.rb +2 -2
- data/app/models/spree/return_item/eligibility_validator/rma_required.rb +2 -3
- data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +2 -2
- data/app/models/spree/return_item.rb +15 -19
- data/app/models/spree/returns_calculator.rb +1 -2
- data/app/models/spree/shipment.rb +14 -35
- data/app/models/spree/shipment_handler.rb +10 -12
- data/app/models/spree/shipping_calculator.rb +5 -6
- data/app/models/spree/shipping_method.rb +3 -3
- data/app/models/spree/shipping_rate.rb +2 -2
- data/app/models/spree/state.rb +2 -2
- data/app/models/spree/stock/availability_validator.rb +1 -1
- data/app/models/spree/stock/content_item.rb +2 -3
- data/app/models/spree/stock/coordinator.rb +3 -2
- data/app/models/spree/stock/differentiator.rb +3 -2
- data/app/models/spree/stock/estimator.rb +7 -5
- data/app/models/spree/stock/package.rb +5 -5
- data/app/models/spree/stock/packer.rb +1 -1
- data/app/models/spree/stock/prioritizer.rb +5 -7
- data/app/models/spree/stock/quantifier.rb +0 -1
- data/app/models/spree/stock/splitter/backordered.rb +2 -4
- data/app/models/spree/stock/splitter/base.rb +3 -2
- data/app/models/spree/stock/splitter/shipping_category.rb +2 -1
- data/app/models/spree/stock_item.rb +1 -1
- data/app/models/spree/stock_location.rb +12 -11
- data/app/models/spree/stock_movement.rb +1 -3
- data/app/models/spree/stock_transfer.rb +1 -1
- data/app/models/spree/store.rb +4 -4
- data/app/models/spree/store_credit.rb +3 -3
- data/app/models/spree/tax_category.rb +1 -1
- data/app/models/spree/tax_rate.rb +10 -10
- data/app/models/spree/taxon.rb +13 -13
- data/app/models/spree/taxonomy.rb +9 -8
- data/app/models/spree/validations/db_maximum_length_validator.rb +2 -3
- data/app/models/spree/variant.rb +30 -41
- data/app/models/spree/zone.rb +10 -10
- data/app/validators/db_maximum_length_validator.rb +5 -5
- data/config/initializers/acts_as_taggable_on.rb +3 -3
- data/config/initializers/assets.rb +1 -1
- data/config/initializers/friendly_id.rb +1 -1
- data/config/initializers/premailer_assets.rb +1 -1
- data/config/locales/en.yml +8 -2
- data/db/default/spree/states.rb +1 -0
- data/lib/generators/spree/custom_user/custom_user_generator.rb +12 -15
- data/lib/generators/spree/install/install_generator.rb +45 -32
- data/lib/spree/core/components.rb +3 -3
- data/lib/spree/core/controller_helpers/auth.rb +5 -10
- data/lib/spree/core/controller_helpers/common.rb +2 -3
- data/lib/spree/core/controller_helpers/order.rb +3 -7
- data/lib/spree/core/controller_helpers/respond_with.rb +4 -4
- data/lib/spree/core/engine.rb +3 -3
- data/lib/spree/core/environment/calculators.rb +0 -1
- data/lib/spree/core/environment_extension.rb +8 -8
- data/lib/spree/core/importer/order.rb +64 -67
- data/lib/spree/core/importer/product.rb +10 -9
- data/lib/spree/core/product_filters.rb +17 -18
- data/lib/spree/core/routes.rb +2 -6
- data/lib/spree/core/search/base.rb +62 -59
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +4 -6
- data/lib/spree/i18n.rb +3 -5
- data/lib/spree/localized_number.rb +0 -2
- data/lib/spree/migrations.rb +8 -7
- data/lib/spree/money.rb +3 -7
- data/lib/spree/permitted_attributes.rb +2 -2
- data/lib/spree/responder.rb +4 -5
- data/lib/spree/testing_support/authorization_helpers.rb +3 -3
- data/lib/spree/testing_support/caching.rb +5 -5
- data/lib/spree/testing_support/capybara_ext.rb +16 -18
- data/lib/spree/testing_support/common_rake.rb +8 -9
- data/lib/spree/testing_support/controller_requests.rb +6 -6
- data/lib/spree/testing_support/extension_rake.rb +2 -3
- data/lib/spree/testing_support/factories/address_factory.rb +1 -1
- data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -1
- data/lib/spree/testing_support/factories/calculator_factory.rb +1 -1
- data/lib/spree/testing_support/factories/country_factory.rb +1 -1
- data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
- data/lib/spree/testing_support/factories/customer_return_factory.rb +1 -3
- data/lib/spree/testing_support/factories/image_factory.rb +2 -2
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +1 -1
- data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
- data/lib/spree/testing_support/factories/options_factory.rb +1 -1
- data/lib/spree/testing_support/factories/order_factory.rb +1 -1
- data/lib/spree/testing_support/factories/payment_factory.rb +1 -1
- data/lib/spree/testing_support/factories/payment_method_factory.rb +4 -4
- data/lib/spree/testing_support/factories/price_factory.rb +1 -1
- data/lib/spree/testing_support/factories/product_factory.rb +1 -1
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +1 -1
- data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +1 -2
- data/lib/spree/testing_support/factories/promotion_factory.rb +1 -2
- data/lib/spree/testing_support/factories/promotion_rule_factory.rb +1 -1
- data/lib/spree/testing_support/factories/property_factory.rb +1 -1
- data/lib/spree/testing_support/factories/prototype_factory.rb +1 -1
- data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +2 -2
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/role_factory.rb +1 -1
- data/lib/spree/testing_support/factories/shipment_factory.rb +2 -2
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +3 -3
- data/lib/spree/testing_support/factories/state_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -2
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +2 -2
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_factory.rb +1 -1
- data/lib/spree/testing_support/factories/tag_factory.rb +1 -1
- data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -2
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -1
- data/lib/spree/testing_support/factories/taxon_factory.rb +1 -1
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -1
- data/lib/spree/testing_support/factories/tracker_factory.rb +1 -1
- data/lib/spree/testing_support/factories/user_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_factory.rb +1 -2
- data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
- data/lib/spree/testing_support/factories/zone_member_factory.rb +1 -1
- data/lib/spree/testing_support/factories.rb +3 -3
- data/lib/spree/testing_support/flash.rb +1 -3
- data/lib/spree/testing_support/i18n.rb +5 -6
- data/lib/spree/testing_support/kernel.rb +1 -2
- data/lib/spree/testing_support/order_walkthrough.rb +12 -15
- data/lib/spree/testing_support/preferences.rb +0 -1
- data/lib/tasks/core.rake +47 -56
- data/lib/tasks/email.rake +2 -2
- data/lib/tasks/exchanges.rake +5 -5
- data/spree_core.gemspec +1 -1
- metadata +5 -9
- data/app/models/spree/calculator/percent_per_item.rb +0 -51
- data/config/initializers/premailer_rails.rb +0 -3
- data/lib/spree/core/delegate_belongs_to.rb +0 -99
- data/lib/spree/testing_support/microdata.rb +0 -192
data/lib/spree/money.rb
CHANGED
@@ -15,17 +15,13 @@ module Spree
|
|
15
15
|
|
16
16
|
attr_reader :money
|
17
17
|
|
18
|
-
delegate :cents,
|
18
|
+
delegate :cents, to: :money
|
19
19
|
|
20
|
-
def initialize(amount, options={})
|
20
|
+
def initialize(amount, options = {})
|
21
21
|
@money = Monetize.parse([amount, (options[:currency] || Spree::Config[:currency])].join)
|
22
22
|
@options = Spree::Money.default_formatting_rules.merge(options)
|
23
23
|
end
|
24
24
|
|
25
|
-
def amount_in_cents
|
26
|
-
(cents / currency.subunit_to_unit.to_f * 100).round
|
27
|
-
end
|
28
|
-
|
29
25
|
def to_s
|
30
26
|
@money.format(@options)
|
31
27
|
end
|
@@ -35,7 +31,7 @@ module Spree
|
|
35
31
|
if options[:html]
|
36
32
|
# 1) prevent blank, breaking spaces
|
37
33
|
# 2) prevent escaping of HTML character entities
|
38
|
-
output = output.sub(
|
34
|
+
output = output.sub(' ', ' ').html_safe
|
39
35
|
end
|
40
36
|
output
|
41
37
|
end
|
@@ -91,7 +91,7 @@ module Spree
|
|
91
91
|
:quantity, :stock_item, :stock_item_id, :originator, :action]
|
92
92
|
|
93
93
|
@@store_attributes = [:name, :url, :seo_title, :meta_keywords,
|
94
|
-
|
94
|
+
:meta_description, :default_currency, :mail_from_address]
|
95
95
|
|
96
96
|
@@store_credit_attributes = [:amount, :category_id, :memo]
|
97
97
|
|
@@ -101,7 +101,7 @@ module Spree
|
|
101
101
|
:name, :parent_id, :position, :icon, :description, :permalink, :taxonomy_id,
|
102
102
|
:meta_description, :meta_keywords, :meta_title, :child_index]
|
103
103
|
|
104
|
-
# TODO Should probably use something like Spree.user_class.attributes
|
104
|
+
# TODO: Should probably use something like Spree.user_class.attributes
|
105
105
|
@@user_attributes = [:email, :password, :password_confirmation]
|
106
106
|
|
107
107
|
@@variant_attributes = [
|
data/lib/spree/responder.rb
CHANGED
@@ -1,27 +1,26 @@
|
|
1
1
|
module Spree
|
2
2
|
class Responder < ::ActionController::Responder #:nodoc:
|
3
|
-
|
4
3
|
attr_accessor :on_success, :on_failure
|
5
4
|
|
6
|
-
def initialize(controller, resources, options={})
|
5
|
+
def initialize(controller, resources, options = {})
|
7
6
|
super
|
8
7
|
|
9
8
|
class_name = controller.class.name.to_sym
|
10
9
|
action_name = options.delete(:action_name)
|
11
10
|
|
12
|
-
if result = Spree::BaseController.spree_responders[class_name].try(:[], action_name).try(:[],
|
11
|
+
if result = Spree::BaseController.spree_responders[class_name].try(:[], action_name).try(:[], format.to_sym)
|
13
12
|
self.on_success = handler(controller, result, :success)
|
14
13
|
self.on_failure = handler(controller, result, :failure)
|
15
14
|
end
|
16
15
|
end
|
17
16
|
|
18
17
|
def to_html
|
19
|
-
super
|
18
|
+
super && return unless on_success || on_failure
|
20
19
|
has_errors? ? controller.instance_exec(&on_failure) : controller.instance_exec(&on_success)
|
21
20
|
end
|
22
21
|
|
23
22
|
def to_format
|
24
|
-
super
|
23
|
+
super && return unless on_success || on_failure
|
25
24
|
has_errors? ? controller.instance_exec(&on_failure) : controller.instance_exec(&on_success)
|
26
25
|
end
|
27
26
|
|
@@ -3,7 +3,7 @@ module Spree
|
|
3
3
|
module AuthorizationHelpers
|
4
4
|
module CustomAbility
|
5
5
|
def build_ability(&block)
|
6
|
-
block ||= proc{ |
|
6
|
+
block ||= proc { |_u| can :manage, :all }
|
7
7
|
Class.new do
|
8
8
|
include CanCan::Ability
|
9
9
|
define_method(:initialize, block)
|
@@ -38,8 +38,8 @@ module Spree
|
|
38
38
|
|
39
39
|
before do
|
40
40
|
allow(Spree.user_class).to receive(:find_by).
|
41
|
-
|
42
|
-
|
41
|
+
with(hash_including(:spree_api_key)).
|
42
|
+
and_return(Spree.user_class.new)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -7,7 +7,7 @@ module Spree
|
|
7
7
|
|
8
8
|
def assert_written_to_cache(key)
|
9
9
|
unless @cache_write_events.detect { |event| event[:key].starts_with?(key) }
|
10
|
-
|
10
|
+
raise %Q{Expected to find #{key} in the cache, but didn't.
|
11
11
|
|
12
12
|
Cache writes:
|
13
13
|
#{@cache_write_events.join("\n")}
|
@@ -29,12 +29,12 @@ RSpec.configure do |config|
|
|
29
29
|
config.before(:each, caching: true) do
|
30
30
|
ActionController::Base.perform_caching = true
|
31
31
|
|
32
|
-
ActiveSupport::Notifications.subscribe(
|
32
|
+
ActiveSupport::Notifications.subscribe('read_fragment.action_controller') do |_event, _start_time, _finish_time, _, details|
|
33
33
|
@cache_read_events ||= []
|
34
|
-
@cache_read_events << details
|
34
|
+
@cache_read_events << details
|
35
35
|
end
|
36
36
|
|
37
|
-
ActiveSupport::Notifications.subscribe(
|
37
|
+
ActiveSupport::Notifications.subscribe('write_fragment.action_controller') do |_event, _start_time, _finish_time, _, details|
|
38
38
|
@cache_write_events ||= []
|
39
39
|
@cache_write_events << details
|
40
40
|
end
|
@@ -44,4 +44,4 @@ RSpec.configure do |config|
|
|
44
44
|
ActionController::Base.perform_caching = false
|
45
45
|
Rails.cache.clear
|
46
46
|
end
|
47
|
-
end
|
47
|
+
end
|
@@ -7,7 +7,7 @@ module CapybaraExt
|
|
7
7
|
find(".icon-#{type}").click
|
8
8
|
end
|
9
9
|
|
10
|
-
def eventually_fill_in(field, options={})
|
10
|
+
def eventually_fill_in(field, options = {})
|
11
11
|
expect(page).to have_css('#' + field)
|
12
12
|
fill_in field, options
|
13
13
|
end
|
@@ -16,7 +16,7 @@ module CapybaraExt
|
|
16
16
|
if RSpec.current_example.metadata[:js]
|
17
17
|
within("table.table tbody tr:nth-child(#{num})", &block)
|
18
18
|
else
|
19
|
-
within(:xpath, all(
|
19
|
+
within(:xpath, all('table.table tbody tr')[num - 1].path, &block)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -24,7 +24,7 @@ module CapybaraExt
|
|
24
24
|
if RSpec.current_example.metadata[:js]
|
25
25
|
find("td:nth-child(#{num})").text
|
26
26
|
else
|
27
|
-
all(
|
27
|
+
all('td')[num - 1].text
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -34,8 +34,8 @@ module CapybaraExt
|
|
34
34
|
|
35
35
|
def select2_search(value, options)
|
36
36
|
label = find_label_by_text(options[:from])
|
37
|
-
within label.first(:xpath,
|
38
|
-
options[:from] = "##{find(
|
37
|
+
within label.first(:xpath, './/..') do
|
38
|
+
options[:from] = "##{find('.select2-container')['id']}"
|
39
39
|
end
|
40
40
|
targetted_select2_search(value, options)
|
41
41
|
end
|
@@ -49,14 +49,14 @@ module CapybaraExt
|
|
49
49
|
def select2(value, options)
|
50
50
|
label = find_label_by_text(options[:from])
|
51
51
|
|
52
|
-
within label.first(:xpath,
|
53
|
-
options[:from] = "##{find(
|
52
|
+
within label.first(:xpath, './/..') do
|
53
|
+
options[:from] = "##{find('.select2-container')['id']}"
|
54
54
|
end
|
55
55
|
targetted_select2(value, options)
|
56
56
|
end
|
57
57
|
|
58
|
-
def select2_no_label
|
59
|
-
raise "Must pass a hash containing 'from'" if
|
58
|
+
def select2_no_label(value, options = {})
|
59
|
+
raise "Must pass a hash containing 'from'" if !options.is_a?(Hash) || !options.key?(:from)
|
60
60
|
|
61
61
|
placeholder = options[:from]
|
62
62
|
minlength = options[:minlength] || 4
|
@@ -75,7 +75,7 @@ module CapybaraExt
|
|
75
75
|
def select_select2_result(value)
|
76
76
|
# results are in a div appended to the end of the document
|
77
77
|
within(:xpath, '//body') do
|
78
|
-
page.find(
|
78
|
+
page.find('div.select2-result-label', text: %r{#{Regexp.escape(value)}}i).click
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
@@ -90,9 +90,7 @@ module CapybaraExt
|
|
90
90
|
label = find_label(text)
|
91
91
|
end
|
92
92
|
|
93
|
-
if label.nil?
|
94
|
-
raise "Could not find label by text #{text}"
|
95
|
-
end
|
93
|
+
raise "Could not find label by text #{text}" if label.nil?
|
96
94
|
|
97
95
|
label
|
98
96
|
end
|
@@ -119,7 +117,7 @@ module CapybaraExt
|
|
119
117
|
def wait_for_condition(delay = Capybara.default_max_wait_time)
|
120
118
|
counter = 0
|
121
119
|
delay_threshold = delay * 10
|
122
|
-
|
120
|
+
until yield
|
123
121
|
counter += 1
|
124
122
|
sleep(0.1)
|
125
123
|
raise "Could not achieve condition within #{delay} seconds." if counter >= delay_threshold
|
@@ -145,7 +143,7 @@ Capybara.configure do |config|
|
|
145
143
|
end
|
146
144
|
|
147
145
|
RSpec::Matchers.define :have_meta do |name, expected|
|
148
|
-
match do |
|
146
|
+
match do |_actual|
|
149
147
|
has_css?("meta[name='#{name}'][content='#{expected}']", visible: false)
|
150
148
|
end
|
151
149
|
|
@@ -160,12 +158,12 @@ RSpec::Matchers.define :have_meta do |name, expected|
|
|
160
158
|
end
|
161
159
|
|
162
160
|
RSpec::Matchers.define :have_title do |expected|
|
163
|
-
match do |
|
164
|
-
has_css?(
|
161
|
+
match do |_actual|
|
162
|
+
has_css?('title', text: expected, visible: false)
|
165
163
|
end
|
166
164
|
|
167
165
|
failure_message do |actual|
|
168
|
-
actual = first(
|
166
|
+
actual = first('title')
|
169
167
|
if actual
|
170
168
|
"expected that title would have been '#{expected}' but was '#{actual.text}'"
|
171
169
|
else
|
@@ -3,37 +3,36 @@ unless defined?(Spree::InstallGenerator)
|
|
3
3
|
end
|
4
4
|
|
5
5
|
require 'generators/spree/dummy/dummy_generator'
|
6
|
-
require 'rails'
|
7
6
|
|
8
|
-
desc
|
7
|
+
desc 'Generates a dummy app for testing'
|
9
8
|
namespace :common do
|
10
9
|
task :test_app, :user_class do |_t, args|
|
11
|
-
args.with_defaults(user_class:
|
10
|
+
args.with_defaults(user_class: 'Spree::LegacyUser')
|
12
11
|
require ENV['LIB_NAME'].to_s
|
13
12
|
|
14
13
|
ENV['RAILS_ENV'] = 'test'
|
15
14
|
Rails.env = 'test'
|
16
15
|
|
17
|
-
Spree::DummyGenerator.start ["--lib_name=#{ENV['LIB_NAME']}",
|
18
|
-
Spree::InstallGenerator.start ["--lib_name=#{ENV['LIB_NAME']}",
|
16
|
+
Spree::DummyGenerator.start ["--lib_name=#{ENV['LIB_NAME']}", '--quiet']
|
17
|
+
Spree::InstallGenerator.start ["--lib_name=#{ENV['LIB_NAME']}", '--auto-accept', '--migrate=false', '--seed=false', '--sample=false', '--quiet', '--copy_views=false', "--user_class=#{args[:user_class]}"]
|
19
18
|
|
20
|
-
puts
|
19
|
+
puts 'Setting up dummy database...'
|
21
20
|
system("bundle exec rake db:drop db:create db:migrate > #{File::NULL}")
|
22
21
|
|
23
22
|
begin
|
24
23
|
require "generators/#{ENV['LIB_NAME']}/install/install_generator"
|
25
24
|
puts 'Running extension installation generator...'
|
26
|
-
"#{ENV['LIB_NAME'].camelize}::Generators::InstallGenerator".constantize.start([
|
25
|
+
"#{ENV['LIB_NAME'].camelize}::Generators::InstallGenerator".constantize.start(['--auto-run-migrations'])
|
27
26
|
rescue LoadError
|
28
27
|
puts 'Skipping installation no generator to run...'
|
29
28
|
end
|
30
29
|
|
31
|
-
puts
|
30
|
+
puts 'Precompiling assets...'
|
32
31
|
system("bundle exec rake assets:precompile > #{File::NULL}")
|
33
32
|
end
|
34
33
|
|
35
34
|
task :seed do |_t|
|
36
|
-
puts
|
35
|
+
puts 'Seeding ...'
|
37
36
|
system("bundle exec rake db:seed RAILS_ENV=test > #{File::NULL}")
|
38
37
|
end
|
39
38
|
end
|
@@ -33,27 +33,27 @@ module Spree
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def spree_get(action, parameters = nil, session = nil, flash = nil)
|
36
|
-
process_spree_action(action, parameters, session, flash,
|
36
|
+
process_spree_action(action, parameters, session, flash, 'GET')
|
37
37
|
end
|
38
38
|
|
39
39
|
# Executes a request simulating POST HTTP method and set/volley the response
|
40
40
|
def spree_post(action, parameters = nil, session = nil, flash = nil)
|
41
|
-
process_spree_action(action, parameters, session, flash,
|
41
|
+
process_spree_action(action, parameters, session, flash, 'POST')
|
42
42
|
end
|
43
43
|
|
44
44
|
# Executes a request simulating PUT HTTP method and set/volley the response
|
45
45
|
def spree_put(action, parameters = nil, session = nil, flash = nil)
|
46
|
-
process_spree_action(action, parameters, session, flash,
|
46
|
+
process_spree_action(action, parameters, session, flash, 'PUT')
|
47
47
|
end
|
48
48
|
|
49
49
|
# Executes a request simulating PATCH HTTP method and set/volley the response
|
50
50
|
def spree_patch(action, parameters = nil, session = nil, flash = nil)
|
51
|
-
process_spree_action(action, parameters, session, flash,
|
51
|
+
process_spree_action(action, parameters, session, flash, 'PATCH')
|
52
52
|
end
|
53
53
|
|
54
54
|
# Executes a request simulating DELETE HTTP method and set/volley the response
|
55
55
|
def spree_delete(action, parameters = nil, session = nil, flash = nil)
|
56
|
-
process_spree_action(action, parameters, session, flash,
|
56
|
+
process_spree_action(action, parameters, session, flash, 'DELETE')
|
57
57
|
end
|
58
58
|
|
59
59
|
def spree_xhr_get(action, parameters = nil, session = nil, flash = nil)
|
@@ -78,7 +78,7 @@ module Spree
|
|
78
78
|
|
79
79
|
private
|
80
80
|
|
81
|
-
def process_spree_action(action, parameters = nil, session = nil, flash = nil, method =
|
81
|
+
def process_spree_action(action, parameters = nil, session = nil, flash = nil, method = 'GET')
|
82
82
|
parameters ||= {}
|
83
83
|
process(action, method: method, params: parameters, session: session, flash: flash)
|
84
84
|
end
|
@@ -1,10 +1,9 @@
|
|
1
1
|
require 'spree/testing_support/common_rake'
|
2
2
|
|
3
|
-
desc
|
3
|
+
desc 'Generates a dummy app for testing an extension'
|
4
4
|
namespace :extension do
|
5
|
-
task :test_app, [:user_class] do |
|
5
|
+
task :test_app, [:user_class] do |_t, _args|
|
6
6
|
Spree::DummyGeneratorHelper.inject_extension_requirements = true
|
7
7
|
Rake::Task['common:test_app'].invoke
|
8
8
|
end
|
9
9
|
end
|
10
|
-
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
FactoryGirl.define do
|
3
2
|
factory :customer_return, class: Spree::CustomerReturn do
|
4
3
|
association(:stock_location, factory: :stock_location)
|
5
4
|
|
@@ -27,5 +26,4 @@ FactoryBot.define do
|
|
27
26
|
factory :customer_return_without_return_items, class: Spree::CustomerReturn do
|
28
27
|
association(:stock_location, factory: :stock_location)
|
29
28
|
end
|
30
|
-
|
31
29
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
1
|
+
FactoryGirl.define do
|
2
2
|
factory :image, class: Spree::Image do
|
3
|
-
attachment { File.new(Spree::Core::Engine.root +
|
3
|
+
attachment { File.new(Spree::Core::Engine.root + 'spec/fixtures' + 'thinking-cat.jpg') }
|
4
4
|
end
|
5
5
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
FactoryGirl.define do
|
2
2
|
factory :line_item, class: Spree::LineItem do
|
3
3
|
quantity 1
|
4
4
|
price { BigDecimal.new('10.00') }
|
@@ -6,6 +6,6 @@ FactoryBot.define do
|
|
6
6
|
transient do
|
7
7
|
association :product
|
8
8
|
end
|
9
|
-
variant{ product.master }
|
9
|
+
variant { product.master }
|
10
10
|
end
|
11
11
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
FactoryGirl.define do
|
2
2
|
factory :check_payment_method, class: Spree::PaymentMethod::Check do
|
3
3
|
name 'Check'
|
4
4
|
end
|
@@ -14,9 +14,9 @@ FactoryBot.define do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
factory :store_credit_payment_method, class: Spree::PaymentMethod::StoreCredit do
|
17
|
-
type
|
18
|
-
name
|
19
|
-
description
|
17
|
+
type 'Spree::PaymentMethod::StoreCredit'
|
18
|
+
name 'Store Credit'
|
19
|
+
description 'Store Credit'
|
20
20
|
active true
|
21
21
|
auto_capture true
|
22
22
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
FactoryGirl.define do
|
2
2
|
factory :promotion, class: Spree::Promotion do
|
3
3
|
name 'Promo'
|
4
4
|
|
@@ -47,6 +47,5 @@ FactoryBot.define do
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
factory :promotion_with_item_total_rule, traits: [:with_item_total_rule]
|
50
|
-
|
51
50
|
end
|
52
51
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
FactoryGirl.define do
|
2
2
|
factory :reimbursement, class: Spree::Reimbursement do
|
3
3
|
transient do
|
4
4
|
return_items_count 1
|
@@ -6,7 +6,7 @@ FactoryBot.define do
|
|
6
6
|
|
7
7
|
customer_return { create(:customer_return_with_accepted_items, line_items_count: return_items_count) }
|
8
8
|
|
9
|
-
before(:create) do |reimbursement,
|
9
|
+
before(:create) do |reimbursement, _evaluator|
|
10
10
|
reimbursement.order ||= reimbursement.customer_return.order
|
11
11
|
if reimbursement.return_items.empty?
|
12
12
|
reimbursement.return_items = reimbursement.customer_return.return_items
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
FactoryGirl.define do
|
2
2
|
factory :shipment, class: Spree::Shipment do
|
3
3
|
tracking 'U10000'
|
4
4
|
cost 100.00
|
@@ -6,7 +6,7 @@ FactoryBot.define do
|
|
6
6
|
order
|
7
7
|
stock_location
|
8
8
|
|
9
|
-
after(:create) do |shipment,
|
9
|
+
after(:create) do |shipment, _evalulator|
|
10
10
|
shipment.add_shipping_method(create(:shipping_method), true)
|
11
11
|
|
12
12
|
shipment.order.line_items.each do |line_item|
|
@@ -1,11 +1,11 @@
|
|
1
|
-
|
1
|
+
FactoryGirl.define do
|
2
2
|
factory :base_shipping_method, class: Spree::ShippingMethod do
|
3
|
-
zones { |
|
3
|
+
zones { |_a| [Spree::Zone.global] }
|
4
4
|
name 'UPS Ground'
|
5
5
|
code 'UPS_GROUND'
|
6
6
|
display_on 'both'
|
7
7
|
|
8
|
-
before(:create) do |shipping_method,
|
8
|
+
before(:create) do |shipping_method, _evaluator|
|
9
9
|
if shipping_method.shipping_categories.empty?
|
10
10
|
shipping_method.shipping_categories << (Spree::ShippingCategory.first || create(:shipping_category))
|
11
11
|
end
|