spree_core 2.0.3 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/logo/spree_50.png +0 -0
  3. data/app/assets/images/noimage/large.png +0 -0
  4. data/app/assets/images/noimage/mini.png +0 -0
  5. data/app/assets/images/noimage/product.png +0 -0
  6. data/app/assets/images/noimage/small.png +0 -0
  7. data/app/controllers/spree/base_controller.rb +3 -0
  8. data/app/helpers/spree/base_helper.rb +15 -11
  9. data/app/models/spree/adjustment.rb +5 -0
  10. data/app/models/spree/app_configuration.rb +3 -3
  11. data/app/models/spree/calculator/default_tax.rb +2 -2
  12. data/app/models/spree/calculator/percent_per_item.rb +9 -5
  13. data/app/models/spree/calculator.rb +1 -1
  14. data/app/models/spree/credit_card.rb +25 -0
  15. data/app/models/spree/line_item.rb +9 -0
  16. data/app/models/spree/new_adjustment.rb +4 -0
  17. data/app/models/spree/order/checkout.rb +4 -5
  18. data/app/models/spree/order.rb +52 -25
  19. data/app/models/spree/order_contents.rb +8 -7
  20. data/app/models/spree/order_inventory.rb +13 -13
  21. data/app/models/spree/order_populator.rb +4 -14
  22. data/app/models/spree/order_updater.rb +1 -1
  23. data/app/models/spree/payment/processing.rb +5 -0
  24. data/app/models/spree/payment.rb +12 -1
  25. data/app/models/spree/payment_method.rb +1 -4
  26. data/app/models/spree/product.rb +44 -17
  27. data/app/models/spree/promotion/actions/create_adjustment.rb +1 -1
  28. data/app/models/spree/promotion/actions/create_line_items.rb +32 -2
  29. data/app/models/spree/promotion.rb +2 -1
  30. data/app/models/spree/shipment.rb +5 -5
  31. data/app/models/spree/shipping_adjustment.rb +4 -0
  32. data/app/models/spree/shipping_method.rb +6 -0
  33. data/app/models/spree/shipping_rate.rb +1 -0
  34. data/app/models/spree/stock/availability_validator.rb +5 -3
  35. data/app/models/spree/stock/coordinator.rb +16 -4
  36. data/app/models/spree/stock/estimator.rb +16 -6
  37. data/app/models/spree/stock/packer.rb +2 -1
  38. data/app/models/spree/stock_location.rb +16 -6
  39. data/app/models/spree/tax_category.rb +1 -7
  40. data/app/models/spree/tax_rate.rb +1 -0
  41. data/app/models/spree/variant.rb +16 -3
  42. data/app/models/spree/zone.rb +1 -1
  43. data/config/initializers/user_class_extensions.rb +1 -1
  44. data/config/locales/en.yml +15 -1
  45. data/db/migrate/20130228210442_create_shipping_method_zone.rb +6 -1
  46. data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +4 -1
  47. data/db/migrate/20130515180736_add_backorderable_default_to_spree_stock_location.rb +5 -0
  48. data/db/migrate/20130516151222_add_propage_all_variants_to_spree_stock_location.rb +5 -0
  49. data/db/migrate/20130626232741_add_cvv_result_code_and_cvv_result_message_to_spree_payments.rb +6 -0
  50. data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +5 -0
  51. data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +7 -0
  52. data/db/migrate/20130708052307_add_deleted_at_to_spree_tax_rates.rb +5 -0
  53. data/db/migrate/20130711200933_remove_lock_version_from_inventory_units.rb +6 -0
  54. data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +5 -0
  55. data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +6 -0
  56. data/db/migrate/20130725031716_add_created_by_id_to_spree_orders.rb +5 -0
  57. data/db/migrate/20130729214043_index_completed_at_on_spree_orders.rb +5 -0
  58. data/db/migrate/20130802014537_add_tax_category_id_to_spree_line_items.rb +5 -0
  59. data/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb +9 -0
  60. data/db/migrate/20130805043440_create_spree_new_adjustments.rb +8 -0
  61. data/lib/generators/spree/dummy/templates/rails/database.yml +8 -7
  62. data/lib/generators/spree/install/install_generator.rb +1 -1
  63. data/lib/spree/core/calculated_adjustments.rb +12 -1
  64. data/lib/spree/core/controller_helpers/order.rb +5 -3
  65. data/lib/spree/core/controller_helpers/search.rb +14 -0
  66. data/lib/spree/core/permalinks.rb +13 -13
  67. data/lib/spree/core/s3_support.rb +1 -1
  68. data/lib/spree/core/version.rb +1 -1
  69. data/lib/spree/core.rb +7 -5
  70. data/lib/spree/i18n/base.rb +17 -0
  71. data/lib/spree/i18n/initializer.rb +1 -0
  72. data/lib/spree/i18n.rb +28 -7
  73. data/lib/spree/money.rb +2 -0
  74. data/lib/spree/testing_support/authorization_helpers.rb +6 -15
  75. data/lib/spree/testing_support/capybara_ext.rb +20 -11
  76. data/lib/spree/testing_support/common_rake.rb +13 -0
  77. data/lib/spree/testing_support/factories/country_factory.rb +1 -1
  78. data/lib/spree/testing_support/factories/order_factory.rb +0 -2
  79. data/lib/spree/testing_support/factories/payment_method_factory.rb +1 -1
  80. data/lib/spree/testing_support/factories/product_factory.rb +8 -18
  81. data/lib/spree/testing_support/factories/return_authorization_factory.rb +4 -0
  82. data/lib/spree/testing_support/factories/shipment_factory.rb +1 -1
  83. data/lib/spree/testing_support/factories/stock_item_factory.rb +2 -1
  84. data/lib/spree/testing_support/factories/stock_location_factory.rb +5 -2
  85. data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
  86. data/lib/spree/testing_support/order_walkthrough.rb +14 -1
  87. data/vendor/assets/javascripts/jquery.validate/localization/messages_et.js +23 -0
  88. data/vendor/assets/javascripts/jquery.validate/localization/messages_eu.js +25 -0
  89. data/vendor/assets/javascripts/jquery.validate/localization/messages_hr.js +25 -0
  90. data/vendor/assets/javascripts/jquery.validate/localization/messages_ka.js +25 -0
  91. data/vendor/assets/javascripts/jquery.validate/localization/messages_ko.js +25 -0
  92. data/vendor/assets/javascripts/jquery.validate/localization/messages_my.js +25 -0
  93. data/vendor/assets/javascripts/jquery.validate/localization/messages_pt_BR.js +26 -0
  94. data/vendor/assets/javascripts/jquery.validate/localization/messages_pt_PT.js +26 -0
  95. data/vendor/assets/javascripts/jquery.validate/localization/messages_sl.js +25 -0
  96. data/vendor/assets/javascripts/jquery.validate/localization/messages_sv.js +23 -0
  97. data/vendor/assets/javascripts/jquery.validate/localization/messages_uk.js +25 -0
  98. data/vendor/assets/javascripts/jquery.validate/localization/messages_zh.js +25 -0
  99. data/vendor/assets/javascripts/jquery.validate/localization/messages_zh_TW.js +26 -0
  100. metadata +118 -67
