solidus_api 1.2.3 → 1.3.0.beta1

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.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/Rakefile +1 -1
  4. data/app/controllers/spree/api/addresses_controller.rb +3 -2
  5. data/app/controllers/spree/api/base_controller.rb +10 -15
  6. data/app/controllers/spree/api/checkouts_controller.rb +56 -55
  7. data/app/controllers/spree/api/classifications_controller.rb +4 -4
  8. data/app/controllers/spree/api/config_controller.rb +6 -1
  9. data/app/controllers/spree/api/credit_cards_controller.rb +11 -11
  10. data/app/controllers/spree/api/images_controller.rb +13 -13
  11. data/app/controllers/spree/api/inventory_units_controller.rb +4 -4
  12. data/app/controllers/spree/api/line_items_controller.rb +27 -23
  13. data/app/controllers/spree/api/option_types_controller.rb +6 -5
  14. data/app/controllers/spree/api/option_values_controller.rb +12 -12
  15. data/app/controllers/spree/api/orders_controller.rb +6 -17
  16. data/app/controllers/spree/api/payments_controller.rb +15 -17
  17. data/app/controllers/spree/api/product_properties_controller.rb +13 -14
  18. data/app/controllers/spree/api/products_controller.rb +31 -28
  19. data/app/controllers/spree/api/promotions_controller.rb +9 -8
  20. data/app/controllers/spree/api/properties_controller.rb +9 -10
  21. data/app/controllers/spree/api/resource_controller.rb +9 -1
  22. data/app/controllers/spree/api/shipments_controller.rb +18 -18
  23. data/app/controllers/spree/api/states_controller.rb +8 -7
  24. data/app/controllers/spree/api/stock_items_controller.rb +2 -1
  25. data/app/controllers/spree/api/stock_locations_controller.rb +1 -1
  26. data/app/controllers/spree/api/stores_controller.rb +0 -1
  27. data/app/controllers/spree/api/taxonomies_controller.rb +7 -5
  28. data/app/controllers/spree/api/taxons_controller.rb +20 -19
  29. data/app/controllers/spree/api/users_controller.rb +1 -4
  30. data/app/controllers/spree/api/variants_controller.rb +19 -18
  31. data/app/controllers/spree/api/zones_controller.rb +3 -4
  32. data/app/helpers/spree/api/api_helpers.rb +7 -6
  33. data/app/models/spree/api_configuration.rb +1 -1
  34. data/app/views/spree/api/config/show.v1.rabl +2 -1
  35. data/app/views/spree/api/products/show.v1.rabl +1 -1
  36. data/db/migrate/20100107141738_add_api_key_to_spree_users.rb +1 -1
  37. data/db/migrate/20120411123334_resize_api_key_field.rb +1 -1
  38. data/lib/spree/api/engine.rb +8 -8
  39. data/lib/spree/api/responders/rabl_template.rb +1 -1
  40. data/lib/spree/api/testing_support/caching.rb +4 -4
  41. data/script/rails +0 -1
  42. data/solidus_api.gemspec +3 -3
  43. data/spec/controllers/spree/api/addresses_controller_spec.rb +12 -13
  44. data/spec/controllers/spree/api/base_controller_spec.rb +10 -11
  45. data/spec/controllers/spree/api/checkouts_controller_spec.rb +38 -59
  46. data/spec/controllers/spree/api/config_controller_spec.rb +4 -2
  47. data/spec/controllers/spree/api/countries_controller_spec.rb +5 -5
  48. data/spec/controllers/spree/api/credit_cards_controller_spec.rb +5 -5
  49. data/spec/controllers/spree/api/images_controller_spec.rb +20 -18
  50. data/spec/controllers/spree/api/inventory_units_controller_spec.rb +11 -11
  51. data/spec/controllers/spree/api/line_items_controller_spec.rb +20 -19
  52. data/spec/controllers/spree/api/option_types_controller_spec.rb +23 -24
  53. data/spec/controllers/spree/api/option_values_controller_spec.rb +28 -29
  54. data/spec/controllers/spree/api/orders_controller_spec.rb +157 -179
  55. data/spec/controllers/spree/api/payments_controller_spec.rb +35 -45
  56. data/spec/controllers/spree/api/product_properties_controller_spec.rb +14 -15
  57. data/spec/controllers/spree/api/products_controller_spec.rb +64 -70
  58. data/spec/controllers/spree/api/promotion_application_spec.rb +4 -4
  59. data/spec/controllers/spree/api/promotions_controller_spec.rb +1 -1
  60. data/spec/controllers/spree/api/properties_controller_spec.rb +15 -15
  61. data/spec/controllers/spree/api/resource_controller_spec.rb +31 -2
  62. data/spec/controllers/spree/api/return_authorizations_controller_spec.rb +31 -31
  63. data/spec/controllers/spree/api/shipments_controller_spec.rb +6 -8
  64. data/spec/controllers/spree/api/states_controller_spec.rb +11 -12
  65. data/spec/controllers/spree/api/stock_items_controller_spec.rb +10 -7
  66. data/spec/controllers/spree/api/stock_locations_controller_spec.rb +3 -4
  67. data/spec/controllers/spree/api/stock_movements_controller_spec.rb +2 -3
  68. data/spec/controllers/spree/api/store_credit_events_controller_spec.rb +0 -2
  69. data/spec/controllers/spree/api/stores_controller_spec.rb +1 -2
  70. data/spec/controllers/spree/api/taxonomies_controller_spec.rb +17 -18
  71. data/spec/controllers/spree/api/taxons_controller_spec.rb +22 -24
  72. data/spec/controllers/spree/api/unauthenticated_products_controller_spec.rb +1 -2
  73. data/spec/controllers/spree/api/users_controller_spec.rb +13 -15
  74. data/spec/controllers/spree/api/variants_controller_spec.rb +42 -37
  75. data/spec/controllers/spree/api/zones_controller_spec.rb +18 -18
  76. data/spec/features/checkout_spec.rb +2 -2
  77. data/spec/models/spree/legacy_user_spec.rb +5 -5
  78. data/spec/requests/api/address_books_spec.rb +10 -11
  79. data/spec/requests/rabl_cache_spec.rb +7 -7
  80. data/spec/requests/ransackable_attributes_spec.rb +5 -7
  81. data/spec/shared_examples/protect_product_actions.rb +3 -4
  82. data/spec/spec_helper.rb +8 -4
  83. data/spec/support/controller_hacks.rb +5 -5
  84. data/spec/support/have_attributes_matcher.rb +0 -4
  85. data/spec/test_views/spree/api/widgets/show.v1.rabl +1 -1
  86. metadata +9 -10
  87. data/app/models/spree/option_value_decorator.rb +0 -9
