spree_core 3.0.0 → 3.0.1
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/assets/javascripts/spree.js.coffee.erb +4 -0
- data/app/helpers/spree/base_helper.rb +1 -1
- data/app/helpers/spree/products_helper.rb +1 -1
- data/app/models/spree/classification.rb +1 -1
- data/app/models/spree/credit_card.rb +8 -0
- data/app/models/spree/order.rb +10 -0
- data/app/models/spree/order/checkout.rb +3 -3
- data/app/models/spree/product.rb +2 -2
- data/app/models/spree/product_property.rb +2 -0
- data/app/models/spree/promotion.rb +11 -5
- data/app/models/spree/promotion/actions/create_line_items.rb +12 -3
- data/app/models/spree/promotion_handler/coupon.rb +4 -10
- data/app/models/spree/shipment.rb +2 -0
- data/app/models/spree/stock/package.rb +4 -0
- data/app/models/spree/stock/splitter/weight.rb +4 -2
- data/app/models/spree/variant.rb +6 -1
- data/config/locales/en.yml +2 -2
- data/db/migrate/20140309033438_create_store_from_preferences.rb +7 -0
- data/db/migrate/20150309161154_ensure_payments_have_numbers.rb +1 -1
- data/lib/spree/core/controller_helpers/auth.rb +1 -1
- data/lib/spree/core/importer/order.rb +25 -24
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/permitted_attributes.rb +7 -3
- data/lib/spree/testing_support/factories/image_factory.rb +5 -0
- data/lib/tasks/email.rake +2 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d168d119d3a44a1239b14adbbbbd73e6fe2d23e
|
4
|
+
data.tar.gz: a3fa4208dc96c9d0c279fcd46a579a309faed8de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c968dcf2009be78df09de90f3760f77c945cc86c16d2ca356213defed6699f049fc8823303b737ab6518ce0cec7ff5243d317b8464147e19e90df97dc03d593c
|
7
|
+
data.tar.gz: 45a207f6c1c87d87f49d14f0f18798568cb0709ed35f0c8de036c23ef335bf1cb2bbf8046f31ed8b176d452252f7f910f3e1d9f3c7f6d71b4fb6ee2e875b8c07
|
@@ -3,6 +3,10 @@ class window.Spree
|
|
3
3
|
@ready: (callback) ->
|
4
4
|
jQuery(document).ready(callback)
|
5
5
|
|
6
|
+
# fire ready callbacks also on turbolinks page change event
|
7
|
+
jQuery(document).on 'page:load', ->
|
8
|
+
callback(jQuery)
|
9
|
+
|
6
10
|
@mountedAt: ->
|
7
11
|
"<%= Rails.application.routes.url_helpers.spree_path %>"
|
8
12
|
|
@@ -44,7 +44,7 @@ module Spree
|
|
44
44
|
end
|
45
45
|
|
46
46
|
if meta[:description].blank? && object.kind_of?(Spree::Product)
|
47
|
-
meta[:description] = strip_tags(
|
47
|
+
meta[:description] = truncate(strip_tags(object.description), length: 160, separator: ' ')
|
48
48
|
end
|
49
49
|
|
50
50
|
meta.reverse_merge!({
|
@@ -45,7 +45,7 @@ module Spree
|
|
45
45
|
|
46
46
|
def line_item_description_text description_text
|
47
47
|
if description_text.present?
|
48
|
-
truncate(strip_tags(description_text.gsub(' ', ' ')), length: 100)
|
48
|
+
truncate(strip_tags(description_text.gsub(' ', ' ').squish), length: 100)
|
49
49
|
else
|
50
50
|
Spree.t(:product_has_no_description)
|
51
51
|
end
|
@@ -2,7 +2,7 @@ module Spree
|
|
2
2
|
class Classification < Spree::Base
|
3
3
|
self.table_name = 'spree_products_taxons'
|
4
4
|
acts_as_list scope: :taxon
|
5
|
-
belongs_to :product, class_name: "Spree::Product", inverse_of: :classifications
|
5
|
+
belongs_to :product, class_name: "Spree::Product", inverse_of: :classifications, touch: true
|
6
6
|
belongs_to :taxon, class_name: "Spree::Taxon", inverse_of: :classifications, touch: true
|
7
7
|
|
8
8
|
# For #3494
|
@@ -24,6 +24,14 @@ module Spree
|
|
24
24
|
# needed for some of the ActiveMerchant gateways (eg. SagePay)
|
25
25
|
alias_attribute :brand, :cc_type
|
26
26
|
|
27
|
+
# ActiveMerchant::Billing::CreditCard added this accessor used by some gateways.
|
28
|
+
# More info: https://github.com/spree/spree/issues/6209
|
29
|
+
#
|
30
|
+
# Returns or sets the track data for the card
|
31
|
+
#
|
32
|
+
# @return [String]
|
33
|
+
attr_accessor :track_data
|
34
|
+
|
27
35
|
CARD_TYPES = {
|
28
36
|
visa: /^4[0-9]{12}(?:[0-9]{3})?$/,
|
29
37
|
master: /(^5[1-5][0-9]{14}$)|(^6759[0-9]{2}([0-9]{10})$)|(^6759[0-9]{2}([0-9]{12})$)|(^6759[0-9]{2}([0-9]{13})$)/,
|
data/app/models/spree/order.rb
CHANGED
@@ -3,6 +3,9 @@ require 'spree/order/checkout'
|
|
3
3
|
|
4
4
|
module Spree
|
5
5
|
class Order < Spree::Base
|
6
|
+
PAYMENT_STATES = %w(balance_due checkout completed credit_owed failed paid pending processing void).freeze
|
7
|
+
SHIPMENT_STATES = %w(backorder canceled partial pending ready shipped).freeze
|
8
|
+
|
6
9
|
extend FriendlyId
|
7
10
|
friendly_id :number, slug_column: :number, use: :slugged
|
8
11
|
|
@@ -277,6 +280,13 @@ module Spree
|
|
277
280
|
def outstanding_balance
|
278
281
|
if state == 'canceled'
|
279
282
|
-1 * payment_total
|
283
|
+
elsif reimbursements.includes(:refunds).size > 0
|
284
|
+
reimbursed = reimbursements.includes(:refunds).inject(0) do |sum, reimbursement|
|
285
|
+
sum + reimbursement.refunds.sum(:amount)
|
286
|
+
end
|
287
|
+
# If reimbursement has happened add it back to total to prevent balance_due payment state
|
288
|
+
# See: https://github.com/spree/spree/issues/6229
|
289
|
+
total - (payment_total + reimbursed)
|
280
290
|
else
|
281
291
|
total - payment_total
|
282
292
|
end
|
@@ -229,11 +229,11 @@ module Spree
|
|
229
229
|
success = false
|
230
230
|
@updating_params = params
|
231
231
|
run_callbacks :updating_from_params do
|
232
|
-
attributes = @updating_params[:order] ? @updating_params[:order].permit(permitted_params).delete_if { |k,v| v.nil? } : {}
|
233
|
-
|
234
232
|
# Set existing card after setting permitted parameters because
|
235
233
|
# rails would slice parameters containg ruby objects, apparently
|
236
|
-
existing_card_id = @updating_params[:order] ? @updating_params[:order]
|
234
|
+
existing_card_id = @updating_params[:order] ? @updating_params[:order].delete(:existing_card) : nil
|
235
|
+
|
236
|
+
attributes = @updating_params[:order] ? @updating_params[:order].permit(permitted_params).delete_if { |k,v| v.nil? } : {}
|
237
237
|
|
238
238
|
if existing_card_id.present?
|
239
239
|
credit_card = CreditCard.find existing_card_id
|
data/app/models/spree/product.rb
CHANGED
@@ -90,7 +90,7 @@ module Spree
|
|
90
90
|
validates :name, presence: true
|
91
91
|
validates :price, presence: true, if: proc { Spree::Config[:require_master_price] }
|
92
92
|
validates :shipping_category_id, presence: true
|
93
|
-
validates :slug, length: { minimum: 3 },
|
93
|
+
validates :slug, length: { minimum: 3 }, allow_blank: true, uniqueness: true
|
94
94
|
|
95
95
|
attr_accessor :option_values_hash
|
96
96
|
|
@@ -264,7 +264,7 @@ module Spree
|
|
264
264
|
|
265
265
|
def punch_slug
|
266
266
|
# punch slug with date prefix to allow reuse of original
|
267
|
-
update_column :slug, "#{Time.now.to_i}_#{slug}" unless frozen?
|
267
|
+
update_column :slug, "#{Time.now.to_i}_#{slug}"[0..254] unless frozen?
|
268
268
|
end
|
269
269
|
|
270
270
|
def anything_changed?
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module Spree
|
2
2
|
class ProductProperty < Spree::Base
|
3
|
+
acts_as_list scope: :product
|
4
|
+
|
3
5
|
belongs_to :product, touch: true, class_name: 'Spree::Product', inverse_of: :product_properties
|
4
6
|
belongs_to :property, class_name: 'Spree::Property', inverse_of: :product_properties
|
5
7
|
|
@@ -91,23 +91,28 @@ module Spree
|
|
91
91
|
# Promotions without rules are eligible by default.
|
92
92
|
return [] if rules.none?
|
93
93
|
eligible = lambda { |r| r.eligible?(promotable, options) }
|
94
|
-
specific_rules = rules.
|
94
|
+
specific_rules = rules.select { |rule| rule.applicable?(promotable) }
|
95
95
|
return [] if specific_rules.none?
|
96
96
|
|
97
|
+
rule_eligibility = Hash[specific_rules.map do |rule|
|
98
|
+
[rule, rule.eligible?(promotable, options)]
|
99
|
+
end]
|
100
|
+
|
97
101
|
if match_all?
|
98
102
|
# If there are rules for this promotion, but no rules for this
|
99
103
|
# particular promotable, then the promotion is ineligible by default.
|
100
|
-
unless
|
104
|
+
unless rule_eligibility.values.all?
|
101
105
|
@eligibility_errors = specific_rules.map(&:eligibility_errors).detect(&:present?)
|
102
106
|
return nil
|
103
107
|
end
|
104
108
|
specific_rules
|
105
109
|
else
|
106
|
-
unless
|
110
|
+
unless rule_eligibility.values.any?
|
107
111
|
@eligibility_errors = specific_rules.map(&:eligibility_errors).detect(&:present?)
|
108
112
|
return nil
|
109
113
|
end
|
110
|
-
|
114
|
+
|
115
|
+
[rule_eligibility.detect { |_, eligibility| eligibility }.first]
|
111
116
|
end
|
112
117
|
end
|
113
118
|
|
@@ -120,7 +125,8 @@ module Spree
|
|
120
125
|
end
|
121
126
|
|
122
127
|
def adjusted_credits_count(promotable)
|
123
|
-
|
128
|
+
adjustments = promotable.is_a?(Order) ? promotable.all_adjustments : promotable.adjustments
|
129
|
+
credits_count - adjustments.promotion.where(:source_id => actions.pluck(:id)).count
|
124
130
|
end
|
125
131
|
|
126
132
|
def credits
|
@@ -39,14 +39,23 @@ module Spree
|
|
39
39
|
order = options[:order]
|
40
40
|
return unless self.eligible? order
|
41
41
|
|
42
|
+
action_taken = false
|
42
43
|
promotion_action_line_items.each do |item|
|
43
44
|
current_quantity = order.quantity_of(item.variant)
|
44
|
-
if current_quantity < item.quantity
|
45
|
-
order.contents.add(item.variant, item.quantity - current_quantity)
|
45
|
+
if current_quantity < item.quantity && item_available?(item)
|
46
|
+
line_item = order.contents.add(item.variant, item.quantity - current_quantity)
|
47
|
+
action_taken = true if line_item.try(:valid?)
|
46
48
|
end
|
47
49
|
end
|
48
|
-
|
50
|
+
action_taken
|
49
51
|
end
|
52
|
+
|
53
|
+
# Checks that there's enough stock to add the line item to the order
|
54
|
+
def item_available?(item)
|
55
|
+
quantifier = Spree::Stock::Quantifier.new(item.variant)
|
56
|
+
quantifier.can_supply? item.quantity
|
57
|
+
end
|
58
|
+
|
50
59
|
end
|
51
60
|
end
|
52
61
|
end
|
@@ -79,21 +79,15 @@ module Spree
|
|
79
79
|
end
|
80
80
|
|
81
81
|
def determine_promotion_application_result
|
82
|
-
detector = lambda { |p|
|
83
|
-
if p.source.promotion.code
|
84
|
-
p.source.promotion.code.downcase == order.coupon_code.downcase
|
85
|
-
end
|
86
|
-
}
|
87
|
-
|
88
82
|
# Check for applied adjustments.
|
89
|
-
discount = order.
|
90
|
-
|
91
|
-
|
83
|
+
discount = order.all_adjustments.promotion.eligible.detect do |p|
|
84
|
+
p.source.promotion.code.try(:downcase) == order.coupon_code.downcase
|
85
|
+
end
|
92
86
|
|
93
87
|
# Check for applied line items.
|
94
88
|
created_line_items = promotion.actions.detect { |a| a.type == 'Spree::Promotion::Actions::CreateLineItems' }
|
95
89
|
|
96
|
-
if
|
90
|
+
if discount || created_line_items
|
97
91
|
order.update_totals
|
98
92
|
order.persist_totals
|
99
93
|
set_success_code :coupon_code_applied
|
@@ -20,8 +20,10 @@ module Spree
|
|
20
20
|
def reduce(package)
|
21
21
|
removed = []
|
22
22
|
while package.weight > self.threshold
|
23
|
-
|
24
|
-
|
23
|
+
contents = package.contents_by_weight
|
24
|
+
break if contents.size == 1
|
25
|
+
# Deleting the second heaviest item in the package should yield best results
|
26
|
+
removed << package.contents.delete(contents[1])
|
25
27
|
end
|
26
28
|
removed
|
27
29
|
end
|
data/app/models/spree/variant.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Spree
|
2
2
|
class Variant < Spree::Base
|
3
3
|
acts_as_paranoid
|
4
|
+
acts_as_list
|
4
5
|
|
5
6
|
include Spree::DefaultPrice
|
6
7
|
|
@@ -47,6 +48,10 @@ module Spree
|
|
47
48
|
joins(:prices).where(deleted_at: nil).where('spree_prices.currency' => currency || Spree::Config[:currency]).where('spree_prices.amount IS NOT NULL')
|
48
49
|
end
|
49
50
|
|
51
|
+
def self.having_orders
|
52
|
+
joins(:line_items).distinct
|
53
|
+
end
|
54
|
+
|
50
55
|
def tax_category
|
51
56
|
if self[:tax_category_id].nil?
|
52
57
|
product.tax_category
|
@@ -172,7 +177,7 @@ module Spree
|
|
172
177
|
return 0 unless options.present?
|
173
178
|
|
174
179
|
options.keys.map { |key|
|
175
|
-
m = "#{
|
180
|
+
m = "#{key}_price_modifier_amount".to_sym
|
176
181
|
if self.respond_to? m
|
177
182
|
self.send(m, options[key])
|
178
183
|
else
|
data/config/locales/en.yml
CHANGED
@@ -400,7 +400,6 @@ en:
|
|
400
400
|
add_rule_of_type: Add rule of type
|
401
401
|
add_state: Add State
|
402
402
|
add_stock: Add Stock
|
403
|
-
add_stock_management: Add Stock Management
|
404
403
|
add_to_cart: Add To Cart
|
405
404
|
add_variant: Add Variant
|
406
405
|
additional_item: Additional Item
|
@@ -617,7 +616,7 @@ en:
|
|
617
616
|
discount_amount: Discount Amount
|
618
617
|
dismiss_banner: No. Thanks! I'm not interested, do not display this message again
|
619
618
|
display: Display
|
620
|
-
doesnt_track_inventory: It
|
619
|
+
doesnt_track_inventory: It doesn't track inventory
|
621
620
|
edit: Edit
|
622
621
|
editing_resource: 'Editing %{resource}'
|
623
622
|
editing_rma_reason: Editing RMA Reason
|
@@ -1071,6 +1070,7 @@ en:
|
|
1071
1070
|
received: Received
|
1072
1071
|
reception_status: Reception Status
|
1073
1072
|
reference: Reference
|
1073
|
+
reference_contains: Reference Contains
|
1074
1074
|
refund: Refund
|
1075
1075
|
refund_amount_must_be_greater_than_zero: Refund amount must be greater than zero
|
1076
1076
|
refund_reasons: Refund Reasons
|
@@ -1,5 +1,12 @@
|
|
1
1
|
class CreateStoreFromPreferences < ActiveRecord::Migration
|
2
2
|
def change
|
3
|
+
# workaround for spree_i18n and Store translations
|
4
|
+
Spree::Store.class_eval do
|
5
|
+
def self.translated?(name)
|
6
|
+
false
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
3
10
|
preference_store = Spree::Preferences::Store.instance
|
4
11
|
if store = Spree::Store.where(default: true).first
|
5
12
|
store.meta_description = preference_store.get('spree/app_configuration/default_meta_description') {}
|
@@ -72,7 +72,7 @@ module Spree
|
|
72
72
|
if respond_to?(:spree_login_path)
|
73
73
|
redirect_to spree_login_path
|
74
74
|
else
|
75
|
-
redirect_to spree.respond_to?(:root_path) ? spree.root_path : root_path
|
75
|
+
redirect_to spree.respond_to?(:root_path) ? spree.root_path : main_app.root_path
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
@@ -16,9 +16,8 @@ module Spree
|
|
16
16
|
|
17
17
|
shipments_attrs = params.delete(:shipments_attributes)
|
18
18
|
|
19
|
-
create_shipments_from_params(shipments_attrs, order)
|
20
19
|
create_line_items_from_params(params.delete(:line_items_attributes),order)
|
21
|
-
create_shipments_from_params(
|
20
|
+
create_shipments_from_params(shipments_attrs, order)
|
22
21
|
create_adjustments_from_params(params.delete(:adjustments_attributes), order)
|
23
22
|
create_payments_from_params(params.delete(:payments_attributes), order)
|
24
23
|
|
@@ -50,44 +49,45 @@ module Spree
|
|
50
49
|
def self.create_shipments_from_params(shipments_hash, order)
|
51
50
|
return [] unless shipments_hash
|
52
51
|
|
53
|
-
|
52
|
+
inventory_units = Spree::Stock::InventoryUnitBuilder.new(order).units
|
53
|
+
|
54
54
|
shipments_hash.each do |s|
|
55
55
|
begin
|
56
56
|
shipment = order.shipments.build
|
57
57
|
shipment.tracking = s[:tracking]
|
58
58
|
shipment.stock_location = Spree::StockLocation.find_by_admin_name(s[:stock_location]) || Spree::StockLocation.find_by_name!(s[:stock_location])
|
59
59
|
|
60
|
-
|
61
|
-
|
62
|
-
ensure_variant_id_from_params(
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
60
|
+
shipment_units = s[:inventory_units] || []
|
61
|
+
shipment_units.each do |su|
|
62
|
+
ensure_variant_id_from_params(su)
|
63
|
+
|
64
|
+
inventory_unit = inventory_units.detect { |iu| iu.variant_id.to_i == su[:variant_id].to_i }
|
65
|
+
|
66
|
+
if inventory_unit.present?
|
67
|
+
inventory_unit.shipment = shipment
|
68
|
+
|
69
|
+
if s[:shipped_at].present?
|
70
|
+
inventory_unit.pending = false
|
71
|
+
inventory_unit.state = 'shipped'
|
72
|
+
end
|
73
|
+
|
74
|
+
inventory_unit.save!
|
75
|
+
|
76
|
+
# Don't assign shipments to this inventory unit more than once
|
77
|
+
inventory_units.delete(inventory_unit)
|
78
|
+
end
|
75
79
|
end
|
76
80
|
|
77
|
-
# Mark shipped if it should be.
|
78
81
|
if s[:shipped_at].present?
|
79
82
|
shipment.shipped_at = s[:shipped_at]
|
80
83
|
shipment.state = 'shipped'
|
81
|
-
shipment.inventory_units.each do |unit|
|
82
|
-
unit.state = 'shipped'
|
83
|
-
end
|
84
84
|
end
|
85
85
|
|
86
86
|
shipment.save!
|
87
87
|
|
88
88
|
shipping_method = Spree::ShippingMethod.find_by_name(s[:shipping_method]) || Spree::ShippingMethod.find_by_admin_name!(s[:shipping_method])
|
89
|
-
rate = shipment.shipping_rates.create!(:shipping_method
|
90
|
-
|
89
|
+
rate = shipment.shipping_rates.create!(shipping_method: shipping_method, cost: s[:cost])
|
90
|
+
|
91
91
|
shipment.selected_shipping_rate_id = rate.id
|
92
92
|
shipment.update_amounts
|
93
93
|
|
@@ -192,6 +192,7 @@ module Spree
|
|
192
192
|
# Order API should be using state as that's the normal payment field.
|
193
193
|
# spree_wombat serializes payment state as status so imported orders should fall back to status field.
|
194
194
|
payment.state = p[:state] || p[:status] || 'completed'
|
195
|
+
payment.created_at = p[:created_at] if p[:created_at]
|
195
196
|
payment.payment_method = Spree::PaymentMethod.find_by_name!(p[:payment_method])
|
196
197
|
payment.source = create_source_payment_from_params(p[:source], payment) if p[:source]
|
197
198
|
payment.save!
|
data/lib/spree/core/version.rb
CHANGED
@@ -61,7 +61,9 @@ module Spree
|
|
61
61
|
:meta_keywords, :price, :sku, :deleted_at, :prototype_id,
|
62
62
|
:option_values_hash, :weight, :height, :width, :depth,
|
63
63
|
:shipping_category_id, :tax_category_id,
|
64
|
-
:taxon_ids, :
|
64
|
+
:taxon_ids, :cost_currency, :cost_price,
|
65
|
+
option_type_ids: []
|
66
|
+
]
|
65
67
|
|
66
68
|
@@property_attributes = [:name, :presentation]
|
67
69
|
|
@@ -101,8 +103,10 @@ module Spree
|
|
101
103
|
|
102
104
|
@@variant_attributes = [
|
103
105
|
:name, :presentation, :cost_price, :lock_version,
|
104
|
-
:position, :
|
106
|
+
:position, :track_inventory,
|
105
107
|
:product_id, :product, :option_values_attributes, :price,
|
106
|
-
:weight, :height, :width, :depth, :sku, :cost_currency,
|
108
|
+
:weight, :height, :width, :depth, :sku, :cost_currency,
|
109
|
+
options: [:name, :value], option_value_ids: []
|
110
|
+
]
|
107
111
|
end
|
108
112
|
end
|
data/lib/tasks/email.rake
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
namespace :email do
|
2
|
-
desc 'Sends test email to specified address - Example: EMAIL=spree@example.com bundle exec rake test
|
2
|
+
desc 'Sends test email to specified address - Example: EMAIL=spree@example.com bundle exec rake email:test'
|
3
3
|
task test: :environment do
|
4
4
|
unless ENV['EMAIL'].present?
|
5
5
|
raise ArgumentError, "Must pass EMAIL environment variable. " \
|
6
|
-
"Example: EMAIL=spree@example.com bundle exec rake test
|
6
|
+
"Example: EMAIL=spree@example.com bundle exec rake email:test"
|
7
7
|
end
|
8
8
|
Spree::TestMailer.test_email(ENV['EMAIL']).deliver_now
|
9
9
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Schofield
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemerchant
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.47.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.47.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: acts_as_list
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -842,6 +842,7 @@ files:
|
|
842
842
|
- lib/spree/testing_support/factories/country_factory.rb
|
843
843
|
- lib/spree/testing_support/factories/credit_card_factory.rb
|
844
844
|
- lib/spree/testing_support/factories/customer_return_factory.rb
|
845
|
+
- lib/spree/testing_support/factories/image_factory.rb
|
845
846
|
- lib/spree/testing_support/factories/inventory_unit_factory.rb
|
846
847
|
- lib/spree/testing_support/factories/line_item_factory.rb
|
847
848
|
- lib/spree/testing_support/factories/options_factory.rb
|