@@ -0,0 +1,5 @@
1
+ class AddCostPriceToLineItem < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_line_items, :cost_price, :decimal, :precision => 8, :scale => 2
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class SetBackorderableToDefaultToFalse < ActiveRecord::Migration
2
+ def change
3
+ change_column :spree_stock_items, :backorderable, :boolean, :default => false
4
+ change_column :spree_stock_locations, :backorderable_default, :boolean, :default => false
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ class AddCreatedByIdToSpreeOrders < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_orders, :created_by_id, :integer
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class IndexCompletedAtOnSpreeOrders < ActiveRecord::Migration
2
+ def change
3
+ add_index :spree_orders, :completed_at
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddTaxCategoryIdToSpreeLineItems < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_line_items, :tax_category_id, :integer
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ class MigrateTaxCategoriesToLineItems < ActiveRecord::Migration
2
+ def change
3
+ Spree::LineItem.includes(:variant => { :product => :tax_category }).find_in_batches do |line_items|
4
+ line_items.each do |line_item|
5
+ line_item.update_column(:tax_category_id, line_item.product.tax_category.id)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ class CreateSpreeNewAdjustments < ActiveRecord::Migration
2
+ def change
3
+ create_table :spree_new_adjustments do |t|
4
+
5
+ t.timestamps
6
+ end
7
+ end
8
+ end
@@ -1,17 +1,18 @@
1
1
  <% if agent_number = ENV['TC_AGENT_NUMBER']
