solidus_api 2.4.2 → 2.5.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 +5 -5
- data/README.md +1 -5
- data/Rakefile +7 -8
- data/app/controllers/spree/api/line_items_controller.rb +1 -3
- data/app/controllers/spree/api/orders_controller.rb +1 -1
- data/app/controllers/spree/api/products_controller.rb +1 -1
- data/app/controllers/spree/api/shipments_controller.rb +21 -7
- data/app/controllers/spree/api/stock_items_controller.rb +4 -4
- data/app/controllers/spree/api/taxonomies_controller.rb +1 -0
- data/app/controllers/spree/api/taxons_controller.rb +1 -0
- data/app/controllers/spree/api/variants_controller.rb +13 -4
- data/app/helpers/spree/api/api_helpers.rb +0 -9
- data/app/views/spree/api/shared/_pagination.json.jbuilder +1 -1
- data/app/views/spree/api/shipments/estimated_rates.json.jbuilder +4 -0
- data/app/views/spree/api/variants/_big.json.jbuilder +0 -1
- data/app/views/spree/api/variants/_small.json.jbuilder +6 -1
- data/config/locales/en.yml +0 -6
- data/config/routes.rb +3 -7
- data/lib/spree/api/engine.rb +0 -10
- data/lib/spree_api.rb +0 -1
- data/solidus_api.gemspec +1 -2
- data/spec/controllers/spree/api/resource_controller_spec.rb +9 -9
- data/spec/features/checkout_spec.rb +8 -8
- data/spec/requests/api/address_books_spec.rb +1 -3
- data/spec/requests/spree/api/checkouts_controller_spec.rb +4 -5
- data/spec/requests/spree/api/config_controller_spec.rb +2 -2
- data/spec/requests/spree/api/orders_controller_spec.rb +27 -11
- data/spec/requests/spree/api/products_controller_spec.rb +1 -1
- data/spec/requests/spree/api/return_authorizations_controller_spec.rb +13 -13
- data/spec/requests/spree/api/shipments_controller_spec.rb +66 -4
- data/spec/requests/spree/api/stock_items_controller_spec.rb +4 -4
- data/spec/requests/spree/api/stock_locations_controller_spec.rb +7 -7
- data/spec/requests/spree/api/taxonomies_controller_spec.rb +1 -0
- data/spec/requests/spree/api/taxons_controller_spec.rb +3 -2
- data/spec/requests/spree/api/variants_controller_spec.rb +26 -0
- data/spec/spec_helper.rb +13 -23
- metadata +11 -41
- data/Gemfile +0 -5
- data/app/controllers/spree/api/stock_transfers_controller.rb +0 -20
- data/app/controllers/spree/api/transfer_items_controller.rb +0 -42
- data/app/views/spree/api/errors/variant_not_in_stock_transfer.json.jbuilder +0 -1
- data/app/views/spree/api/stock_transfers/receive.json.jbuilder +0 -4
- data/app/views/spree/api/transfer_items/_transfer_item.json.jbuilder +0 -5
- data/app/views/spree/api/transfer_items/show.json.jbuilder +0 -1
- data/spec/requests/spree/api/stock_transfers_controller_spec.rb +0 -97
- data/spec/requests/spree/api/transfer_items_controller_spec.rb +0 -150
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0f786be0873e048ce3be477e79b3e77fea2edc7b831abddcff8910b353ec8180
|
4
|
+
data.tar.gz: 78a37e6abfb77386b5fac0c0465c590337bb23d6ba930fc146583e8bad473195
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ba8a8df12bdb893791882ab855ca8912163ce0c9bf750effe7d1b46ab6ff1b0bff0ee64f787fa317c9047db2db89f4d92fa3ef6c403f4c1e1bb989123770d0c
|
7
|
+
data.tar.gz: 6c2f3890c3dfa009f3d1607b648d3109b26be3a52209a492b7162ca985633e79ff6ad0b3189c72dbcbf3d5ae62cfefcfabfddfb15b39235a637fca596eb7b765
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -2,15 +2,14 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'rake/testtask'
|
4
4
|
require 'rspec/core/rake_task'
|
5
|
-
require 'spree/testing_support/
|
6
|
-
require 'rails/all'
|
5
|
+
require 'spree/testing_support/dummy_app/rake_tasks'
|
7
6
|
|
8
7
|
RSpec::Core::RakeTask.new
|
9
|
-
|
10
8
|
task default: :spec
|
11
9
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
10
|
+
DummyApp::RakeTasks.new(
|
11
|
+
gem_root: File.expand_path('../', __FILE__),
|
12
|
+
lib_name: 'solidus_api'
|
13
|
+
)
|
14
|
+
|
15
|
+
task test_app: 'db:reset'
|
@@ -12,9 +12,7 @@ module Spree
|
|
12
12
|
@line_item = @order.contents.add(
|
13
13
|
variant,
|
14
14
|
params[:line_item][:quantity] || 1,
|
15
|
-
|
16
|
-
stock_location_quantities: params[:line_item][:stock_location_quantities]
|
17
|
-
}.merge({ options: line_item_params[:options].to_h })
|
15
|
+
options: line_item_params[:options].to_h
|
18
16
|
)
|
19
17
|
|
20
18
|
if @line_item.errors.empty?
|
@@ -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
|
-
around_action :lock_order, except: [:create, :mine, :current, :index]
|
13
|
+
around_action :lock_order, except: [:create, :mine, :current, :index, :show]
|
14
14
|
|
15
15
|
# Dynamically defines our stores checkout steps to ensure we check authorization on each step.
|
16
16
|
Spree::Order.checkout_steps.keys.each do |step|
|
@@ -2,9 +2,9 @@ module Spree
|
|
2
2
|
module Api
|
3
3
|
class ShipmentsController < Spree::Api::BaseController
|
4
4
|
before_action :find_order_on_create, only: :create
|
5
|
-
before_action :find_shipment, only: [:update, :ship, :ready, :add, :remove]
|
5
|
+
before_action :find_shipment, only: [:update, :ship, :ready, :add, :remove, :estimated_rates, :select_shipping_method]
|
6
6
|
before_action :load_transfer_params, only: [:transfer_to_location, :transfer_to_shipment]
|
7
|
-
around_action :lock_order, except: [:mine]
|
7
|
+
around_action :lock_order, except: [:mine, :estimated_rates]
|
8
8
|
before_action :update_shipment, only: [:ship, :ready, :add, :remove]
|
9
9
|
|
10
10
|
def mine
|
@@ -22,6 +22,20 @@ module Spree
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
+
def estimated_rates
|
26
|
+
authorize! :update, @shipment
|
27
|
+
estimator = Spree::Config.stock.estimator_class.new
|
28
|
+
@shipping_rates = estimator.shipping_rates(@shipment.to_package, false)
|
29
|
+
end
|
30
|
+
|
31
|
+
def select_shipping_method
|
32
|
+
authorize! :update, @shipment
|
33
|
+
shipping_method = Spree::ShippingMethod.find(params.require(:shipping_method_id))
|
34
|
+
@shipment.select_shipping_method(shipping_method)
|
35
|
+
@order.recalculate
|
36
|
+
respond_with(@shipment, default_template: :show)
|
37
|
+
end
|
38
|
+
|
25
39
|
def create
|
26
40
|
authorize! :create, Shipment
|
27
41
|
quantity = params[:quantity].to_i
|
@@ -70,13 +84,13 @@ module Spree
|
|
70
84
|
def remove
|
71
85
|
quantity = params[:quantity].to_i
|
72
86
|
|
73
|
-
if @shipment.
|
87
|
+
if @shipment.shipped? || @shipment.canceled?
|
88
|
+
@shipment.errors.add(:base, :cannot_remove_items_shipment_state, state: @shipment.state)
|
89
|
+
invalid_resource!(@shipment)
|
90
|
+
else
|
74
91
|
@shipment.order.contents.remove(variant, quantity, { shipment: @shipment })
|
75
92
|
@shipment.reload if @shipment.persisted?
|
76
93
|
respond_with(@shipment, default_template: :show)
|
77
|
-
else
|
78
|
-
@shipment.errors.add(:base, :cannot_remove_items_shipment_state, state: @shipment.state)
|
79
|
-
invalid_resource!(@shipment)
|
80
94
|
end
|
81
95
|
end
|
82
96
|
|
@@ -97,7 +111,7 @@ module Spree
|
|
97
111
|
)
|
98
112
|
|
99
113
|
if fulfilment_changer.run!
|
100
|
-
render json: { success: true, message:
|
114
|
+
render json: { success: true, message: t('spree.shipment_transfer_success') }, status: :accepted
|
101
115
|
else
|
102
116
|
render json: { success: false, message: fulfilment_changer.errors.full_messages.to_sentence }, status: :accepted
|
103
117
|
end
|
@@ -3,7 +3,7 @@ module Spree
|
|
3
3
|
class StockItemsController < Spree::Api::BaseController
|
4
4
|
before_action :load_stock_location, only: [:index, :show, :create]
|
5
5
|
|
6
|
-
rescue_from StockLocation::InvalidMovementError, with: :render_stock_items_error
|
6
|
+
rescue_from Spree::StockLocation::InvalidMovementError, with: :render_stock_items_error
|
7
7
|
|
8
8
|
def index
|
9
9
|
@stock_items = paginate(scope.ransack(params[:q]).result)
|
@@ -49,7 +49,7 @@ module Spree
|
|
49
49
|
|
50
50
|
def destroy
|
51
51
|
@stock_item = Spree::StockItem.accessible_by(current_ability, :destroy).find(params[:id])
|
52
|
-
@stock_item.
|
52
|
+
@stock_item.discard
|
53
53
|
respond_with(@stock_item, status: 204)
|
54
54
|
end
|
55
55
|
|
@@ -75,14 +75,14 @@ module Spree
|
|
75
75
|
|
76
76
|
def adjust_stock_item_count_on_hand(count_on_hand_adjustment)
|
77
77
|
if @stock_item.count_on_hand + count_on_hand_adjustment < 0
|
78
|
-
raise StockLocation::InvalidMovementError.new(
|
78
|
+
raise StockLocation::InvalidMovementError.new(t('spree.stock_not_below_zero'))
|
79
79
|
end
|
80
80
|
@stock_movement = @stock_location.move(@stock_item.variant, count_on_hand_adjustment, current_api_user)
|
81
81
|
@stock_item = @stock_movement.stock_item
|
82
82
|
end
|
83
83
|
|
84
84
|
def render_stock_items_error
|
85
|
-
render json: { error:
|
85
|
+
render json: { error: t('spree.stock_not_below_zero') }, status: 422
|
86
86
|
end
|
87
87
|
end
|
88
88
|
end
|
@@ -15,6 +15,7 @@ module Spree
|
|
15
15
|
|
16
16
|
# Because JSTree wants parameters in a *slightly* different format
|
17
17
|
def jstree
|
18
|
+
Spree::Deprecation.warn("Please don't use `/api/taxonomies/:taxonomy_id/jstree` endpoint. It is deprecated and will be removed in the next future.", caller)
|
18
19
|
show
|
19
20
|
end
|
20
21
|
|
@@ -15,7 +15,7 @@ module Spree
|
|
15
15
|
|
16
16
|
def destroy
|
17
17
|
@variant = scope.accessible_by(current_ability, :destroy).find(params[:id])
|
18
|
-
@variant.
|
18
|
+
@variant.discard
|
19
19
|
respond_with(@variant, status: 204)
|
20
20
|
end
|
21
21
|
|
@@ -23,7 +23,7 @@ module Spree
|
|
23
23
|
# we render on the view so we better update it any time a node is included
|
24
24
|
# or removed from the views.
|
25
25
|
def index
|
26
|
-
@variants = scope.includes(
|
26
|
+
@variants = scope.includes(include_list)
|
27
27
|
.ransack(params[:q]).result
|
28
28
|
|
29
29
|
@variants = paginate(@variants)
|
@@ -34,7 +34,7 @@ module Spree
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def show
|
37
|
-
@variant = scope.includes(
|
37
|
+
@variant = scope.includes(include_list)
|
38
38
|
.find(params[:id])
|
39
39
|
respond_with(@variant)
|
40
40
|
end
|
@@ -66,14 +66,23 @@ module Spree
|
|
66
66
|
end
|
67
67
|
|
68
68
|
in_stock_only = ActiveRecord::Type::Boolean.new.cast(params[:in_stock_only])
|
69
|
+
suppliable_only = ActiveRecord::Type::Boolean.new.cast(params[:suppliable_only])
|
69
70
|
variants = variants.accessible_by(current_ability, :read)
|
70
|
-
|
71
|
+
if in_stock_only || cannot?(:view_out_of_stock, Spree::Variant)
|
72
|
+
variants = variants.in_stock
|
73
|
+
elsif suppliable_only
|
74
|
+
variants = variants.suppliable
|
75
|
+
end
|
71
76
|
variants
|
72
77
|
end
|
73
78
|
|
74
79
|
def variant_params
|
75
80
|
params.require(:variant).permit(permitted_variant_attributes)
|
76
81
|
end
|
82
|
+
|
83
|
+
def include_list
|
84
|
+
[{ option_values: :option_type }, :product, :default_price, :images, { stock_items: :stock_location }]
|
85
|
+
end
|
77
86
|
end
|
78
87
|
end
|
79
88
|
end
|
@@ -31,9 +31,6 @@ module Spree
|
|
31
31
|
:promotion_attributes,
|
32
32
|
:store_attributes,
|
33
33
|
:store_credit_history_attributes,
|
34
|
-
:stock_transfer_attributes,
|
35
|
-
:transfer_item_attributes,
|
36
|
-
:transfer_item_variant_attributes,
|
37
34
|
:variant_property_attributes
|
38
35
|
]
|
39
36
|
|
@@ -177,12 +174,6 @@ module Spree
|
|
177
174
|
:display_event_date
|
178
175
|
]
|
179
176
|
|
180
|
-
@@stock_transfer_attributes = [:id, :number]
|
181
|
-
|
182
|
-
@@transfer_item_attributes = [:id, :expected_quantity, :received_quantity]
|
183
|
-
|
184
|
-
@@transfer_item_variant_attributes = []
|
185
|
-
|
186
177
|
def variant_attributes
|
187
178
|
if @current_user_roles && @current_user_roles.include?("admin")
|
188
179
|
@@variant_attributes + [:cost_price]
|
@@ -1,7 +1,6 @@
|
|
1
1
|
json.cache! [I18n.locale, Spree::StockLocation.accessible_by(current_ability), variant] do
|
2
2
|
json.(variant, *variant_attributes)
|
3
3
|
json.partial!("spree/api/variants/small", variant: variant)
|
4
|
-
json.total_on_hand(variant.total_on_hand)
|
5
4
|
json.variant_properties(variant.variant_properties) do |variant_property|
|
6
5
|
json.(variant_property, *variant_property_attributes)
|
7
6
|
end
|
@@ -5,7 +5,12 @@ json.cache! [I18n.locale, variant] do
|
|
5
5
|
json.track_inventory(variant.should_track_inventory?)
|
6
6
|
json.in_stock(variant.in_stock?)
|
7
7
|
json.is_backorderable(variant.is_backorderable?)
|
8
|
-
|
8
|
+
|
9
|
+
# We can't represent Float::INFINITY in JSON
|
10
|
+
# Under JSON this woulb be NULL
|
11
|
+
# Under oj this would error
|
12
|
+
json.total_on_hand(variant.should_track_inventory? ? variant.total_on_hand : nil)
|
13
|
+
|
9
14
|
json.is_destroyed(variant.destroyed?)
|
10
15
|
json.option_values(variant.option_values) do |option_value|
|
11
16
|
json.(option_value, *option_value_attributes)
|
data/config/locales/en.yml
CHANGED
@@ -8,12 +8,6 @@ en:
|
|
8
8
|
resource_not_found: "The resource you were looking for could not be found."
|
9
9
|
gateway_error: "There was a problem with the payment gateway: %{text}"
|
10
10
|
delete_restriction_error: "Cannot delete record."
|
11
|
-
access: "API Access"
|
12
|
-
key: "Key"
|
13
|
-
clear_key: "Clear key"
|
14
|
-
regenerate_key: "Regenerate Key"
|
15
|
-
no_key: "No key"
|
16
|
-
generate_key: "Generate API key"
|
17
11
|
key_generated: "Key generated"
|
18
12
|
key_cleared: "Key cleared"
|
19
13
|
order:
|
data/config/routes.rb
CHANGED
@@ -82,6 +82,9 @@ Spree::Core::Engine.routes.draw do
|
|
82
82
|
end
|
83
83
|
|
84
84
|
member do
|
85
|
+
get :estimated_rates
|
86
|
+
put :select_shipping_method
|
87
|
+
|
85
88
|
put :ready
|
86
89
|
put :ship
|
87
90
|
put :add
|
@@ -120,13 +123,6 @@ Spree::Core::Engine.routes.draw do
|
|
120
123
|
|
121
124
|
resources :stock_items, only: [:index, :update, :destroy]
|
122
125
|
|
123
|
-
resources :stock_transfers, only: [] do
|
124
|
-
member do
|
125
|
-
post :receive
|
126
|
-
end
|
127
|
-
resources :transfer_items, only: [:create, :update, :destroy]
|
128
|
-
end
|
129
|
-
|
130
126
|
resources :stores
|
131
127
|
|
132
128
|
resources :store_credit_events, only: [] do
|
data/lib/spree/api/engine.rb
CHANGED
@@ -9,16 +9,6 @@ module Spree
|
|
9
9
|
initializer "spree.api.environment", before: :load_config_initializers do |_app|
|
10
10
|
Spree::Api::Config = Spree::ApiConfiguration.new
|
11
11
|
end
|
12
|
-
|
13
|
-
initializer "spree.api.versioncake" do |_app|
|
14
|
-
VersionCake.setup do |config|
|
15
|
-
config.resources do |r|
|
16
|
-
r.resource %r{.*}, [], [], [1]
|
17
|
-
end
|
18
|
-
config.missing_version = 1
|
19
|
-
config.extraction_strategy = :http_header
|
20
|
-
end
|
21
|
-
end
|
22
12
|
end
|
23
13
|
end
|
24
14
|
end
|
data/lib/spree_api.rb
CHANGED
data/solidus_api.gemspec
CHANGED
@@ -21,8 +21,7 @@ Gem::Specification.new do |gem|
|
|
21
21
|
gem.required_rubygems_version = '>= 1.8.23'
|
22
22
|
|
23
23
|
gem.add_dependency 'solidus_core', gem.version
|
24
|
-
gem.add_dependency 'versioncake', '~> 3.0'
|
25
24
|
gem.add_dependency 'responders'
|
26
25
|
gem.add_dependency 'jbuilder', '~> 2.6'
|
27
|
-
gem.add_dependency 'kaminari', '
|
26
|
+
gem.add_dependency 'kaminari-activerecord', '~> 1.1'
|
28
27
|
end
|
@@ -51,14 +51,14 @@ module Spree
|
|
51
51
|
|
52
52
|
it "returns no widgets" do
|
53
53
|
get :index, params: { token: user.spree_api_key }, as: :json
|
54
|
-
expect(response).to
|
54
|
+
expect(response).to be_successful
|
55
55
|
expect(json_response['widgets']).to be_blank
|
56
56
|
end
|
57
57
|
|
58
58
|
context "it has authorization to read widgets" do
|
59
59
|
it "returns widgets" do
|
60
60
|
get :index, params: { token: admin_user.spree_api_key }, as: :json
|
61
|
-
expect(response).to
|
61
|
+
expect(response).to be_successful
|
62
62
|
expect(json_response['widgets']).to include(hash_including(
|
63
63
|
'name' => 'a widget',
|
64
64
|
'position' => 1
|
@@ -70,26 +70,26 @@ module Spree
|
|
70
70
|
|
71
71
|
it "returns both widgets from comma separated string" do
|
72
72
|
get :index, params: { ids: [widget.id, widget2.id].join(','), token: admin_user.spree_api_key }, as: :json
|
73
|
-
expect(response).to
|
73
|
+
expect(response).to be_successful
|
74
74
|
expect(json_response['widgets'].size).to eq 2
|
75
75
|
end
|
76
76
|
|
77
77
|
it "returns both widgets from multiple arguments" do
|
78
78
|
get :index, params: { ids: [widget.id, widget2.id], token: admin_user.spree_api_key }, as: :json
|
79
|
-
expect(response).to
|
79
|
+
expect(response).to be_successful
|
80
80
|
expect(json_response['widgets'].size).to eq 2
|
81
81
|
end
|
82
82
|
|
83
83
|
it "returns one requested widgets" do
|
84
84
|
get :index, params: { ids: widget2.id.to_s, token: admin_user.spree_api_key }, as: :json
|
85
|
-
expect(response).to
|
85
|
+
expect(response).to be_successful
|
86
86
|
expect(json_response['widgets'].size).to eq 1
|
87
87
|
expect(json_response['widgets'][0]['id']).to eq widget2.id
|
88
88
|
end
|
89
89
|
|
90
90
|
it "returns no widgets if empty" do
|
91
91
|
get :index, params: { ids: '', token: admin_user.spree_api_key }, as: :json
|
92
|
-
expect(response).to
|
92
|
+
expect(response).to be_successful
|
93
93
|
expect(json_response['widgets']).to be_empty
|
94
94
|
end
|
95
95
|
end
|
@@ -107,7 +107,7 @@ module Spree
|
|
107
107
|
context "it has authorization read widgets" do
|
108
108
|
it "returns widget details" do
|
109
109
|
get :show, params: { id: widget.to_param, token: admin_user.spree_api_key }, as: :json
|
110
|
-
expect(response).to
|
110
|
+
expect(response).to be_successful
|
111
111
|
expect(json_response['name']).to eq 'a widget'
|
112
112
|
end
|
113
113
|
end
|
@@ -122,7 +122,7 @@ module Spree
|
|
122
122
|
context "it is allowed to view a new widget" do
|
123
123
|
it "can learn how to create a new widget" do
|
124
124
|
get :new, params: { token: admin_user.spree_api_key }, as: :json
|
125
|
-
expect(response).to
|
125
|
+
expect(response).to be_successful
|
126
126
|
expect(json_response["attributes"]).to eq(['name'])
|
127
127
|
end
|
128
128
|
end
|
@@ -159,7 +159,7 @@ module Spree
|
|
159
159
|
context "it is authorized to update widgets" do
|
160
160
|
it "can update a widget" do
|
161
161
|
put :update, params: { id: widget.to_param, widget: { name: "another widget" }, token: admin_user.spree_api_key }, as: :json
|
162
|
-
expect(response).to
|
162
|
+
expect(response).to be_successful
|
163
163
|
expect(json_response['name']).to eq 'another widget'
|
164
164
|
expect(widget.reload.name).to eq 'another widget'
|
165
165
|
end
|
@@ -3,16 +3,16 @@ require 'spec_helper'
|
|
3
3
|
module Spree
|
4
4
|
describe 'Api Feature Specs', type: :request do
|
5
5
|
before { Spree::Api::Config[:requires_authentication] = false }
|
6
|
-
let!(:promotion) {
|
6
|
+
let!(:promotion) { FactoryBot.create(:promotion, :with_order_adjustment, code: 'foo', weighted_order_adjustment_amount: 10) }
|
7
7
|
let(:promotion_code) { promotion.codes.first }
|
8
|
-
let!(:store) {
|
9
|
-
let(:bill_address) {
|
10
|
-
let(:ship_address) {
|
11
|
-
let(:variant_1) {
|
12
|
-
let(:variant_2) {
|
13
|
-
let(:payment_method) {
|
8
|
+
let!(:store) { FactoryBot.create(:store) }
|
9
|
+
let(:bill_address) { FactoryBot.create(:address) }
|
10
|
+
let(:ship_address) { FactoryBot.create(:address) }
|
11
|
+
let(:variant_1) { FactoryBot.create(:variant, price: 100.00) }
|
12
|
+
let(:variant_2) { FactoryBot.create(:variant, price: 200.00) }
|
13
|
+
let(:payment_method) { FactoryBot.create(:check_payment_method) }
|
14
14
|
let!(:shipping_method) do
|
15
|
-
|
15
|
+
FactoryBot.create(:shipping_method).tap do |shipping_method|
|
16
16
|
shipping_method.zones.first.zone_members.create!(zoneable: ship_address.country)
|
17
17
|
shipping_method.calculator.set_preference(:amount, 10.0)
|
18
18
|
end
|
@@ -119,9 +119,7 @@ module Spree
|
|
119
119
|
context 'on behalf of address book owner' do
|
120
120
|
context 'with ability' do
|
121
121
|
before do
|
122
|
-
Spree::
|
123
|
-
config.assign_permissions 'Prefect', [Spree::PermissionSets::UserManagement]
|
124
|
-
end
|
122
|
+
Spree::Config.roles.assign_permissions 'Prefect', [Spree::PermissionSets::UserManagement]
|
125
123
|
create(:user, spree_api_key: 'galleon', spree_roles: [build(:role, name: 'Prefect')])
|
126
124
|
end
|
127
125
|
|
@@ -103,7 +103,7 @@ module Spree
|
|
103
103
|
|
104
104
|
# Regression Spec for https://github.com/spree/spree/issues/5389 and https://github.com/spree/spree/issues/5880
|
105
105
|
it "can update addresses but not transition to delivery w/o shipping setup" do
|
106
|
-
Spree::ShippingMethod.
|
106
|
+
Spree::ShippingMethod.all.each(&:really_destroy!)
|
107
107
|
put spree.api_checkout_path(order),
|
108
108
|
params: { order_token: order.guest_token, order: {
|
109
109
|
bill_address_attributes: address,
|
@@ -166,7 +166,6 @@ module Spree
|
|
166
166
|
end
|
167
167
|
end
|
168
168
|
|
169
|
-
|
170
169
|
it "returns errors when source is required and missing" do
|
171
170
|
order.update_column(:state, "payment")
|
172
171
|
put spree.api_checkout_path(order.to_param), params: { order_token: order.guest_token, order: { payments_attributes: [{ payment_method_id: @payment_method.id }] } }
|
@@ -380,7 +379,7 @@ module Spree
|
|
380
379
|
order.update_column(:email, "spree@example.com")
|
381
380
|
put spree.next_api_checkout_path(order), params: { order_token: order.guest_token }
|
382
381
|
expect(response.status).to eq(422)
|
383
|
-
expect(json_response["errors"]["base"]).to include(
|
382
|
+
expect(json_response["errors"]["base"]).to include(I18n.t('spree.there_are_no_items_for_this_order'))
|
384
383
|
end
|
385
384
|
|
386
385
|
it "can transition an order to the next state" do
|
@@ -426,7 +425,7 @@ module Spree
|
|
426
425
|
it "returns a sensible error when no payment method is specified" do
|
427
426
|
# put :complete, id: order.to_param, order_token: order.token, order: {}
|
428
427
|
subject
|
429
|
-
expect(json_response["errors"]["base"]).to include(
|
428
|
+
expect(json_response["errors"]["base"]).to include(I18n.t('spree.no_payment_found'))
|
430
429
|
end
|
431
430
|
|
432
431
|
context "with mismatched expected_total" do
|
@@ -436,7 +435,7 @@ module Spree
|
|
436
435
|
# put :complete, id: order.to_param, order_token: order.token, expected_total: order.total + 1
|
437
436
|
subject
|
438
437
|
expect(response.status).to eq(400)
|
439
|
-
expect(json_response['errors']['expected_total']).to include(
|
438
|
+
expect(json_response['errors']['expected_total']).to include(I18n.t('spree.api.order.expected_total_mismatch'))
|
440
439
|
end
|
441
440
|
end
|
442
441
|
end
|
@@ -10,13 +10,13 @@ module Spree
|
|
10
10
|
|
11
11
|
it "returns Spree::Money settings" do
|
12
12
|
get '/api/config/money'
|
13
|
-
expect(response).to
|
13
|
+
expect(response).to be_successful
|
14
14
|
expect(json_response["symbol"]).to eq("$")
|
15
15
|
end
|
16
16
|
|
17
17
|
it "returns some configuration settings" do
|
18
18
|
get '/api/config'
|
19
|
-
expect(response).to
|
19
|
+
expect(response).to be_successful
|
20
20
|
expect(json_response["default_country_iso"]).to eq("US")
|
21
21
|
expect(json_response["default_country_id"]).to eq(default_country.id)
|
22
22
|
end
|