@@ -37,10 +37,10 @@ module Spree
37
37
  :variant_property_attributes
38
38
  ]
39
39
 
40
- mattr_reader *ATTRIBUTES
40
+ mattr_reader(*ATTRIBUTES)
41
41
 
42
42
  def required_fields_for(model)
43
- required_fields = model._validators.select do |field, validations|
43
+ required_fields = model._validators.select do |_field, validations|
44
44
  validations.any? { |v| v.is_a?(ActiveModel::Validations::PresenceValidator) }
45
45
  end.map(&:first) # get fields that are invalid
46
46
  # Permalinks presence is validated, but are really automatically generated
@@ -88,7 +88,8 @@ module Spree
88
88
  :display_additional_tax_total, :tax_total, :currency,
89
89
  :covered_by_store_credit, :display_total_applicable_store_credit,
90
90
  :order_total_after_store_credit, :display_order_total_after_store_credit,
91
- :total_applicable_store_credit, :display_total_available_store_credit, :display_store_credit_remaining_after_capture
91
+ :total_applicable_store_credit, :display_total_available_store_credit,
92
+ :display_store_credit_remaining_after_capture, :canceler_id
92
93
 
93
94
  ]
94
95
 
@@ -104,7 +105,7 @@ module Spree
104
105
 
105
106
  @@payment_method_attributes = [:id, :name, :description]
106
107
 
107
- @@shipment_attributes = [:id, :tracking, :number, :cost, :shipped_at, :state]
108
+ @@shipment_attributes = [:id, :tracking, :tracking_url, :number, :cost, :shipped_at, :state]
108
109
 
109
110
  @@taxonomy_attributes = [:id, :name]
110
111
 