2
- database_prefix = agent_number + "_"
2
+ database_prefix = agent_number + '_'
3
3
  end %>
4
4
  <% case ENV['DB']
5
5
  when 'sqlite' %>
6
6
  development:
7
7
  adapter: sqlite3
8
- database: "db/spree_development.sqlite3"
8
+ database: db/spree_development.sqlite3
9
9
  test:
10
10
  adapter: sqlite3
11
- database: "db/spree_test.sqlite3"
11
+ database: db/spree_test.sqlite3
12
+ timeout: 10000
12
13
  production:
13
14
  adapter: sqlite3
14
- database: "db/spree_production.sqlite3"
15
+ database: db/spree_production.sqlite3
15
16
  <% when 'mysql' %>
16
17
  development:
17
18
  adapter: mysql2
@@ -47,11 +48,11 @@ production:
47
48
  <% else %>
48
49
  development:
49
50
  adapter: sqlite3
50
- database: "db/spree_development.sqlite3"
51
+ database: db/spree_development.sqlite3
51
52
  test:
52
53
  adapter: sqlite3
53
- database: "db/spree_test.sqlite3"
54
+ database: db/spree_test.sqlite3
54
55
  production:
55
56
  adapter: sqlite3
56
- database: "db/spree_production.sqlite3"
57
+ database: db/spree_production.sqlite3
57
58
  <% end %>
@@ -100,7 +100,7 @@ Disallow: /account
100
100
  end
101
101
  APP
102
102
 
103
- append_file "config/environment.rb", "\nActiveRecord::Base.include_root_in_json = true\n"
103
+ append_file "config/environment.rb", "\nActiveRecord::Base.include_root_in_json = false\n"
104
104
  end
105
105
 
106
106
  def include_seed_data
@@ -25,10 +25,16 @@ module Spree
25
25
  # sets amount based on the calculator as applied to the calculable argument (Order, LineItems[], Shipment, etc.)
26
26
  # By default the adjustment will not be considered mandatory
27
27
  def create_adjustment(label, target, calculable, mandatory=false, state="closed")
28
+ # Adjustment calculations done on Spree::Shipment objects MUST
29
+ # be done on their to_package'd variants instead
30
+ # It's only the package that contains the correct information.
31
+ # See https://github.com/spree/spree_active_shipping/pull/96 et. al
32
+ old_calculable = calculable
33
+ calculable = calculable.to_package if calculable.is_a?(Spree::Shipment)
28
34
  amount = compute_amount(calculable)
29
35
  return if amount == 0 && !mandatory
