solidus_api 1.4.2 → 2.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_api might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 487255d3c7c9a28a0e6b9ed4cc984f1ff0a0dc88
4
- data.tar.gz: 94190cac19ab74bb6f10c2e588de1ebbbb75d9b5
3
+ metadata.gz: 6bdb449ae51b17c27435793ebdc4107e57044fcd
4
+ data.tar.gz: 5912114dc2bf082204c7a0ae720caeb892adbf8a
5
5
  SHA512:
6
- metadata.gz: 0435e1961c6ee011b4f6482f5848c452b69f6f43e54fb2c887e80f5c81dc9ccbae61eb9d581b824697736b20196e3945939543dc59275c785dad150c283556ff
7
- data.tar.gz: 5dc3ba08436b3cc53028699bb81a9c8627d04427f18b0e5ee1d343e6e099b8c70fc8c075f877bfb2b8c42d4dfcdce6c46ee9a1b7b812285f3e556d48033457e2
6
+ metadata.gz: a72d35bef9dd506a1076c15d6ec5e8488983c47adc2dd453deff71e0766e93ef9d48dbe09e182a7d133e84d6db46d905d3e73940617c83cead9017838662820b
7
+ data.tar.gz: 8f78217ba3ac3d82313de4ddd920f92a91a2715572952a2bad074f25c95c473ef2bb62931c8a016d556908b0b8cbd8258a579e839cd6f1d01142c75c670572d4
@@ -73,8 +73,7 @@ module Spree
73
73
 
74
74
  error_notifier.call(exception, self) if error_notifier
75
75
 
76
- render text: { exception: exception.message }.to_json,
77
- status: 422
76
+ render json: { exception: exception.message }, status: 422
78
77
  end
79
78
 
80
79
  def gateway_error(exception)
@@ -149,7 +148,7 @@ module Spree
149
148
  def lock_order
150
149
  OrderMutex.with_lock!(@order) { yield }
151
150
  rescue Spree::OrderMutex::LockFailed => e
152
- render text: e.message, status: 409
151
+ render plain: e.message, status: 409
153
152
  end
154
153
 
155
154
  def insufficient_stock_error(exception)
@@ -34,7 +34,7 @@ module Spree
34
34
 
35
35
  unless inventory_unit.respond_to?(can_event) &&
36
36
  inventory_unit.send(can_event)
37
- render text: { exception: "cannot transition to #{@event}" }.to_json,
37
+ render json: { exception: "cannot transition to #{@event}" },
38
38
  status: 200
39
39
  false
40
40
  end
@@ -18,7 +18,7 @@ module Spree
18
18
  params[:line_item][:quantity] || 1,
19
19
  {
20
20
  stock_location_quantities: params[:line_item][:stock_location_quantities]
21
- }.merge(line_item_params[:options] || {})
21
+ }.merge(line_item_params[:options].to_h || {})
22
22
  )
23
23
 
24
24
  if @line_item.errors.empty?
@@ -37,7 +37,7 @@ module Spree
37
37
  def destroy
38
38
  @option_type = Spree::OptionType.accessible_by(current_ability, :destroy).find(params[:id])
39
39
  @option_type.destroy
40
- render text: nil, status: 204
40
+ render plain: nil, status: 204
41
41
  end
42
42
 
43
43
  private
@@ -37,7 +37,7 @@ module Spree
37
37
  def destroy
38
38
  @option_value = scope.accessible_by(current_ability, :destroy).find(params[:id])
39
39
  @option_value.destroy
40
- render text: nil, status: 204
40
+ render plain: nil, status: 204
41
41
  end
42
42
 
43
43
  private
@@ -27,24 +27,14 @@ module Spree
27
27
 
28
28
  def create
29
29
  authorize! :create, Order