@@ -135,11 +136,11 @@ module Spree
135
136
  @@adjustment_attributes = [
136
137
  :id, :source_type, :source_id, :adjustable_type, :adjustable_id,
137
138
  :originator_type, :originator_id, :amount, :label, :promotion_code,
138
- :locked, :eligible, :created_at, :updated_at
139
+ :locked, :eligible, :created_at, :updated_at
139
140
  ]
140
141
 
141
142
  @@creditcard_attributes = [
142
- :id, :month, :year, :cc_type, :last_digits, :name,
143
+ :id, :month, :year, :cc_type, :last_digits, :name
143
144
  ]
144
145
 
145
146
  @@payment_source_attributes = [
@@ -1,5 +1,5 @@
1
1
  module Spree
2
2
  class ApiConfiguration < Preferences::Configuration
3
- preference :requires_authentication, :boolean, :default => true
3
+ preference :requires_authentication, :boolean, default: true
4
4
  end
5
5
  end
@@ -1,2 +1,3 @@
1
1
  object false
2
- node(:default_country_id) { Spree::Config[:default_country_id] }
2
+ node(:default_country_id) { Spree::Country.default.id }
3
+ node(:default_country_iso) { Spree::Config[:default_country_iso] }
@@ -1,5 +1,5 @@
1
1
  object @product
2
- cache [I18n.locale, @current_user_roles.include?('admin'), current_currency, root_object]
2
+ cache [I18n.locale, @current_user_roles.include?('admin'), current_pricing_options, root_object]
3
3
 
4
4
  attributes *product_attributes
5
5
 
@@ -1,7 +1,7 @@
1
1
  class AddApiKeyToSpreeUsers < ActiveRecord::Migration
2
2
  def change
3
3
  unless defined?(User)
4
- add_column :spree_users, :api_key, :string, :limit => 40
4
+ add_column :spree_users, :api_key, :string, limit: 40
5
5
  end
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  class ResizeApiKeyField < ActiveRecord::Migration
2
2
  def change
3
3
  unless defined?(User)
4
- change_column :spree_users, :api_key, :string, :limit => 48
4
+ change_column :spree_users, :api_key, :string, limit: 48
5
5
  end
6
6
  end
7
7
  end
@@ -16,19 +16,19 @@ module Spree
16
16
  config.json_engine = ActiveSupport::JSON
17
17
  end
18
18
 
19
- config.view_versions = [1]
20
- config.view_version_extraction_strategy = :http_header
21
-
22
- initializer "spree.api.environment", :before => :load_config_initializers do |app|
19
+ initializer "spree.api.environment", before: :load_config_initializers do |_app|
23
20
  Spree::Api::Config = Spree::ApiConfiguration.new
24
21
  end
25
22
 
26
- def self.activate
27
- Dir.glob(File.join(File.dirname(__FILE__), "../../../app/**/*_decorator*.rb")) do |c|
28
- Rails.configuration.cache_classes ? require(c) : load(c)
23
+ initializer "spree.api.versioncake" do |_app|
24
+ VersionCake.setup do |config|
25
+ config.resources do |r|
26
+ r.resource %r{.*}, [], [], [1]
27
+ end
28
+ config.missing_version = 1
29
+ config.extraction_strategy = :http_header
29
30
  end
30
31
  end
31
- config.to_prepare &method(:activate).to_proc
32
32
 
33
33
  def self.root
34
34
  @root ||= Pathname.new(File.expand_path('../../../../', __FILE__))
@@ -4,7 +4,7 @@ module Spree
4
4
  module RablTemplate
5
5
  def to_format
6
6
  if template
7
- render template, :status => options[:status] || 200
7
+ render template, status: options[:status] || 200
8
8
  else
9
9
  super
10
10
  end
@@ -1,10 +1,10 @@
1
1
  RSpec.configure do |config|
2
- config.before(:each, :caching => true) do
2
+ config.before(:each, caching: true) do
3
3
  ActionController::Base.perform_caching = true
4
4
  end
5
-
6
- config.after(:each, :caching => true) do
5
+
6
+ config.after(:each, caching: true) do
7
7
  ActionController::Base.perform_caching = false
8
8
  Rails.cache.clear
9
9
  end
10
- end
10
+ end
data/script/rails CHANGED
@@ -6,4 +6,3 @@ ENGINE_PATH = File.expand_path('../../lib/spree/api/engine', __FILE__)
6
6
 
7
7
  require 'rails/all'
8
8
  require 'rails/engine/commands'
9
-
data/solidus_api.gemspec CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.email = 'contact@solidus.io'
7
7
  gem.homepage = 'http://solidus.io/'
8
8
 
9
- gem.summary = %q{REST API for the Solidus e-commerce framework.}
9
+ gem.summary = 'REST API for the Solidus e-commerce framework.'
10
10
  gem.description = gem.summary
11
11
 
12
12
  gem.files = `git ls-files`.split($\)
@@ -14,9 +14,9 @@ Gem::Specification.new do |gem|
14
14
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
15
15
  gem.name = "solidus_api"
16
16
  gem.require_paths = ["lib"]
17
- gem.version = Spree.solidus_version
17
+ gem.version = Spree.solidus_version
18
18
 
19
19
  gem.add_dependency 'solidus_core', gem.version
20
20
  gem.add_dependency 'rabl', ['>= 0.9.4.pre1', '< 0.12.0']
21
- gem.add_dependency 'versioncake', '~> 2.3.1'
21
+ gem.add_dependency 'versioncake', '~> 3.0'
22
22
  end
@@ -1,37 +1,36 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Api::AddressesController, :type => :controller do
4
+ describe Api::AddressesController, type: :controller do
5
5
  render_views
6
6
 
7
7
  before do
8
8
  stub_authentication!
9
9
  @address = create(:address)
10
- @order = create(:order, :bill_address => @address)
10
+ @order = create(:order, bill_address: @address)
11
11
  end
12
12
 
13
13
  context "with order" do
14
14
  before do
15
- allow_any_instance_of(Order).to receive_messages :user => current_api_user
15
+ allow_any_instance_of(Order).to receive_messages user: current_api_user
16
16
  end
17
17
 
18
18
  context "with their own address" do
19
-
20
19
  it "gets an address" do
21
- api_get :show, :id => @address.id, :order_id => @order.number
20
+ api_get :show, id: @address.id, order_id: @order.number
22
21
  expect(json_response['address1']).to eq @address.address1
23
22
  end
24
23
 
25
24
  it "update replaces the readonly Address associated to the Order" do
26
- api_put :update, :id => @address.id, :order_id => @order.number,
27
- :address => { :address1 => "123 Test Lane" }
25
+ api_put :update, id: @address.id, order_id: @order.number,
26
+ address: { address1: "123 Test Lane" }
28
27
  expect(Order.find(@order.id).bill_address_id).not_to eq @address.id
29
28
  expect(json_response['address1']).to eq '123 Test Lane'
30
29
  end
31
30
 
32
31
  it "receives the errors object if address is invalid" do
33
- api_put :update, :id => @address.id, :order_id => @order.number,
34
- :address => { :address1 => "" }
32
+ api_put :update, id: @address.id, order_id: @order.number,
33
+ address: { address1: "" }
35
34
 
36
35
  expect(json_response['error']).not_to be_nil
37
36
  expect(json_response['errors']).not_to be_nil
@@ -40,8 +39,8 @@ module Spree
40
39
  end
41
40
 
42
41
  it "receives the errors object if address is invalid" do
43
- api_put :update, :id => @address.id, :order_id => @order.number,
44
- :address => { :address1 => "" }
42
+ api_put :update, id: @address.id, order_id: @order.number,
43
+ address: { address1: "" }
45
44
 
46
45
  expect(json_response['error']).not_to be_nil
47
46
  expect(json_response['errors']).not_to be_nil
@@ -56,12 +55,12 @@ module Spree
56
55
  end
57
56
 
58
57
  it "cannot retrieve address information" do
59
- api_get :show, :id => @address.id, :order_id => @order.number
58
+ api_get :show, id: @address.id, order_id: @order.number
60
59
  assert_unauthorized!
61
60
  end
62
61
 
63
62
  it "cannot update address information" do
64
- api_get :update, :id => @address.id, :order_id => @order.number
63
+ api_get :update, id: @address.id, order_id: @order.number
65
64
  assert_unauthorized!
66
65
  end
67
66
  end
@@ -3,13 +3,13 @@ require 'spec_helper'
3
3
  class FakesController < Spree::Api::BaseController
4
4
  end
5
5
 
6
- describe Spree::Api::BaseController, :type => :controller do
6
+ describe Spree::Api::BaseController, type: :controller do
7
7
  render_views
8
8
  controller(Spree::Api::BaseController) do
9
9
  rescue_from Spree::Order::InsufficientStock, with: :insufficient_stock_error
10
10
 
11
11
  def index
12
- render :text => { "products" => [] }.to_json
12
+ render text: { "products" => [] }.to_json
13
13
  end
14
14
  end
15
15
 
@@ -57,7 +57,7 @@ describe Spree::Api::BaseController, :type => :controller do
57
57
  end
58
58
 
59
59
  it "using an invalid token param" do
60
- get :index, :token => "fake_key"
60
+ get :index, token: "fake_key"
61
61
  expect(json_response).to eq({ "error" => "Invalid API key (fake_key) specified." })
62
62
  end
63
63
  end
@@ -66,7 +66,7 @@ describe Spree::Api::BaseController, :type => :controller do
66
66
  expect(subject).to receive(:authenticate_user).and_return(true)
67
67
  expect(subject).to receive(:load_user_roles).and_return(true)
68
68
  expect(subject).to receive(:index).and_raise("no joy")
69
- get :index, :token => "fake_key"
69
+ get :index, token: "fake_key"
70
70
  expect(json_response).to eq({ "exception" => "no joy" })
71
71
  end
72
72
 
@@ -75,7 +75,7 @@ describe Spree::Api::BaseController, :type => :controller do
75
75
  expect(subject).to receive(:load_user_roles).and_return(true)
76
76
  expect(subject).to receive(:index).and_raise(Exception.new("no joy"))
77
77
  expect {
78
- get :index, :token => "fake_key"
78
+ get :index, token: "fake_key"
79
79
  }.to raise_error(Exception, "no joy")
80
80
  end
81
81
 
@@ -93,7 +93,7 @@ describe Spree::Api::BaseController, :type => :controller do
93
93
  end
94
94
 
95
95
  # What would be placed in config/initializers/spree.rb
96
- Spree::Api::BaseController.error_notifier = Proc.new do |e, controller|
96
+ Spree::Api::BaseController.error_notifier = proc do |e, controller|
97
97
  MockHoneybadger.notify_or_ignore(e, rack_env: controller.request.env)
98
98
  end
99
99
 
@@ -101,7 +101,7 @@ describe Spree::Api::BaseController, :type => :controller do
101
101
  # Fake HB alert class
102
102
  class MockHoneybadger
103
103
  # https://github.com/honeybadger-io/honeybadger-ruby/blob/master/lib/honeybadger.rb#L136
104
- def self.notify_or_ignore(exception, opts = {})
104
+ def self.notify_or_ignore(_exception, _opts = {})
105
105
  end
106
106
  end
107
107
 
@@ -125,7 +125,7 @@ describe Spree::Api::BaseController, :type => :controller do
125
125
  before do
126
126
  expect(subject).to receive(:authenticate_user).and_return(true)
127
127
  expect(subject).to receive(:index).and_raise(Spree::Order::InsufficientStock)
128
- get :index, :token => "fake_key"
128
+ get :index, token: "fake_key"
129
129
  end
130
130
 
131
131
  it "should return a 422" do
@@ -134,7 +134,7 @@ describe Spree::Api::BaseController, :type => :controller do
134
134
 
135
135
  it "returns an error message" do
136
136
  expect(json_response).to eq(
137
- {"errors" => ["Quantity is not available for items in your order"], "type" => "insufficient_stock"}
137
+ { "errors" => ["Quantity is not available for items in your order"], "type" => "insufficient_stock" }
138
138
  )
139
139
  end
140
140
  end
@@ -146,7 +146,7 @@ describe Spree::Api::BaseController, :type => :controller do
146
146
  around_filter :lock_order
147
147
 
148
148
  def index
149
- render :text => { "products" => [] }.to_json
149
+ render text: { "products" => [] }.to_json
150
150
  end
151
151
  end
152
152
 
@@ -168,5 +168,4 @@ describe Spree::Api::BaseController, :type => :controller do
168
168
  end
169
169
  end
170
170
  end
171
-
172
171
  end
@@ -45,7 +45,7 @@ module Spree
45
45
  expect(order.state).to eq "cart"
46
46
  expect(order.email).not_to be_nil
47
47
  request.headers["X-Spree-Order-Token"] = order.guest_token
48
- api_put :update, :id => order.to_param
48
+ api_put :update, id: order.to_param
49
49
  expect(order.reload.state).to eq "address"
50
50
  end
51
51
 
@@ -136,7 +136,7 @@ module Spree
136
136
 
137
137
  it "can update shipping method and transition from delivery to payment" do
138
138
  order.update_column(:state, "delivery")
139
- shipment = create(:shipment, order: order)
139
+ shipment = create(:shipment, order: order, address: order.ship_address)
140
140
  shipment.refresh_rates
141
141
  shipping_rate = shipment.shipping_rates.where(selected: false).first
142
142
  api_put :update, id: order.to_param, order_token: order.guest_token,
@@ -163,23 +163,10 @@ module Spree
163
163
  expect(response.status).to eq(200)
164
164
  end
165
165
 
166
- context "with disallowed payment method" do
167
- it "returns not found" do
168
- order.update_column(:state, "payment")
169
- allow_any_instance_of(Spree::Gateway::Bogus).to receive(:source_required?).and_return(false)
170
- @payment_method.update!(display_on: "back_end")
171
- expect {
172
- api_put :update, id: order.to_param, order_token: order.guest_token, order: { payments_attributes: [{ payment_method_id: @payment_method.id }] }
173
- }.not_to change { Spree::Payment.count }
174
- expect(response.status).to eq(404)
175
- end
176
- end
177
-
178
-
179
166
  it "returns errors when source is required and missing" do
180
167
  order.update_column(:state, "payment")
181
- api_put :update, :id => order.to_param, :order_token => order.guest_token,
182
- :order => { :payments_attributes => [{ :payment_method_id => @payment_method.id }] }
168
+ api_put :update, id: order.to_param, order_token: order.guest_token,
169
+ order: { payments_attributes: [{ payment_method_id: @payment_method.id }] }
183
170
  expect(response.status).to eq(422)
184
171
  source_errors = json_response['errors']['payments.source']
185
172
  expect(source_errors).to include("can't be blank")
@@ -194,10 +181,10 @@ module Spree
194
181
  payments_attributes: [
195
182
  {
196
183
  payment_method_id: @payment_method.id.to_s,
197
- source_attributes: attributes_for(:credit_card),
198
- },
199
- ],
200
- },
184
+ source_attributes: attributes_for(:credit_card)
185
+ }
186
+ ]
187
+ }
201
188
  }