30
36
  target.adjustments.create({ :amount => amount,
31
- :source => calculable,
37
+ :source => old_calculable,
32
38
  :originator => self,
33
39
  :label => label,
34
40
  :mandatory => mandatory,
@@ -38,6 +44,11 @@ module Spree
38
44
  # Updates the amount of the adjustment using our Calculator and calling the +compute+ method with the +calculable+
39
45
  # referenced passed to the method.
40
46
  def update_adjustment(adjustment, calculable)
47
+ # Adjustment calculations done on Spree::Shipment objects MUST
48
+ # be done on their to_package'd variants instead
49
+ # It's only the package that contains the correct information.
50
+ # See https://github.com/spree/spree_active_shipping/pull/96 et. al
51
+ calculable = calculable.to_package if calculable.is_a?(Spree::Shipment)
41
52
  adjustment.update_attribute_without_callbacks(:amount, compute_amount(calculable))
42
53
  end
43
54
 
@@ -20,6 +20,8 @@ module Spree
20
20
  if create_order_if_necessary and (@current_order.nil? or @current_order.completed?)
21
21
  @current_order = Spree::Order.new(:currency => current_currency)
22
22
  @current_order.user ||= try_spree_current_user
23
+ # See issue #3346 for reasons why this line is here
24
+ @current_order.created_by ||= try_spree_current_user
23
25
  @current_order.save!
24
26
 
25
27
  # make sure the user has permission to access the order (if they are a guest)
@@ -45,12 +47,12 @@ module Spree
45
47
  # This will trigger any "first order" promotions to be triggered
46
48
  # Assuming of course that this session variable was set correctly in
47
49
  # the authentication provider's registrations controller
48
- if session[:spree_user_signup]
49
- fire_event('spree.user.signup', :user => try_spree_current_user, :order => current_order(true))
50
+ if session[:spree_user_signup] && @order
51
+ fire_event('spree.user.signup', :user => try_spree_current_user, :order => @order)
52
+ session[:spree_user_signup] = nil
50
53
  end
51
54
 
52
55
  session[:guest_token] = nil
53
- session[:spree_user_signup] = nil
54
56
  end
55
57
 
56
58
  def set_current_order
@@ -0,0 +1,14 @@
1
+ module Spree
2
+ module Core
3
+ module ControllerHelpers
4
+ module Search
5
+ def build_searcher params
6
+ Spree::Config.searcher_class.new(params).tap do |searcher|
7
+ searcher.current_user = try_spree_current_user
8
+ searcher.current_currency = current_currency
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -14,8 +14,6 @@ module Spree
14
14
  options[:field] ||= :permalink
15
15
  self.permalink_options = options
16
16
 
17
- validates permalink_options[:field], :uniqueness => true
18
-
19
17
  if self.table_exists? && self.column_names.include?(permalink_options[:field].to_s)
20
18
  before_validation(:on => :create) { save_permalink }
21
19
  end
@@ -48,18 +46,20 @@ module Spree
48
46
  end
49
47
 
50
48
  def save_permalink(permalink_value=self.to_param)
51
- permalink_value ||= generate_permalink
49
+ self.with_lock do
50
+ permalink_value ||= generate_permalink
52
51
 
53
- field = self.class.permalink_field
54
- # Do other links exist with this permalink?
55
- other = self.class.where("#{self.class.table_name}.#{field} LIKE ?", "#{permalink_value}%")
56
- if other.any?
57
- # Find the existing permalink with the highest number, and increment that number.
58
- # (If none of the existing permalinks have a number, this will evaluate to 1.)
59
- number = other.map { |o| o.send(field)[/-(\d+)$/, 1].to_i }.max + 1
60
- permalink_value += "-#{number.to_s}"
61
- end
62
- write_attribute(field, permalink_value)
52
+ field = self.class.permalink_field
53
+ # Do other links exist with this permalink?
54
+ other = self.class.where("#{self.class.table_name}.#{field} LIKE ?", "#{permalink_value}%")
55
+ if other.any?
56
+ # Find the existing permalink with the highest number, and increment that number.
57
+ # (If none of the existing permalinks have a number, this will evaluate to 1.)
58
+ number = other.map { |o| o.send(field)[/-(\d+)$/, 1].to_i }.max + 1
59
+ permalink_value += "-#{number.to_s}"
60
+ end
61
+ write_attribute(field, permalink_value)
62
+ end
63
63
  end
64
64
  end
65
65
  end
@@ -15,7 +15,7 @@ module Spree
15
15
  self.attachment_definitions[field][:s3_credentials] = s3_creds
16
16
  self.attachment_definitions[field][:s3_headers] = ActiveSupport::JSON.decode(config[:s3_headers])
17
17
  self.attachment_definitions[field][:bucket] = config[:s3_bucket]
18
- self.attachment_definitions[field][:s3_protocol] = config[:s3_protocol] unless config[:s3_protocol].blank?
18
+ self.attachment_definitions[field][:s3_protocol] = config[:s3_protocol].downcase unless config[:s3_protocol].blank?
19
19
  self.attachment_definitions[field][:s3_host_alias] = config[:s3_host_alias] unless config[:s3_host_alias].blank?
20
20
  end
21
21
  end
@@ -1,5 +1,5 @@
1
1
  module Spree
2
2
  def self.version
3
- "2.0.3"
3
+ "2.0.4"
4
4
  end
5
5
  end
data/lib/spree/core.rb CHANGED
@@ -1,12 +1,14 @@
1
1
  require 'rails/all'
2
+ require 'active_merchant'
3
+ require 'acts_as_list'
4
+ require 'awesome_nested_set'
2
5
  require 'cancan'
3
- require 'state_machine'
4
- require 'paperclip'
5
6
  require 'kaminari'
6
- require 'awesome_nested_set'
7
- require 'acts_as_list'
8
- require 'active_merchant'
7
+ require 'mail'
8
+ require 'paperclip'
9
+ require 'paranoia'
9
10
  require 'ransack'
11
+ require 'state_machine'
10
12
 
11
13
  module Spree
12
14
 
@@ -0,0 +1,17 @@
1
+ module Spree
2
+ module ViewContext
3
+ def self.context=(context)
4
+ @context = context
5
+ end
6
+
7
+ def self.context
8
+ @context
9
+ end
10
+
11
+ def view_context
12
+ super.tap do |context|
13
+ Spree::ViewContext.context = context
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1 @@
1
+ Spree::BaseController.send(:include, Spree::ViewContext)
data/lib/spree/i18n.rb CHANGED
@@ -1,15 +1,36 @@
1
1
  require 'i18n'
2
2
  require 'active_support/core_ext/array/extract_options'
3
+ require 'spree/i18n/base'
3
4
 
4
5
  module Spree
5
6
  extend ActionView::Helpers::TranslationHelper
6
7
 
7
- # Add spree namespace and delegate to Rails TranslationHelper for some nice
8
- # extra functionality. e.g return reasonable strings for missing translations
9
- def self.t(*args)
10
- options = args.extract_options!
11
- options[:scope] = [*options[:scope]].unshift(:spree)
12
- args << options
13
- super(*args)
8
+ class << self
9
+ # Add spree namespace and delegate to Rails TranslationHelper for some nice
10
+ # extra functionality. e.g return reasonable strings for missing translations
11
+ def translate(*args)
12
+ @virtual_path = virtual_path
13
+
14
+ options = args.extract_options!
15
+ options[:scope] = [*options[:scope]].unshift(:spree)
16
+ args << options
17
+ super(*args)
18
+ end
19
+
20
+ alias_method :t, :translate
21
+
22
+ def context
23
+ Spree::ViewContext.context
24
+ end
25
+
26
+ def virtual_path
27
+ if context
28
+ path = context.instance_variable_get("@virtual_path")
29
+
30
+ if path
31
+ path.gsub(/spree/, '')
32
+ end
33
+ end
34
+ end
14
35
  end
15
36
  end
data/lib/spree/money.rb CHANGED
@@ -4,6 +4,8 @@ module Spree
4
4
  class Money
5
5
  attr_reader :money
6
6
 
7
+ delegate :cents, :to => :money
8
+
7
9
  def initialize(amount, options={})
8
10
  @money = ::Money.parse([amount, (options[:currency] || Spree::Config[:currency])].join)
9
11
  @options = {}
@@ -10,17 +10,6 @@ module Spree
10
10
  end
11
11
 
12
12
  module Request
13
- class BarAbility
14
- include CanCan::Ability
15
-
16
- def initialize(user)
17
- # allow dispatch to :admin, :index, and :edit on Spree::Order
18
- can [:admin, :edit, :index, :read], Spree::Order
19
- # allow dispatch to :index, :show, :create and :update shipments on the admin
20
- can [:admin, :manage, :read, :ship], Spree::Shipment
21
- end
22
- end
23
-
24
13
  class SuperAbility
25
14
  include CanCan::Ability
26
15
 
@@ -41,13 +30,15 @@ module Spree
41
30
  end
42
31
  end
43
32
 
44
- def stub_bar_authorization!
33
+ def custom_authorization!(&block)
34
+ ability = Class.new do
35
+ include CanCan::Ability
36
+ define_method(:initialize, block)
37
+ end
45
38
  after(:all) do
46
- ability = Spree::TestingSupport::AuthorizationHelpers::Request::BarAbility
47
39
  Spree::Ability.remove_ability(ability)
48
40
  end
49
41
  before(:all) do
50
- ability = Spree::TestingSupport::AuthorizationHelpers::Request::BarAbility
51
42
  Spree::Ability.register_ability(ability)
52
43
  end
53
44
  end
@@ -58,5 +49,5 @@ end
58
49
 
59
50
  RSpec.configure do |config|
60
51
  config.extend Spree::TestingSupport::AuthorizationHelpers::Controller, :type => :controller
61
- config.extend Spree::TestingSupport::AuthorizationHelpers::Request, :type => :request
52
+ config.extend Spree::TestingSupport::AuthorizationHelpers::Request, :type => :feature
62
53
  end
@@ -8,9 +8,7 @@ module CapybaraExt
8
8
  end
9
9
 
10
10
  def eventually_fill_in(field, options={})
11
- Capybara.wait_until do
12
- find_field field
13
- end
11
+ page.should have_css('#' + field)
14
12
  fill_in field, options
15
13
  end
16
14
 
@@ -27,9 +25,11 @@ module CapybaraExt
27
25
  end
28
26
 
29
27
  def select2_search(value, options)
30
- id = find_label_by_text(options[:from])
31
- options[:from] = "#s2id_#{id}"
32
- targetted_select2_search(value, options)
28
+ label = find_label_by_text(options[:from])
29
+ within label.first(:xpath,".//..") do
30
+ options[:from] = "##{find(".select2-container")["id"]}"
31
+ targetted_select2_search(value, options)
32
+ end
33
33
  end
34
34
 
35
35
  def targetted_select2_search(value, options)
@@ -39,11 +39,12 @@ module CapybaraExt
39
39
  end
40
40
 
41
41
  def select2(value, options)
42
- id = find_label_by_text(options[:from])
42
+ label = find_label_by_text(options[:from])
43
43
 
44
- # generate select2 id
45
- options[:from] = "#s2id_#{id}"
46
- targetted_select2(value, options)
44
+ within label.first(:xpath,".//..") do
45
+ options[:from] = "##{find(".select2-container")["id"]}"
46
+ targetted_select2(value, options)
47
+ end
47
48
  end
48
49
 
49
50
  def select2_no_label value, options={}
@@ -84,13 +85,21 @@ module CapybaraExt
84
85
  raise "Could not find label by text #{text}"
85
86
  end
86
87
 
87
- label ? label['for'] : text
88
+ label
88
89
  end
89
90
 
90
91
  def find_label(text)
91
92
  first(:xpath, "//label[text()[contains(.,'#{text}')]]")
92
93
  end
93
94
 
95
+ def wait_for_ajax
96
+ counter = 0
97
+ while page.execute_script("return $.active").to_i > 0
98
+ counter += 1
99
+ sleep(0.1)
100
+ raise "AJAX request took longer than 5 seconds." if counter >= 50
101
+ end
102
+ end
94
103
  end
95
104
 
96
105
  RSpec::Matchers.define :have_meta do |name, expected|
@@ -32,4 +32,17 @@ namespace :common do
32
32
  puts 'Skipping installation no generator to run...'
33
33
  end
34
34
  end
35
+
36
+ task :seed do |t, args|
37
+ puts "Seeding ..."
38
+ cmd = "bundle exec rake db:seed RAILS_ENV=test"
39
+
40
+ if RUBY_PLATFORM =~ /mswin/ #windows
41
+ cmd += " >nul"
42
+ else
43
+ cmd += " >/dev/null"
44
+ end
45
+
46
+ system(cmd)
47
+ end
35
48
  end
@@ -1,7 +1,7 @@
1
1
  FactoryGirl.define do
2
2
  factory :country, class: Spree::Country do
3
3
  iso_name 'UNITED STATES'
4
- name 'United States of Foo'
4
+ name 'United States of America'
5
5
  iso 'US'
6
6
  iso3 'USA'
7
7
  numcode 840
@@ -3,8 +3,6 @@ FactoryGirl.define do
3
3
  user
4
4
  bill_address
5
5
  completed_at nil
6
- bill_address_id nil
7
- ship_address_id nil
8
6
  email { user.email }
9
7
 
10
8
  factory :order_with_totals do
@@ -11,7 +11,7 @@ FactoryGirl.define do
11
11
 
12
12
  # authorize.net was moved to spree_gateway.
13
13
  # Leaving this factory in place with bogus in case anyone is using it.
14
- factory :authorize_net_payment_method, class: Spree::Gateway::BogusSimple do
14
+ factory :bogus_simple_payment_method, class: Spree::Gateway::BogusSimple do
15
15
  name 'Credit Card'
16
16
  environment 'test'
17
17
  end
@@ -7,34 +7,24 @@ FactoryGirl.define do
7
7
  sku 'ABC'
8
8
  available_on { 1.year.ago }
9
9
  deleted_at nil
10
+ shipping_category { |r| Spree::ShippingCategory.first || r.association(:shipping_category) }
10
11
 
11
12
  # ensure stock item will be created for this products master
12
13
  before(:create) { create(:stock_location) if Spree::StockLocation.count == 0 }
13
14
 
15
+ factory :custom_product do
16
+ name 'Custom Product'
17
+ price 17.99
18
+
19
+ tax_category { |r| Spree::TaxCategory.first || r.association(:tax_category) }
20
+ end
21
+
14
22
  factory :product do
15
23
  tax_category { |r| Spree::TaxCategory.first || r.association(:tax_category) }
16
- shipping_category { |r| Spree::ShippingCategory.first || r.association(:shipping_category) }
17
24
 
18
25
  factory :product_with_option_types do
19
26
  after(:create) { |product| create(:product_option_type, product: product) }
20
27
  end
21
28
  end
22
29
  end
23
-
24
- factory :custom_product, class: Spree::Product do
25
- name 'Custom Product'
26
- description { generate(:random_description) }
27
- price 17.99
28
- sku 'ABC'
29
- available_on { 1.year.ago }
30
- deleted_at nil
31
-
32
- tax_category { |r| Spree::TaxCategory.first || r.association(:tax_category) }
33
- shipping_category { |r| Spree::ShippingCategory.first || r.association(:shipping_category) }
34
-
35
- # association :taxons
36
-
37
- # ensure stock item will be created for this products master
38
- before(:create) { create(:stock_location) if Spree::StockLocation.count == 0 }
39
- end
40
30
  end
@@ -6,4 +6,8 @@ FactoryGirl.define do
6
6
  reason 'no particular reason'
7
7
  state 'received'
8
8
  end
9
+
10
+ factory :new_return_authorization, class: Spree::ReturnAuthorization do
11
+ association(:order, factory: :shipped_order)
12
+ end
9
13
  end
@@ -12,7 +12,7 @@ FactoryGirl.define do
12
12
  shipment.add_shipping_method(create(:shipping_method), true)
13
13
 
14
14
  shipment.order.line_items.each do |line_item|
15
- line_item.quantity.times { shipment.inventory_units.create(variant_id: line_item.variant) }
15
+ line_item.quantity.times { shipment.inventory_units.create(variant_id: line_item.variant_id) }
16
16
  end
17
17
  end
18
18
  end
@@ -1,7 +1,8 @@
1
1
  FactoryGirl.define do
2
2
  factory :stock_item, class: Spree::StockItem do
3
- variant
3
+ backorderable true
4
4
  stock_location
5
+ variant
5
6
 
6
7
  after(:create) { |object| object.adjust_count_on_hand(10) }
7
8
  end
@@ -6,9 +6,12 @@ FactoryGirl.define do
6
6
  zipcode '20500'
7
7
  phone '(202) 456-1111'
8
8
  active true
9
+ backorderable_default true
9
10
 
10
- state { |stock_location| stock_location.association(:state) }
11
- country { |stock_location| stock_location.association(:country) }
11
+ country { |stock_location| Spree::Country.first || stock_location.association(:country) }
12
+ state do |stock_location|
13
+ stock_location.country.states.first || stock_location.association(:state, :country => stock_location.country)
14
+ end
12
15
 
13
16
  factory :stock_location_with_items do
14
17
  after(:create) do |stock_location, evaluator|
@@ -4,7 +4,7 @@ FactoryGirl.define do
4
4
  factory :base_variant, class: Spree::Variant do
5
5
  price 19.99
6
6
  cost_price 17.00
7
- sku { generate(:random_string) }
7
+ sku { SecureRandom.hex }
8
8
  weight { generate(:random_float) }
9
9
  height { generate(:random_float) }
10
10
  width { generate(:random_float) }
@@ -5,7 +5,20 @@ class OrderWalkthrough
5
5
  FactoryGirl.create(:payment_method)
6
6
  end
7
7
 
8
- # A payment method must exist for an order to proceed through the Address state
8
+ # Need to create a valid zone too...
9
+ zone = FactoryGirl.create(:zone)
10
+ country = FactoryGirl.create(:country)
11
+ zone.members << Spree::ZoneMember.create(:zoneable => country)
12
+ country.states << FactoryGirl.create(:state, :country => country)
13
+
14
+ # A shipping method must exist for rates to be displayed on checkout page
15
+ unless Spree::ShippingMethod.exists?
16
+ FactoryGirl.create(:shipping_method).tap do |sm|
17
+ sm.calculator.preferred_amount = 10
18
+ sm.calculator.preferred_currency = Spree::Config[:currency]
19
+ sm.calculator.save
20
+ end
21
+ end
9
22
 
10
23
  order = Spree::Order.create!(:email => "spree@example.com")
11
24
  add_line_item!(order)
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: ET (Estonian; eesti, eesti keel)
4
+ */
5
+ (function ($) {
6
+ $.extend($.validator.messages, {
7
+ required: "See väli peab olema täidetud.",
8
+ maxlength: $.validator.format("Palun sisestage vähem kui {0} tähemärki."),
9
+ minlength: $.validator.format("Palun sisestage vähemalt {0} tähemärki."),
10
+ rangelength: $.validator.format("Palun sisestage väärtus vahemikus {0} kuni {1} tähemärki."),
11
+ email: "Palun sisestage korrektne e-maili aadress.",
12
+ url: "Palun sisestage korrektne URL.",
13
+ date: "Palun sisestage korrektne kuupäev.",
14
+ dateISO: "Palun sisestage korrektne kuupäev (YYYY-MM-DD).",
15
+ number: "Palun sisestage korrektne number.",
16
+ digits: "Palun sisestage ainult numbreid.",
17
+ equalTo: "Palun sisestage sama väärtus uuesti.",
18
+ range: $.validator.format("Palun sisestage väärtus vahemikus {0} kuni {1}."),
19
+ max: $.validator.format("Palun sisestage väärtus, mis on väiksem või võrdne arvuga {0}."),
20
+ min: $.validator.format("Palun sisestage väärtus, mis on suurem või võrdne arvuga {0}."),
21
+ creditcard: "Palun sisestage korrektne krediitkaardi number."
22
+ });
23
+ }(jQuery));