spree_core 3.3.6 → 3.4.0.rc1
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 +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
|