202
189
  end
203
190
 
@@ -221,10 +208,10 @@ module Spree
221
208
  payments_attributes: [
222
209
  {
223
210
  payment_method_id: @payment_method.id.to_s,
224
- source_attributes: attributes_for(:credit_card),
225
- },
226
- ],
227
- },
211
+ source_attributes: attributes_for(:credit_card)
212
+ }
213
+ ]
214
+ }
228
215
  }
229
216
  end
230
217
 
@@ -242,10 +229,10 @@ module Spree
242
229
  order_token: order.guest_token,
243
230
  order: {
244
231
  payments_attributes: [
245
- { payment_method_id: @payment_method.id.to_s },
246
- ],
232
+ { payment_method_id: @payment_method.id.to_s }
233
+ ]
247
234
  },
248
- payment_source: { @payment_method.id.to_s => attributes_for(:credit_card) },
235
+ payment_source: { @payment_method.id.to_s => attributes_for(:credit_card) }
249
236
  }
250
237
  end
251
238
 
@@ -273,10 +260,10 @@ module Spree
273
260
  payments_attributes: [
274
261
  {
275
262
  payment_method_id: @payment_method.id.to_s,
276
- source_attributes: {name: "Spree"},
277
- },
278
- ],
279
- },
263
+ source_attributes: { name: "Spree" }
264
+ }
265
+ ]
266
+ }
280
267
  }