30
-
31
- if can?(:admin, Order)
32
- @order = Spree::Core::Importer::Order.import(determine_order_user, order_params)
33
- respond_with(@order, default_template: :show, status: 201)
34
- else
35
- @order = Spree::Order.create!(user: current_api_user, store: current_store)
36
- if OrderUpdateAttributes.new(@order, order_params).apply
37
- respond_with(@order, default_template: :show, status: 201)
38
- else
39
- invalid_resource!(@order)
40
- end
41
- end
30
+ @order = Spree::Core::Importer::Order.import(determine_order_user, order_params)
31
+ respond_with(@order, default_template: :show, status: 201)
42
32
  end
43
33
 
44
34
  def empty
45
35
  authorize! :update, @order, order_token
46
36
  @order.empty!
47
- render text: nil, status: 204
37
+ render plain: nil, status: 204
48
38
  end
49
39
 
50
40
  def index
@@ -16,7 +16,6 @@ module Spree
16
16
  end
17
17
 
18
18
  def create
19
- @order.validate_payments_attributes(payment_params)
20
19
  @payment = PaymentCreate.new(@order, payment_params).build
21
20
  if @payment.save
22
21
  respond_with(@payment, status: 201, default_template: :show)
@@ -0,0 +1,12 @@
1
+ # As of 2016-08-17 rabl is broken on rails 5.
2
+ # This prevents errors when caching is enabled
3
+ if Rabl::VERSION == "0.13.0"
4
+ # Remove the broken redefinition of digest
5
+ Rabl::Digestor.class_eval do
6
+ class << self
7
+ remove_method :digest
8
+ end
9
+ end
10
+ else
11
+ raise "Remove this monkey patch"
12
+ end
@@ -1,4 +1,4 @@
1
- class AddApiKeyToSpreeUsers < ActiveRecord::Migration
1
+ class AddApiKeyToSpreeUsers < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  unless defined?(User)
4
4
  add_column :spree_users, :api_key, :string, limit: 40
@@ -1,4 +1,4 @@
1
- class ResizeApiKeyField < ActiveRecord::Migration
1
+ class ResizeApiKeyField < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  unless defined?(User)
4
4
  change_column :spree_users, :api_key, :string, limit: 48
@@ -1,4 +1,4 @@
1
- class RenameApiKeyToSpreeApiKey < ActiveRecord::Migration
1
+ class RenameApiKeyToSpreeApiKey < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  unless defined?(User)
4
4
  rename_column :spree_users, :api_key, :spree_api_key
@@ -1,4 +1,4 @@
1
- class AddIndexToUserSpreeApiKey < ActiveRecord::Migration
1
+ class AddIndexToUserSpreeApiKey < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  unless defined?(User)
4
4
  add_index :spree_users, :spree_api_key
data/solidus_api.gemspec CHANGED
@@ -17,6 +17,6 @@ Gem::Specification.new do |gem|
17
17
  gem.version = Spree.solidus_version
18
18
 
19
19
  gem.add_dependency 'solidus_core', gem.version
20
- gem.add_dependency 'rabl', ['>= 0.9.4.pre1', '< 0.12.0']
20
+ gem.add_dependency 'rabl', '0.13.0' # FIXME: update for proper rails 5 support
21
21
  gem.add_dependency 'versioncake', '~> 3.0'
22
22
  end
@@ -9,7 +9,7 @@ describe Spree::Api::BaseController, type: :controller 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 json: { "products" => [] }
13
13
  end
14
14
  end
15
15
 
@@ -51,13 +51,13 @@ describe Spree::Api::BaseController, type: :controller do
51
51
 
52
52
  it "with an invalid API key" do
53
53
  request.headers["X-Spree-Token"] = "fake_key"
54
- get :index, {}
54
+ get :index, params: {}
55
55
  expect(json_response).to eq({ "error" => "Invalid API key (fake_key) specified." })
56
56
  expect(response.status).to eq(401)
57
57
  end
58
58
 
59
59
  it "using an invalid token param" do
60
- get :index, token: "fake_key"
60
+ get :index, params: { token: "fake_key" }
61
61
  expect(json_response).to eq({ "error" => "Invalid API key (fake_key) specified." })
62
62
  end
63
63
  end
