solidus_api 1.3.2 → 1.4.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.
Potentially problematic release.
This version of solidus_api might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +13 -0
- data/app/controllers/spree/api/address_books_controller.rb +1 -1
- data/app/controllers/spree/api/checkouts_controller.rb +7 -7
- data/app/controllers/spree/api/classifications_controller.rb +1 -1
- data/app/controllers/spree/api/line_items_controller.rb +2 -2
- data/app/controllers/spree/api/orders_controller.rb +3 -13
- data/app/controllers/spree/api/payments_controller.rb +3 -4
- data/app/controllers/spree/api/promotions_controller.rb +2 -2
- data/app/controllers/spree/api/return_authorizations_controller.rb +2 -2
- data/app/controllers/spree/api/shipments_controller.rb +4 -9
- data/app/controllers/spree/api/stock_items_controller.rb +1 -1
- data/app/controllers/spree/api/stores_controller.rb +1 -1
- data/app/controllers/spree/api/taxons_controller.rb +1 -1
- data/app/helpers/spree/api/api_helpers.rb +1 -1
- data/app/views/spree/api/countries/index.v1.rabl +1 -1
- data/app/views/spree/api/credit_cards/index.v1.rabl +1 -1
- data/app/views/spree/api/orders/index.v1.rabl +1 -1
- data/app/views/spree/api/orders/mine.v1.rabl +1 -1
- data/app/views/spree/api/payments/index.v1.rabl +1 -1
- data/app/views/spree/api/product_properties/index.v1.rabl +1 -1
- data/app/views/spree/api/products/index.v1.rabl +2 -2
- data/app/views/spree/api/properties/index.v1.rabl +1 -1
- data/app/views/spree/api/return_authorizations/index.v1.rabl +1 -1
- data/app/views/spree/api/shipments/mine.v1.rabl +1 -1
- data/app/views/spree/api/states/index.v1.rabl +1 -1
- data/app/views/spree/api/stock_items/index.v1.rabl +1 -1
- data/app/views/spree/api/stock_locations/index.v1.rabl +1 -1
- data/app/views/spree/api/stock_movements/index.v1.rabl +1 -1
- data/app/views/spree/api/store_credit_events/mine.v1.rabl +1 -1
- data/app/views/spree/api/taxonomies/index.v1.rabl +1 -1
- data/app/views/spree/api/taxons/index.v1.rabl +2 -2
- data/app/views/spree/api/users/index.v1.rabl +1 -1
- data/app/views/spree/api/variants/index.v1.rabl +1 -1
- data/app/views/spree/api/zones/index.v1.rabl +1 -1
- data/config/routes.rb +1 -1
- data/spec/controllers/spree/api/addresses_controller_spec.rb +0 -9
- data/spec/controllers/spree/api/base_controller_spec.rb +1 -1
- data/spec/controllers/spree/api/checkouts_controller_spec.rb +5 -18
- data/spec/controllers/spree/api/classifications_controller_spec.rb +2 -2
- data/spec/controllers/spree/api/line_items_controller_spec.rb +4 -4
- data/spec/controllers/spree/api/orders_controller_spec.rb +5 -52
- data/spec/controllers/spree/api/payments_controller_spec.rb +0 -11
- data/spec/controllers/spree/api/products_controller_spec.rb +1 -1
- data/spec/controllers/spree/api/shipments_controller_spec.rb +1 -1
- data/spec/controllers/spree/api/states_controller_spec.rb +7 -20
- data/spec/controllers/spree/api/taxons_controller_spec.rb +1 -1
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 458c60c64203fa11109611f14f1c306f4515801d
|
4
|
+
data.tar.gz: 8174fd109b920284baad60c854c8a72e290ee754
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd71cfd47f66448c80b9d7037d62be471d059d80d818bcf8a027b25c2a5e9b660583ac8cace39b00b8278c79a6e2dca855324ce867088e86fd1fd08c28bc0fd9
|
7
|
+
data.tar.gz: 74bb76480dc1352a60f18ddbdae708f5d536825425993fab7832a69edf723dcd1ba108fb0e936d8f65a5b74d6a99f1553b527d10f8f953a6a7a174ed8d43691f
|
data/README.md
ADDED
@@ -2,7 +2,7 @@ module Spree
|
|
2
2
|
module Api
|
3
3
|
class AddressBooksController < Spree::Api::BaseController
|
4
4
|
# Note: the AddressBook is the resource to think about here, not individual addresses
|
5
|
-
|
5
|
+
before_action :load_user_addresses
|
6
6
|
|
7
7
|
def show
|
8
8
|
authorize! :show, address_book_user
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Spree
|
2
2
|
module Api
|
3
3
|
class CheckoutsController < Spree::Api::BaseController
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
before_action :load_order, only: [:next, :advance, :update, :complete]
|
5
|
+
around_action :lock_order, only: [:next, :advance, :update, :complete]
|
6
|
+
before_action :update_order_state, only: [:next, :advance, :update, :complete]
|
7
7
|
|
8
8
|
rescue_from Spree::Order::InsufficientStock, with: :insufficient_stock_error
|
9
9
|
|
@@ -11,12 +11,12 @@ module Spree
|
|
11
11
|
# TODO: Remove this after deprecated usage in #update is removed
|
12
12
|
include Spree::Core::ControllerHelpers::PaymentParameters
|
13
13
|
|
14
|
-
# This
|
14
|
+
# This before_action comes from Spree::Core::ControllerHelpers::Order
|
15
15
|
skip_before_action :set_current_order
|
16
16
|
|
17
17
|
def next
|
18
18
|
if @order.confirm?
|
19
|
-
|
19
|
+
Spree::Deprecation.warn "Using Spree::Api::CheckoutsController#next to transition to complete is deprecated. Please use #complete instead of #next.", caller
|
20
20
|
complete
|
21
21
|
return
|
22
22
|
end
|
@@ -94,12 +94,12 @@ module Spree
|
|
94
94
|
massaged_params = params.deep_dup
|
95
95
|
|
96
96
|
if params[:payment_source].present?
|
97
|
-
|
97
|
+
Spree::Deprecation.warn("Passing payment_source is deprecated. Send source parameters inside payments_attributes[:source_attributes].", caller)
|
98
98
|
move_payment_source_into_payments_attributes(massaged_params)
|
99
99
|
end
|
100
100
|
|
101
101
|
if params[:order] && params[:order][:existing_card].present?
|
102
|
-
|
102
|
+
Spree::Deprecation.warn("Passing order[:existing_card] is deprecated. Send existing_card_id inside of payments_attributes[:source_attributes].", caller)
|
103
103
|
move_existing_card_into_payments_attributes(massaged_params)
|
104
104
|
end
|
105
105
|
|
@@ -5,8 +5,8 @@ module Spree
|
|
5
5
|
|
6
6
|
self.line_item_options = []
|
7
7
|
|
8
|
-
|
9
|
-
|
8
|
+
before_action :load_order, only: [:create, :update, :destroy]
|
9
|
+
around_action :lock_order, only: [:create, :update, :destroy]
|
10
10
|
|
11
11
|
def new
|
12
12
|
end
|
@@ -10,7 +10,7 @@ module Spree
|
|
10
10
|
skip_before_action :authenticate_user, only: :apply_coupon_code
|
11
11
|
|
12
12
|
before_action :find_order, except: [:create, :mine, :current, :index]
|
13
|
-
|
13
|
+
around_action :lock_order, except: [:create, :mine, :current, :index]
|
14
14
|
|
15
15
|
# Dynamically defines our stores checkout steps to ensure we check authorization on each step.
|
16
16
|
Order.checkout_steps.keys.each do |step|
|
@@ -27,18 +27,8 @@ module Spree
|
|
27
27
|
|
28
28
|
def create
|
29
29
|
authorize! :create, Order
|
30
|
-
|
31
|
-
|
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
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Spree
|
2
2
|
module Api
|
3
3
|
class PaymentsController < Spree::Api::BaseController
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
before_action :find_order
|
5
|
+
around_action :lock_order, only: [:create, :update, :destroy, :authorize, :capture, :purchase, :void, :credit]
|
6
|
+
before_action :find_payment, only: [:update, :show, :authorize, :purchase, :capture, :void, :credit]
|
7
7
|
|
8
8
|
def index
|
9
9
|
@payments = @order.payments.ransack(params[:q]).result.page(params[:page]).per(params[:per_page])
|
@@ -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)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Spree
|
2
2
|
module Api
|
3
3
|
class ReturnAuthorizationsController < Spree::Api::BaseController
|
4
|
-
|
5
|
-
|
4
|
+
before_action :load_order
|
5
|
+
around_action :lock_order, only: [:create, :update, :destroy, :add, :receive, :cancel]
|
6
6
|
|
7
7
|
rescue_from Spree::Order::InsufficientStock, with: :insufficient_stock_error
|
8
8
|
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module Spree
|
2
2
|
module Api
|
3
3
|
class ShipmentsController < Spree::Api::BaseController
|
4
|
-
|
5
|
-
|
4
|
+
before_action :find_order_on_create, only: :create
|
5
|
+
before_action :find_shipment, only: [:update, :ship, :ready, :add, :remove]
|
6
6
|
before_action :load_transfer_params, only: [:transfer_to_location, :transfer_to_shipment]
|
7
|
-
|
8
|
-
|
7
|
+
around_action :lock_order, except: [:mine]
|
8
|
+
before_action :update_shipment, only: [:ship, :ready, :add, :remove]
|
9
9
|
|
10
10
|
def mine
|
11
11
|
if current_api_user
|
@@ -21,11 +21,6 @@ module Spree
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def create
|
24
|
-
# TODO: Can remove conditional here once deprecated #find_order is removed.
|
25
|
-
unless @order.present?
|
26
|
-
@order = Spree::Order.find_by!(number: params[:shipment][:order_id])
|
27
|
-
authorize! :read, @order
|
28
|
-
end
|
29
24
|
authorize! :create, Shipment
|
30
25
|
quantity = params[:quantity].to_i
|
31
26
|
@shipment = @order.shipments.create(stock_location_id: params.fetch(:stock_location_id))
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Spree
|
2
2
|
module Api
|
3
3
|
class StockItemsController < Spree::Api::BaseController
|
4
|
-
|
4
|
+
before_action :load_stock_location, only: [:index, :show, :create]
|
5
5
|
|
6
6
|
def index
|
7
7
|
@stock_items = scope.ransack(params[:q]).result.page(params[:page]).per(params[:per_page])
|
@@ -33,7 +33,7 @@ module Spree
|
|
33
33
|
taxonomy = Spree::Taxonomy.find_by(id: params[:taxonomy_id])
|
34
34
|
|
35
35
|
if taxonomy.nil?
|
36
|
-
@taxon.errors
|
36
|
+
@taxon.errors.add(:taxonomy_id, I18n.t('spree.api.invalid_taxonomy_id'))
|
37
37
|
invalid_resource!(@taxon) && return
|
38
38
|
end
|
39
39
|
|
@@ -135,7 +135,7 @@ module Spree
|
|
135
135
|
|
136
136
|
@@adjustment_attributes = [
|
137
137
|
:id, :source_type, :source_id, :adjustable_type, :adjustable_id,
|
138
|
-
:
|
138
|
+
:amount, :label, :promotion_code,
|
139
139
|
:locked, :eligible, :created_at, :updated_at
|
140
140
|
]
|
141
141
|
|
@@ -3,5 +3,5 @@ child(@product_properties => :product_properties) do
|
|
3
3
|
attributes *product_property_attributes
|
4
4
|
end
|
5
5
|
node(:count) { @product_properties.count }
|
6
|
-
node(:current_page) {
|
6
|
+
node(:current_page) { @product_properties.current_page }
|
7
7
|
node(:pages) { @product_properties.total_pages }
|
@@ -1,8 +1,8 @@
|
|
1
1
|
object false
|
2
2
|
node(:count) { @products.count }
|
3
3
|
node(:total_count) { @products.total_count }
|
4
|
-
node(:current_page) {
|
5
|
-
node(:per_page) {
|
4
|
+
node(:current_page) { @products.current_page }
|
5
|
+
node(:per_page) { @products.limit_value }
|
6
6
|
node(:pages) { @products.total_pages }
|
7
7
|
child(@products => :products) do
|
8
8
|
extends "spree/api/products/show"
|
@@ -3,5 +3,5 @@ child(@return_authorizations => :return_authorizations) do
|
|
3
3
|
attributes *return_authorization_attributes
|
4
4
|
end
|
5
5
|
node(:count) { @return_authorizations.count }
|
6
|
-
node(:current_page) {
|
6
|
+
node(:current_page) { @return_authorizations.current_page }
|
7
7
|
node(:pages) { @return_authorizations.total_pages }
|
@@ -3,5 +3,5 @@ child(@stock_locations => :stock_locations) do
|
|
3
3
|
extends 'spree/api/stock_locations/show'
|
4
4
|
end
|
5
5
|
node(:count) { @stock_locations.count }
|
6
|
-
node(:current_page) {
|
6
|
+
node(:current_page) { @stock_locations.current_page }
|
7
7
|
node(:pages) { @stock_locations.total_pages }
|
@@ -3,5 +3,5 @@ child(@stock_movements => :stock_movements) do
|
|
3
3
|
extends 'spree/api/stock_movements/show'
|
4
4
|
end
|
5
5
|
node(:count) { @stock_movements.count }
|
6
|
-
node(:current_page) {
|
6
|
+
node(:current_page) { @stock_movements.current_page }
|
7
7
|
node(:pages) { @stock_movements.total_pages }
|
@@ -1,8 +1,8 @@
|
|
1
1
|
object false
|
2
2
|
node(:count) { @taxons.count }
|
3
3
|
node(:total_count) { @taxons.total_count }
|
4
|
-
node(:current_page) {
|
5
|
-
node(:per_page) {
|
4
|
+
node(:current_page) { @taxons.current_page }
|
5
|
+
node(:per_page) { @taxons.limit_value }
|
6
6
|
node(:pages) { @taxons.total_pages }
|
7
7
|
child @taxons => :taxons do
|
8
8
|
attributes *taxon_attributes
|
@@ -1,7 +1,7 @@
|
|
1
1
|
object false
|
2
2
|
node(:count) { @variants.count }
|
3
3
|
node(:total_count) { @variants.total_count }
|
4
|
-
node(:current_page) {
|
4
|
+
node(:current_page) { @variants.current_page }
|
5
5
|
node(:pages) { @variants.total_pages }
|
6
6
|
|
7
7
|
child(@variants => :variants) do
|
data/config/routes.rb
CHANGED
@@ -37,15 +37,6 @@ module Spree
|
|
37
37
|
expect(json_response['errors']['address1'].first).to eq "can't be blank"
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
41
|
-
it "receives the errors object if address is invalid" do
|
42
|
-
api_put :update, id: @address.id, order_id: @order.number,
|
43
|
-
address: { address1: "" }
|
44
|
-
|
45
|
-
expect(json_response['error']).not_to be_nil
|
46
|
-
expect(json_response['errors']).not_to be_nil
|
47
|
-
expect(json_response['errors']['address1'].first).to eq "can't be blank"
|
48
|
-
end
|
49
40
|
end
|
50
41
|
|
51
42
|
context "on an address that does not belong to this order" do
|
@@ -143,7 +143,7 @@ describe Spree::Api::BaseController, type: :controller do
|
|
143
143
|
let!(:order) { create :order }
|
144
144
|
|
145
145
|
controller(Spree::Api::BaseController) do
|
146
|
-
|
146
|
+
around_action :lock_order
|
147
147
|
|
148
148
|
def index
|
149
149
|
render text: { "products" => [] }.to_json
|
@@ -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)
|
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,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,
|
@@ -250,7 +237,7 @@ module Spree
|
|
250
237
|
end
|
251
238
|
|
252
239
|
it "succeeds" do
|
253
|
-
|
240
|
+
Spree::Deprecation.silence do
|
254
241
|
api_put(:update, params)
|
255
242
|
end
|
256
243
|
expect(response.status).to eq(200)
|
@@ -308,7 +295,7 @@ module Spree
|
|
308
295
|
end
|
309
296
|
|
310
297
|
it 'returns errors' do
|
311
|
-
|
298
|
+
Spree::Deprecation.silence do
|
312
299
|
api_put(:update, params)
|
313
300
|
end
|
314
301
|
|
@@ -382,7 +369,7 @@ module Spree
|
|
382
369
|
receive(:verification_value=).with('456').and_call_original
|
383
370
|
)
|
384
371
|
|
385
|
-
|
372
|
+
Spree::Deprecation.silence do
|
386
373
|
api_put(:update, params)
|
387
374
|
end
|
388
375
|
|
@@ -471,7 +458,7 @@ module Spree
|
|
471
458
|
context "with order in confirm state" do
|
472
459
|
subject do
|
473
460
|
if action == :next
|
474
|
-
|
461
|
+
Spree::Deprecation.silence do
|
475
462
|
api_put action, params
|
476
463
|
end
|
477
464
|
else
|
@@ -31,7 +31,7 @@ module Spree
|
|
31
31
|
it "can change the order a product" do
|
32
32
|
classification = taxon.classifications.find_by(product_id: last_product.id)
|
33
33
|
expect(classification.position).to eq(3)
|
34
|
-
api_put :update, taxon_id: taxon, product_id: last_product, position: 0
|
34
|
+
api_put :update, taxon_id: taxon.id, product_id: last_product.id, position: 0
|
35
35
|
expect(response.status).to eq(200)
|
36
36
|
expect(classification.reload.position).to eq(1)
|
37
37
|
end
|
@@ -39,7 +39,7 @@ module Spree
|
|
39
39
|
it "should touch the taxon" do
|
40
40
|
taxon.update_attributes(updated_at: Time.current - 10.seconds)
|
41
41
|
taxon_last_updated_at = taxon.updated_at
|
42
|
-
api_put :update, taxon_id: taxon, product_id: last_product, position: 0
|
42
|
+
api_put :update, taxon_id: taxon.id, product_id: last_product.id, position: 0
|
43
43
|
taxon.reload
|
44
44
|
expect(taxon_last_updated_at.to_i).to_not eq(taxon.updated_at.to_i)
|
45
45
|
end
|
@@ -62,12 +62,12 @@ module Spree
|
|
62
62
|
end
|
63
63
|
|
64
64
|
it "can add a new line item to an existing order with options" do
|
65
|
-
expect_any_instance_of(LineItem).to receive(:some_option=).with(
|
65
|
+
expect_any_instance_of(LineItem).to receive(:some_option=).with("foobar")
|
66
66
|
api_post :create,
|
67
67
|
line_item: {
|
68
68
|
variant_id: product.master.to_param,
|
69
69
|
quantity: 1,
|
70
|
-
options: { some_option:
|
70
|
+
options: { some_option: "foobar" }
|
71
71
|
}
|
72
72
|
expect(response.status).to eq(201)
|
73
73
|
end
|
@@ -100,11 +100,11 @@ module Spree
|
|
100
100
|
end
|
101
101
|
|
102
102
|
it "can update a line item's options on the order" do
|
103
|
-
expect_any_instance_of(LineItem).to receive(:some_option=).with(
|
103
|
+
expect_any_instance_of(LineItem).to receive(:some_option=).with("foobar")
|
104
104
|
line_item = order.line_items.first
|
105
105
|
api_put :update,
|
106
106
|
id: line_item.id,
|
107
|
-
line_item: { quantity: 1, options: { some_option:
|
107
|
+
line_item: { quantity: 1, options: { some_option: "foobar" } }
|
108
108
|
expect(response.status).to eq(200)
|
109
109
|
end
|
110
110
|
|
@@ -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:
|
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
|
@@ -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
|
-
|
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
|
@@ -324,7 +324,7 @@ module Spree
|
|
324
324
|
end
|
325
325
|
|
326
326
|
it "cannot create a new product with invalid attributes" do
|
327
|
-
api_post :create, product: {}
|
327
|
+
api_post :create, product: { foo: :bar }
|
328
328
|
expect(response.status).to eq(422)
|
329
329
|
expect(json_response["error"]).to eq("Invalid resource. Please fix errors and try again.")
|
330
330
|
errors = json_response["errors"]
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Spree::Api::ShipmentsController, type: :controller do
|
4
4
|
render_views
|
5
|
-
let!(:shipment) { create(:shipment,
|
5
|
+
let!(:shipment) { create(:shipment, inventory_units: [build(:inventory_unit, shipment: nil)]) }
|
6
6
|
let!(:attributes) { [:id, :tracking, :tracking_url, :number, :cost, :shipped_at, :stock_location_name, :order_id, :shipping_rates, :shipping_methods] }
|
7
7
|
|
8
8
|
before do
|
@@ -24,27 +24,14 @@ module Spree
|
|
24
24
|
end
|
25
25
|
|
26
26
|
context "pagination" do
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
it "does not paginate states results when asked not to do so" do
|
33
|
-
expect(@scope).not_to receive(:page)
|
34
|
-
expect(@scope).not_to receive(:per)
|
35
|
-
api_get :index
|
36
|
-
end
|
37
|
-
|
38
|
-
it "paginates when page parameter is passed through" do
|
39
|
-
expect(@scope).to receive(:page).with(1).and_return(@scope)
|
40
|
-
expect(@scope).to receive(:per).with(nil)
|
41
|
-
api_get :index, page: 1
|
42
|
-
end
|
27
|
+
it "can select the next page and control page size" do
|
28
|
+
create(:state)
|
29
|
+
api_get :index, page: 2, per_page: 1
|
43
30
|
|
44
|
-
|
45
|
-
expect(
|
46
|
-
expect(
|
47
|
-
|
31
|
+
expect(json_response["states"].size).to eq(1)
|
32
|
+
expect(json_response["pages"]).to eq(2)
|
33
|
+
expect(json_response["current_page"]).to eq(2)
|
34
|
+
expect(json_response["count"]).to eq(1)
|
48
35
|
end
|
49
36
|
end
|
50
37
|
|
@@ -147,7 +147,7 @@ module Spree
|
|
147
147
|
end
|
148
148
|
|
149
149
|
it "cannot create a new taxon with invalid attributes" do
|
150
|
-
api_post :create, taxonomy_id: taxonomy.id, taxon: {}
|
150
|
+
api_post :create, taxonomy_id: taxonomy.id, taxon: { foo: :bar }
|
151
151
|
expect(response.status).to eq(422)
|
152
152
|
expect(json_response["error"]).to eq("Invalid resource. Please fix errors and try again.")
|
153
153
|
|
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
|
+
version: 1.4.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:
|
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,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.4.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.
|
26
|
+
version: 1.4.0.beta1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rabl
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,6 +67,7 @@ files:
|
|
67
67
|
- ".gitignore"
|
68
68
|
- Gemfile
|
69
69
|
- LICENSE
|
70
|
+
- README.md
|
70
71
|
- Rakefile
|
71
72
|
- app/controllers/spree/api/address_books_controller.rb
|
72
73
|
- app/controllers/spree/api/addresses_controller.rb
|
@@ -278,12 +279,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
278
279
|
version: '0'
|
279
280
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
280
281
|
requirements:
|
281
|
-
- - "
|
282
|
+
- - ">"
|
282
283
|
- !ruby/object:Gem::Version
|
283
|
-
version:
|
284
|
+
version: 1.3.1
|
284
285
|
requirements: []
|
285
286
|
rubyforge_project:
|
286
|
-
rubygems_version: 2.
|
287
|
+
rubygems_version: 2.5.1
|
287
288
|
signing_key:
|
288
289
|
specification_version: 4
|
289
290
|
summary: REST API for the Solidus e-commerce framework.
|