281
268
  end
282
269
 
@@ -285,7 +272,7 @@ module Spree
285
272
 
286
273
  expect(response.status).to eq(422)
287
274
  cc_errors = json_response['errors']['payments.Credit Card']
288
- expect(cc_errors).to include("Number can't be blank")
275
+ expect(cc_errors).to include("Card Number can't be blank")
289
276
  expect(cc_errors).to include("Month is not a number")
290
277
  expect(cc_errors).to include("Year is not a number")
291
278
  expect(cc_errors).to include("Verification Value can't be blank")
@@ -298,12 +285,12 @@ module Spree
298
285
  order_token: order.guest_token,
299
286
  order: {
300
287
  payments_attributes: [
301
- {payment_method_id: @payment_method.id.to_s},
302
- ],
288
+ { payment_method_id: @payment_method.id.to_s }
289
+ ]
303
290
  },
304
291
  payment_source: {
305
- @payment_method.id.to_s => {name: "Spree"},
306
- },
292
+ @payment_method.id.to_s => { name: "Spree" }
293
+ }
307
294
  }
308
295
  end
309
296
 
@@ -314,7 +301,7 @@ module Spree
314
301
 
315
302
  expect(response.status).to eq(422)
316
303
  cc_errors = json_response['errors']['payments.Credit Card']