@@ -66,8 +66,9 @@ 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, params: { token: "fake_key" }
70
70
  expect(json_response).to eq({ "exception" => "no joy" })
71
+ expect(response.content_type).to eq("application/json")
71
72
  end
72
73
 
73
74
  it 'raises Exception' do
@@ -75,7 +76,7 @@ describe Spree::Api::BaseController, type: :controller do
75
76
  expect(subject).to receive(:load_user_roles).and_return(true)
76
77
  expect(subject).to receive(:index).and_raise(Exception.new("no joy"))
77
78
  expect {
78
- get :index, token: "fake_key"
79
+ get :index, params: { token: "fake_key" }
79
80
  }.to raise_error(Exception, "no joy")
80
81
  end
81
82
 
@@ -125,7 +126,7 @@ describe Spree::Api::BaseController, type: :controller do
125
126
  before do
126
127
  expect(subject).to receive(:authenticate_user).and_return(true)
127
128
  expect(subject).to receive(:index).and_raise(Spree::Order::InsufficientStock)
128
- get :index, token: "fake_key"
129
+ get :index, params: { token: "fake_key" }
129
130
  end
130
131
 
131
132
  it "should return a 422" do
@@ -146,7 +147,7 @@ describe Spree::Api::BaseController, type: :controller do
146
147
  around_action :lock_order
147
148
 
148
149
  def index
149
- render text: { "products" => [] }.to_json
150
+ render json: { "products" => [] }
150
151
  end
151
152
  end
152
153
 
@@ -163,19 +163,6 @@ 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
168
  api_put :update, id: order.to_param, order_token: order.guest_token,
@@ -32,9 +32,8 @@ module Spree
32
32
  describe "POST create" do
33
33
  let(:target_user) { create :user }
34
34
  let(:date_override) { Time.parse('2015-01-01') }
35
- let(:attributes) { { user_id: target_user.id, created_at: date_override, email: target_user.email } }
36
35
 
37
- subject { api_post :create, order: attributes }
36
+ subject { api_post :create, order: { user_id: target_user.id, created_at: date_override, email: target_user.email } }
38
37
 
39
38
  context "when the current user cannot administrate the order" do
40
39
  stub_authorization! do |_|
@@ -43,37 +42,12 @@ module Spree
43
42
 
44
43
  it "does not include unpermitted params, or allow overriding the user", focus: true do
45
44
  subject
46
- expect(response).to be_success
47
45
  order = Spree::Order.last
48
46
  expect(order.user).to eq current_api_user
49
47
  expect(order.email).to eq target_user.email
50
48
  end
51
49
 
52
50
  it { is_expected.to be_success }
53
-
54
- context 'creating payment' do
55
- let(:attributes) { super().merge(payments_attributes: [{ payment_method_id: payment_method.id }]) }
56
-
57
- context "with allowed payment method" do
58
- let!(:payment_method) { create(:check_payment_method, name: "allowed" ) }
59
- it { is_expected.to be_success }
60
- it "creates a payment" do
61
- expect {
62
- subject
63
- }.to change { Spree::Payment.count }.by(1)
64
- end
65
- end
66
-
67
- context "with disallowed payment method" do
68
- let!(:payment_method) { create(:check_payment_method, name: "forbidden", display_on: "back_end") }
69
- it { is_expected.to be_not_found }
70
- it "creates no payments" do
71
- expect {
72
- subject
73
- }.not_to change { Spree::Payment.count }
74
- end
75
- end
76
- end
77
51
  end
78
52
 
79
53
  context "when the current user can administrate the order" do
@@ -123,30 +97,6 @@ module Spree
123
97
  subject
124
98
  }.to_not change{ order.reload.number }
125
99
  end