317
- expect(cc_errors).to include("Number can't be blank")
304
+ expect(cc_errors).to include("Card Number can't be blank")
318
305
  expect(cc_errors).to include("Month is not a number")
319
306
  expect(cc_errors).to include("Year is not a number")
320
307
  expect(cc_errors).to include("Verification Value can't be blank")
@@ -336,11 +323,11 @@ module Spree
336
323
  {
337
324
  source_attributes: {
338
325
  existing_card_id: credit_card.id.to_s,
339
- verification_value: '456',
326
+ verification_value: '456'
340
327
  }
341
- },
342
- ],
343
- },
328
+ }
329
+ ]
330
+ }
344
331
  }
345
332
  end
346
333
 
@@ -368,9 +355,9 @@ module Spree
368
355
  id: order.to_param,
369
356
  order_token: order.guest_token,
370
357
  order: {
371
- existing_card: credit_card.id.to_s,
358
+ existing_card: credit_card.id.to_s
372
359
  },
373
- cvc_confirm: '456',
360
+ cvc_confirm: '456'
374
361
  }
375
362
  end
376
363
 
@@ -392,14 +379,6 @@ module Spree
392
379
  end
393
380
  end
394
381
 
395
- it "can transition from confirm to complete" do
396
- order.update_columns(completed_at: Time.current, state: 'complete')
397
- allow_any_instance_of(Spree::Order).to receive_messages(payment_required?: false)
398
- api_put :update, id: order.to_param, order_token: order.guest_token
399
- expect(json_response['state']).to eq('complete')
400
- expect(response.status).to eq(200)
401
- end
402
-
403
382
  it "returns the order if the order is already complete" do