126
-
127
- context 'creating payment' do
128
- let(:order_params) { super().merge(payments_attributes: [{ payment_method_id: payment_method.id }]) }
129
-
130
- context "with allowed payment method" do
131
- let!(:payment_method) { create(:check_payment_method, name: "allowed" ) }
132
- it { is_expected.to be_success }
133
- it "creates a payment" do
134
- expect {
135
- subject
136
- }.to change { Spree::Payment.count }.by(1)
137
- end
138
- end
139
-
140
- context "with disallowed payment method" do
141
- let!(:payment_method) { create(:check_payment_method, name: "forbidden", display_on: "back_end") }
142
- it { is_expected.to be_not_found }
143
- it "creates no payments" do
144
- expect {
145
- subject
146
- }.not_to change { Spree::Payment.count }
147
- end
148
- end
149
- end
150
100
  end
151
101
 
152
102
  context "when the user can administer the order" do
@@ -216,13 +166,13 @@ module Spree
216
166
  end
217
167
 
218
168
  it "returns orders in reverse chronological order by completed_at" do
219
- order.update_columns completed_at: Time.current, created_at: 3.days.ago
169
+ order.update_columns completed_at: Time.current
220
170
 
221
- order2 = Order.create user: order.user, completed_at: Time.current - 1.day, created_at: 2.day.ago, store: store
171
+ order2 = Order.create user: order.user, completed_at: Time.current - 1.day, store: store
222
172
  expect(order2.created_at).to be > order.created_at
223
- order3 = Order.create user: order.user, completed_at: nil, created_at: 1.day.ago, store: store
173
+ order3 = Order.create user: order.user, completed_at: nil, store: store
224
174
  expect(order3.created_at).to be > order2.created_at
225
- order4 = Order.create user: order.user, completed_at: nil, created_at: 0.days.ago, store: store
175
+ order4 = Order.create user: order.user, completed_at: nil, store: store
226
176
  expect(order4.created_at).to be > order3.created_at
227
177
 
228
178
  request.env['SERVER_NAME'] = store.url
@@ -383,7 +333,10 @@ module Spree
383
333
 
384
334
  # Regression test for https://github.com/spree/spree/issues/3404
385
335
  it "can specify additional parameters for a line item" do
386
- expect_any_instance_of(Spree::LineItem).to receive(:special=).with("foo")
336
+ expect(Order).to receive(:create!).and_return(order = Spree::Order.new)
337
+ allow(order).to receive(:associate_user!)
338
+ allow(order).to receive_message_chain(:contents, :add).and_return(line_item = double('LineItem'))
339
+ expect(line_item).to receive(:update_attributes!).with(hash_including("special" => "foo"))
387
340
 
388
341
  allow(controller).to receive_messages(permitted_line_item_attributes: [:id, :variant_id, :quantity, :special])
389
342
  api_post :create, order: {
@@ -45,17 +45,6 @@ module Spree
45
45
  expect(response.status).to eq(201)
46
46
  expect(json_response).to have_attributes(attributes)
47
47
  end
48
-
49
- context "disallowed payment method" do
50
- it "does not create a new payment" do
51
- PaymentMethod.first.update!(display_on: "back_end")
52
-
53
- expect {
54
- api_post :create, payment: { payment_method_id: PaymentMethod.first.id, amount: 50 }
55
- }.not_to change { Spree::Payment.count }
56
- expect(response.status).to eq(404)
57
- end
58
- end
59
48
  end
60
49
 
61
50
  context "payment source is required" do
@@ -24,7 +24,12 @@ module Spree
24
24
 
25
25
  def login
26
26
  expect {
27
- post '/api/users', user: { email: "featurecheckoutuser@example.com", password: "featurecheckoutuser" }
27
+ post '/api/users', params: {
28
+ user: {
29
+ email: "featurecheckoutuser@example.com",
30
+ password: "featurecheckoutuser"
31
+ }
32
+ }
28
33
  }.to change { Spree.user_class.count }.by 1
29
34
  expect(response).to have_http_status(:created)
30
35
  @user = Spree.user_class.find(parsed['id'])
@@ -34,27 +39,29 @@ module Spree
34
39
  end
35
40
 
36
41
  def create_order(order_params: {})
37
- expect { post '/api/orders', order_params }.to change { Order.count }.by 1
42
+ expect { post '/api/orders', params: order_params }.to change { Order.count }.by 1
38
43
  expect(response).to have_http_status(:created)
39
44
  @order = Order.find(parsed['id'])
40
45
  expect(@order.email).to eq "featurecheckoutuser@example.com"
41
46
  end
42
47
 
43
48
  def update_order(order_params: {})
44
- put "/api/orders/#{@order.number}", order_params
49
+ put "/api/orders/#{@order.number}", params: order_params
45
50
  expect(response).to have_http_status(:ok)
46
51
  end
47
52
 
48
53
  def create_line_item(variant, quantity = 1)
49
54
  expect {
50
- post "/api/orders/#{@order.number}/line_items", line_item: { variant_id: variant.id, quantity: quantity }
55
+ post "/api/orders/#{@order.number}/line_items",
56
+ params: { line_item: { variant_id: variant.id, quantity: quantity } }
51
57
  }.to change { @order.line_items.count }.by 1
52
58
  expect(response).to have_http_status(:created)
53
59
  end
54
60
 
55
61
  def add_promotion(_promotion)
56
62
  expect {
57
- put "/api/orders/#{@order.number}/apply_coupon_code", coupon_code: promotion_code.value
63
+ put "/api/orders/#{@order.number}/apply_coupon_code",
64
+ params: { coupon_code: promotion_code.value }
58
65
  }.to change { @order.promotions.count }.by 1
59
66
  expect(response).to have_http_status(:ok)
60
67
  end
@@ -70,7 +77,8 @@ module Spree
70
77
 
71
78
  def add_payment
72
79
  expect {
73
- post "/api/orders/#{@order.number}/payments", payment: { payment_method_id: payment_method.id }
80
+ post "/api/orders/#{@order.number}/payments",
81
+ params: { payment: { payment_method_id: payment_method.id } }
74
82
  }.to change { @order.reload.payments.count }.by 1
75
83
  expect(response).to have_http_status(:created)
76
84
  expect(@order.payments.last.payment_method).to eq payment_method
@@ -38,7 +38,8 @@ module Spree
38
38
  user.save_in_address_book(harry_address_attributes, true)
39
39
  user.save_in_address_book(ron_address_attributes, false)
40
40
 
41
- get "/api/users/#{user.id}/address_book", nil, { 'X-SPREE-TOKEN' => 'galleon' }
41
+ get "/api/users/#{user.id}/address_book",
42
+ headers: { 'X-SPREE-TOKEN' => 'galleon' }
42
43
 
43
44
  json_response = JSON.parse(response.body)
44
45
  expect(response.status).to eq(200)
@@ -55,7 +56,9 @@ module Spree
55
56
  harry_address_attributes['firstname'] = 'Ron'
56
57
 
57
58
  expect {
58
- put "/api/users/#{user.id}/address_book", { address_book: harry_address_attributes.merge('id' => address.id) }, { 'X-SPREE-TOKEN' => 'galleon' }
59
+ put "/api/users/#{user.id}/address_book",
60
+ params: { address_book: harry_address_attributes.merge('id' => address.id) },
61
+ headers: { 'X-SPREE-TOKEN' => 'galleon' }
59
62
  }.to change { UserAddress.count }.from(1).to(2)
60
63
 
61
64
  expect(response.status).to eq(200)
@@ -67,7 +70,9 @@ module Spree
67
70
  user = create(:user, spree_api_key: 'galleon')
68
71
 
69
72
  expect {
70
- put "/api/users/#{user.id}/address_book", { address_book: harry_address_attributes }, { 'X-SPREE-TOKEN' => 'galleon' }
73
+ put "/api/users/#{user.id}/address_book",
74
+ params: { address_book: harry_address_attributes },
75
+ headers: { 'X-SPREE-TOKEN' => 'galleon' }
71
76
  }.to change { UserAddress.count }.by(1)
72
77
 
73
78
  user_address = UserAddress.last
@@ -84,7 +89,9 @@ module Spree
84
89
  address = user.save_in_address_book(harry_address_attributes, true)
85
90
 
86
91
  expect {
87
- put "/api/users/#{user.id}/address_book", { address_book: harry_address_attributes }, { 'X-SPREE-TOKEN' => 'galleon' }
92
+ put "/api/users/#{user.id}/address_book",
93
+ params: { address_book: harry_address_attributes },
94
+ headers: { 'X-SPREE-TOKEN' => 'galleon' }
88
95
  }.to_not change { UserAddress.count }
89
96
 
90
97
  expect(response.status).to eq(200)
@@ -99,7 +106,9 @@ module Spree
99
106
  user.save_in_address_book(address.attributes, false)
100
107
 
101
108
  expect {
102
- delete "/api/users/#{user.id}/address_book", { address_id: address.id }, { 'X-SPREE-TOKEN' => 'galleon' }
109
+ delete "/api/users/#{user.id}/address_book",
110
+ params: { address_id: address.id },
111
+ headers: { 'X-SPREE-TOKEN' => 'galleon' }
103
112
  }.to change { user.reload.user_addresses.count }.from(1).to(0)
104
113
 
105
114
  expect(response.status).to eq(200)
@@ -121,7 +130,8 @@ module Spree
121
130
  other_user.save_in_address_book(harry_address_attributes, true)
122
131
  other_user.save_in_address_book(ron_address_attributes, false)
123
132
 
124
- get "/api/users/#{other_user.id}/address_book", nil, { 'X-SPREE-TOKEN' => 'galleon' }
133
+ get "/api/users/#{other_user.id}/address_book",
134
+ headers: { 'X-SPREE-TOKEN' => 'galleon' }
125
135
 
126
136
  json_response = JSON.parse(response.body)
127
137
  expect(response.status).to eq(200)
@@ -138,7 +148,9 @@ module Spree
138
148
  updated_harry_address = harry_address_attributes.merge('firstname' => 'Ron')
139
149
 
140
150
  expect {
141
- put "/api/users/#{other_user.id}/address_book", { address_book: updated_harry_address.merge('id' => address.id) }, { 'X-SPREE-TOKEN' => 'galleon' }
151
+ put "/api/users/#{other_user.id}/address_book",
152
+ params: { address_book: updated_harry_address.merge('id' => address.id) },
153
+ headers: { 'X-SPREE-TOKEN' => 'galleon' }
142
154
  }.to change { UserAddress.count }.from(1).to(2)
143
155
 
144
156
  expect(response.status).to eq(200)
@@ -151,7 +163,9 @@ module Spree
151
163
  other_user.save_in_address_book(address.attributes, false)
152
164
 
153
165
  expect {
154
- delete "/api/users/#{other_user.id}/address_book", { address_id: address.id }, { 'X-SPREE-TOKEN' => 'galleon' }
166
+ delete "/api/users/#{other_user.id}/address_book",
167
+ params: { address_id: address.id },
168
+ headers: { 'X-SPREE-TOKEN' => 'galleon' }
155
169
  }.to change { other_user.reload.user_addresses.count }.from(1).to(0)
156
170
 
157
171
  expect(response.status).to eq(200)
@@ -164,7 +178,8 @@ module Spree
164
178
  other_user = create(:user)
165
179
  other_user.save_in_address_book(harry_address_attributes, true)
166
180
 
167
- get "/api/users/#{other_user.id}/address_book", nil, { 'X-SPREE-TOKEN' => 'galleon' }
181
+ get "/api/users/#{other_user.id}/address_book",
182
+ headers: { 'X-SPREE-TOKEN' => 'galleon' }
168
183
 
169
184
  expect(response.status).to eq(401)
170
185
  end
@@ -176,7 +191,9 @@ module Spree
176
191
  create(:user, spree_api_key: 'galleon')
177
192
 
178
193
  expect {
179
- put "/api/users/#{other_user.id}/address_book", { address_book: other_user_address.attributes.merge('address1' => 'Hogwarts') }, { 'X-SPREE-TOKEN' => 'galleon' }
194
+ put "/api/users/#{other_user.id}/address_book",
195
+ params: { address_book: other_user_address.attributes.merge('address1' => 'Hogwarts') },
196
+ headers: { 'X-SPREE-TOKEN' => 'galleon' }
180
197
  }.not_to change { UserAddress.count }
181
198
 
182
199
  expect(response.status).to eq(401)
@@ -189,7 +206,9 @@ module Spree
189
206
  create(:user, spree_api_key: 'galleon')
190
207
 
191
208
  expect {
192
- delete "/api/users/#{other_user.id}/address_book", { address_id: address.id }, { 'X-SPREE-TOKEN' => 'galleon' }
209
+ delete "/api/users/#{other_user.id}/address_book",
210
+ params: { address_id: address.id },
211
+ headers: { 'X-SPREE-TOKEN' => 'galleon' }
193
212
  }.not_to change { other_user.user_addresses.count }
194
213
 
195
214
  expect(response.status).to eq(401)
@@ -10,7 +10,7 @@ describe "Rabl Cache", type: :request, caching: true do
10
10
  end
11
11
 
12
12
  it "doesn't create a cache key collision for models with different rabl templates" do
13
- get "/api/variants", token: user.spree_api_key
13
+ get "/api/variants", params: { token: user.spree_api_key }
14
14
  expect(response.status).to eq(200)
15
15
 
16
16
  # Make sure we get a non master variant
@@ -21,7 +21,7 @@ describe "Rabl Cache", type: :request, caching: true do
21
21
  expect(variant_a['is_master']).to be false
22
22
  expect(variant_a['stock_items']).not_to be_nil
23
23
 
24
- get "/api/products/#{Spree::Product.first.id}", token: user.spree_api_key
24
+ get "/api/products/#{Spree::Product.first.id}", params: { token: user.spree_api_key }
25
25
  expect(response.status).to eq(200)
26
26
  variant_b = JSON.parse(response.body)['variants'].last
27
27
  expect(variant_b['is_master']).to be false
@@ -7,7 +7,7 @@ describe "Ransackable Attributes" do
7
7
  it "does not allow the filtering of variants by order attributes" do
8
8
  2.times { create(:variant) }
9
9
 
10
- get "/api/variants?q[orders_email_start]=#{order.email}", token: user.spree_api_key
10
+ get "/api/variants?q[orders_email_start]=#{order.email}", params: { token: user.spree_api_key }
11
11
 
12
12
  variants_response = JSON.parse(response.body)
13
13
  expect(variants_response['total_count']).to eq(Spree::Variant.count)
@@ -18,7 +18,7 @@ describe "Ransackable Attributes" do
18
18
  it "does not allow the filtering of variants by user attributes" do
19
19
  2.times { create(:variant) }
20
20
 
21
- get "/api/variants?q[orders_user_email_start]=#{order.user.email}", token: user.spree_api_key
21
+ get "/api/variants?q[orders_user_email_start]=#{order.user.email}", params: { token: user.spree_api_key }
22
22
 
23
23
  variants_response = JSON.parse(response.body)
24
24
  expect(variants_response['total_count']).to eq(Spree::Variant.count)
@@ -31,7 +31,7 @@ describe "Ransackable Attributes" do
31
31
  variant = create(:variant, product: product)
32
32
  other_variant = create(:variant)
33
33
 
34
- get "/api/variants?q[product_name_or_sku_cont]=fritos", token: user.spree_api_key
34
+ get "/api/variants?q[product_name_or_sku_cont]=fritos", params: { token: user.spree_api_key }
35
35
 
36
36
  skus = JSON.parse(response.body)['variants'].map { |x| x['sku'] }
37
37
  expect(skus).to include variant.sku
@@ -44,7 +44,7 @@ describe "Ransackable Attributes" do
44
44
  create(:product, description: "special product")
45
45
  create(:product)
46
46
 
47
- get "/api/products?q[description_cont]=special", token: user.spree_api_key
47
+ get "/api/products?q[description_cont]=special", params: { token: user.spree_api_key }
48
48
 
49
49
  products_response = JSON.parse(response.body)
50
50
  expect(products_response['total_count']).to eq(Spree::Product.count)
@@ -54,7 +54,7 @@ describe "Ransackable Attributes" do
54
54
  product = create(:product)
55
55
  other_product = create(:product)
56
56
 
57
- get "/api/products?q[id_eq]=#{product.id}", token: user.spree_api_key
57
+ get "/api/products?q[id_eq]=#{product.id}", params: { token: user.spree_api_key }
58
58
 
59
59
  product_names = JSON.parse(response.body)['products'].map { |x| x['name'] }
60
60
  expect(product_names).to include product.name
@@ -67,7 +67,7 @@ describe "Ransackable Attributes" do
67
67
  product = create(:product, name: "Fritos")
68
68
  other_product = create(:product)
69
69
 
70
- get "/api/products?q[name_cont]=fritos", token: user.spree_api_key
70
+ get "/api/products?q[name_cont]=fritos", params: { token: user.spree_api_key }
71
71
 
72
72
  product_names = JSON.parse(response.body)['products'].map { |x| x['name'] }
73
73
  expect(product_names).to include product.name
data/spec/spec_helper.rb CHANGED
@@ -36,6 +36,8 @@ require 'spree/api/testing_support/caching'
36
36
  require 'spree/api/testing_support/helpers'
37
37
  require 'spree/api/testing_support/setup'
38
38
 
39
+ ActiveJob::Base.queue_adapter = :inline
40
+
39
41
  RSpec.configure do |config|
40
42
  config.backtrace_exclusion_patterns = [/gems\/activesupport/, /gems\/actionpack/, /gems\/rspec/]
41
43
  config.color = true
@@ -25,7 +25,14 @@ module ControllerHacks
25
25
 
26
26
  def api_process(action, params = {}, session = nil, flash = nil, method = "get")
27
27
  scoping = respond_to?(:resource_scoping) ? resource_scoping : {}
28
- process(action, method, params.merge(scoping).reverse_merge!(format: :json), session, flash)
28
+ process(
29
+ action,
30
+ method: method,
31
+ params: params.merge(scoping),
32
+ session: session,
33
+ flash: flash,
34
+ format: :json
35
+ )
29
36
  end
30
37
  end
31
38
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 2.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Solidus Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-12 00:00:00.000000000 Z
11
+ date: 2016-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus_core
@@ -16,34 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.4.2
19
+ version: 2.0.0.beta1
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.4.2
26
+ version: 2.0.0.beta1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rabl
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 0.9.4.pre1
34
- - - "<"
31
+ - - '='
35
32
  - !ruby/object:Gem::Version
36
- version: 0.12.0
33
+ version: 0.13.0
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: 0.9.4.pre1
44
- - - "<"
38
+ - - '='
45
39
  - !ruby/object:Gem::Version
46
- version: 0.12.0
40
+ version: 0.13.0
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: versioncake
49
43
  requirement: !ruby/object:Gem::Requirement
@@ -198,6 +192,7 @@ files:
198
192
  - app/views/spree/api/variants/small.v1.rabl
199
193
  - app/views/spree/api/zones/index.v1.rabl
200
194
  - app/views/spree/api/zones/show.v1.rabl
195
+ - config/initializers/rails5_rabl_hacks.rb
201
196
  - config/locales/en.yml
202
197
  - config/routes.rb
203
198
  - db/migrate/20100107141738_add_api_key_to_spree_users.rb
@@ -279,12 +274,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
279
274
  version: '0'
280
275
  required_rubygems_version: !ruby/object:Gem::Requirement
281
276
  requirements:
282
- - - ">="
277
+ - - ">"
283
278
  - !ruby/object:Gem::Version
284
- version: '0'
279
+ version: 1.3.1
285
280
  requirements: []
286
281
  rubyforge_project:
287
- rubygems_version: 2.6.11
282
+ rubygems_version: 2.5.1
288
283
  signing_key:
289
284
  specification_version: 4
290
285
  summary: REST API for the Solidus e-commerce framework.