404
383
  order.update_columns(completed_at: Time.current, state: 'complete')
405
384
  api_put :update, id: order.to_param, order_token: order.guest_token
@@ -438,7 +417,7 @@ module Spree
438
417
  order.update_column(:state, "payment")
439
418
  expect(PromotionHandler::Coupon).to receive(:new).with(order).and_call_original
440
419
  expect_any_instance_of(PromotionHandler::Coupon).to receive(:apply).and_return({ coupon_applied?: true })
441
- api_put :update, :id => order.to_param, order_token: order.guest_token, order: { coupon_code: "foobar" }
420
+ api_put :update, id: order.to_param, order_token: order.guest_token, order: { coupon_code: "foobar" }
442
421
  end
443
422
  end
444
423
 
@@ -466,7 +445,7 @@ module Spree
466
445
  email: nil
467
446
  )
468
447
 
469
- api_put :next, :id => order.to_param, :order_token => order.guest_token
448
+ api_put :next, id: order.to_param, order_token: order.guest_token
470
449
  expect(response.status).to eq(422)
471
450
  expect(json_response['error']).to match(/could not be transitioned/)
472
451
  end
@@ -475,7 +454,7 @@ module Spree
475
454
  # NOTE: Temporarily making "next" behave just like "complete" when order is in confirm state
476
455
  # Using "next" this way is deprecated.
477
456
  [:next, :complete].each do |action|
478
- context "#{action}" do
457
+ context action.to_s do
479
458
  context "with order in confirm state" do
480
459
  subject do
481
460
  if action == :next
@@ -487,7 +466,7 @@ module Spree
487
466
  end
488
467
  end
489
468
 
490
- let(:params) { {id: order.to_param, order_token: order.guest_token} }
469
+ let(:params) { { id: order.to_param, order_token: order.guest_token } }
491
470
  let(:order) { create(:order_with_line_items) }
492
471
 
493
472
  before do
@@ -495,7 +474,7 @@ module Spree
495
474
  end
496
475
 
497
476
  it "can transition from confirm to complete" do
498
- allow_any_instance_of(Spree::Order).to receive_messages(:payment_required? => false)
477
+ allow_any_instance_of(Spree::Order).to receive_messages(payment_required?: false)
499
478
  subject
500
479
  expect(json_response['state']).to eq('complete')
501
480
  expect(response.status).to eq(200)
@@ -514,7 +493,7 @@ module Spree
514
493
  # api_put :complete, :id => order.to_param, :order_token => order.token, :expected_total => order.total + 1
515
494
  subject
516
495
  expect(response.status).to eq(400)
517
- expect(json_response['errors']['expected_total']).to include(Spree.t(:expected_total_mismatch, :scope => 'api.order'))
496
+ expect(json_response['errors']['expected_total']).to include(Spree.t(:expected_total_mismatch, scope: 'api.order'))
518
497
  end
519
498
  end
520
499
  end
@@ -524,7 +503,7 @@ module Spree
524
503
  context "PUT 'advance'" do
525
504
  let!(:order) { create(:order_with_line_items) }
526
505
 
527
- it 'continues to advance advances an order while it can move forward' do
506
+ it 'continues to advance an order while it can move forward' do
528
507
  expect_any_instance_of(Spree::Order).to receive(:next).exactly(3).times.and_return(true, true, false)
529
508
  api_put :advance, id: order.to_param, order_token: order.guest_token
530
509
  end
@@ -1,7 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Api::ConfigController, :type => :controller do
4
+ describe Api::ConfigController, type: :controller do
5
+ let!(:default_country) { create :country, iso: "US"}
5
6
  render_views
6
7
 
7
8
  before do
@@ -17,7 +18,8 @@ module Spree
17
18
  it "returns some configuration settings" do
18
19
  api_get :show
19
20
  expect(response).to be_success
20
- expect(json_response["default_country_id"]).to eq(Spree::Config[:default_country_id])
21
+ expect(json_response["default_country_iso"]).to eq("US")
22
+ expect(json_response["default_country_id"]).to eq(default_country.id)
21
23
  end
22
24
  end
23
25
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Api::CountriesController, :type => :controller do
4
+ describe Api::CountriesController, type: :controller do
5
5
  render_views
6
6
 
7
7
  before do
@@ -16,7 +16,7 @@ module Spree
16
16
  end
17
17
 
18
18
  context "with two countries" do
19
- before { @zambia = create(:country, :name => "Zambia") }
19
+ before { @zambia = create(:country, name: "Zambia") }
20
20
 
21
21
  it "can view all countries" do
22
22
  api_get :index
@@ -26,13 +26,13 @@ module Spree
26
26
  end
27
27
 
28
28
  it 'can query the results through a paramter' do
29
- api_get :index, :q => { :name_cont => 'zam' }
29
+ api_get :index, q: { name_cont: 'zam' }
30
30
  expect(json_response['count']).to eq(1)
31
31
  expect(json_response['countries'].first['name']).to eq @zambia.name
32
32
  end
33
33
 
34
34
  it 'can control the page size through a parameter' do
35
- api_get :index, :per_page => 1
35
+ api_get :index, per_page: 1
36
36
  expect(json_response['count']).to eq(1)
37
37
  expect(json_response['current_page']).to eq(1)
38
38
  expect(json_response['pages']).to eq(2)
@@ -40,7 +40,7 @@ module Spree
40
40
  end
41
41
 
42
42
  it "includes states" do
43
- api_get :show, :id => @country.id
43
+ api_get :show, id: @country.id
44
44
  states = json_response['states']
45
45
  expect(states.first['name']).to eq @state.name
46
46
  end