spree_api 4.1.15 → 4.2.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/spree/api/v2/storefront/order_concern.rb +4 -0
  3. data/app/controllers/spree/api/base_controller.rb +1 -3
  4. data/app/controllers/spree/api/errors_controller.rb +1 -1
  5. data/app/controllers/spree/api/v1/taxons_controller.rb +6 -1
  6. data/app/controllers/spree/api/v1/users_controller.rb +35 -9
  7. data/app/controllers/spree/api/v2/base_controller.rb +1 -6
  8. data/app/controllers/spree/api/v2/storefront/account/orders_controller.rb +2 -2
  9. data/app/controllers/spree/api/v2/storefront/checkout_controller.rb +2 -1
  10. data/app/controllers/spree/api/v2/storefront/order_status_controller.rb +1 -1
  11. data/app/helpers/spree/api/api_helpers.rb +3 -2
  12. data/app/models/spree/api_dependencies.rb +1 -11
  13. data/app/serializers/spree/v2/storefront/cart_serializer.rb +1 -3
  14. data/app/serializers/spree/v2/storefront/line_item_serializer.rb +1 -2
  15. data/app/serializers/spree/v2/storefront/payment_serializer.rb +1 -1
  16. data/app/serializers/spree/v2/storefront/product_serializer.rb +2 -2
  17. data/app/serializers/spree/v2/storefront/shipment_serializer.rb +1 -3
  18. data/app/serializers/spree/v2/storefront/store_credit_serializer.rb +1 -1
  19. data/app/serializers/spree/v2/storefront/variant_serializer.rb +2 -2
  20. data/app/views/spree/api/v1/products/show.rabl +4 -0
  21. data/config/initializers/doorkeeper.rb +0 -2
  22. data/config/routes.rb +0 -2
  23. data/docs/v2/storefront/index.yaml +82 -39
  24. data/lib/spree/api/controller_setup.rb +0 -1
  25. data/lib/spree/api/testing_support/v2/base.rb +1 -1
  26. data/lib/spree/api/testing_support/v2/current_order.rb +0 -6
  27. data/spree_api.gemspec +1 -1
  28. metadata +13 -18
  29. data/app/controllers/spree/api/v2/storefront/account/addresses_controller.rb +0 -77
  30. data/app/controllers/spree/api/v2/storefront/stores_controller.rb +0 -27
  31. data/app/serializers/spree/v2/storefront/stock_location_serializer.rb +0 -11
  32. data/app/serializers/spree/v2/storefront/store_credit_category_serializer.rb +0 -11
  33. data/app/serializers/spree/v2/storefront/store_serializer.rb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2be761f149e4164aa05c5c66f12ea9e05a78ea53e2e9feded59c59227a636e28
4
- data.tar.gz: fbccd84139146dc84a64290d1eee263ccfd38fe3625485caedaef03c63aa705c
3
+ metadata.gz: 3d7a31de48e37ea579244e2c62fb47e2891f5663b095aa8f49de99ecc24abc1e
4
+ data.tar.gz: 6d5470cb5181210801f5210f46b1e0fc7a3d704b8cd930f372a0544b5861713b
5
5
  SHA512:
6
- metadata.gz: a31ea55d0cd832d8fbe09282014b425c4962860779ddd75b779abd45cfc3ff9b99cf6794fdc9d38707b882f7af80f31d27fb601168f3ffa7ab7fade84294df53
7
- data.tar.gz: 3bb161972fdc08e3f1ffa8a142d3d28f1e8d880453867ddb0f80d80c6d0de095bb20eba303c86b496588061855b8c43ad74f04d99c899616682795bb7c5e22d1
6
+ metadata.gz: 0b79cb583334e0813cde900718b6062a3601761aba2093159846a383c684219735ebf6861056a24376701d072e766eb74b2a280ef9dacf0f4993f67237dc6c01
7
+ data.tar.gz: 2429b6091f2e256743136cef85b42a65cfd53f9daadc6b1a5f3945c0fba1b9a1f882491edc85f0cf8a22cd7a7ee8dbed30c174f53e3d139b7d62eda8fe91c4a4
@@ -34,6 +34,10 @@ module Spree
34
34
  )
35
35
  end
36
36
 
37
+ def supported_currencies
38
+ current_store.supported_currencies_list
39
+ end
40
+
37
41
  def serialize_order(order)
38
42
  resource_serializer.new(order.reload, include: resource_includes, fields: sparse_fields).serializable_hash
39
43
  end
@@ -2,9 +2,7 @@ require_dependency 'spree/api/controller_setup'
2
2
 
3
3
  module Spree
4
4
  module Api
5
- class BaseController < ActionController::Base
6
- protect_from_forgery unless: -> { request.format.json? || request.format.xml? }
7
-
5
+ class BaseController < ActionController::API
8
6
  include Spree::Api::ControllerSetup
9
7
  include Spree::Core::ControllerHelpers::Store
10
8
  include Spree::Core::ControllerHelpers::StrongParameters
@@ -1,6 +1,6 @@
1
1
  module Spree
2
2
  module Api
3
- class ErrorsController < ActionController::Base
3
+ class ErrorsController < ActionController::API
4
4
  def render_404
5
5
  render 'spree/api/errors/not_found', status: 404
6
6
  end
@@ -74,7 +74,12 @@ module Spree
74
74
 
75
75
  def taxonomy
76
76
  if params[:taxonomy_id].present?
77
- @taxonomy ||= Spree::Taxonomy.accessible_by(current_ability, :show).find(params[:taxonomy_id])
77
+ @taxonomy ||=
78
+ if defined?(SpreeGlobalize)
79
+ Spree::Taxonomy.includes(:translations, taxons: [:translations]).accessible_by(current_ability, :show).find(params[:taxonomy_id])
80
+ else
81
+ Spree::Taxonomy.accessible_by(current_ability, :show).find(params[:taxonomy_id])
82
+ end
78
83
  end
79
84
  end
80
85
 
@@ -5,22 +5,48 @@ module Spree
5
5
  rescue_from Spree::Core::DestroyWithOrdersError, with: :error_during_processing
6
6
 
7
7
  def index
8
- @users = Spree.user_class.accessible_by(current_ability, :show)
8
+ users
9
9
 
10
10
  if params[:ids]
11
- @users = @users.where(id: params[:ids])
12
- elsif params[:q]
13
- users_with_ship_address = @users.with_address(params[:q][:ship_address_firstname_start])
14
- users_with_bill_address = @users.with_address(params[:q][:ship_address_firstname_start], :bill_address)
15
-
16
- users_with_addresses_ids = (users_with_ship_address.ids + users_with_bill_address.ids).compact.uniq
17
- @users = @users.with_email_or_addresses_ids(params[:q][:email_start], users_with_addresses_ids)
11
+ load_users_by_ids
12
+ elsif params.dig(:q, :ship_address_firstname_start)
13
+ load_users_by_address
14
+ elsif params.dig(:q, :email_start)
15
+ load_users_by_email
18
16
  end
19
17
 
18
+ prepare_index_response
19
+ respond_with(@users)
20
+ end
21
+
22
+ def users
23
+ @users ||= Spree.user_class.accessible_by(current_ability, :show)
24
+ end
25
+
26
+ def load_users_by_ids
27
+ @users = @users.where(id: params[:ids])
28
+ end
29
+
30
+ def load_users_by_address
31
+ address_params = params[:q][:ship_address_firstname_start] ||
32
+ params[:q][:ship_address_lastname_start] ||
33
+ params[:q][:bill_address_firstname_start] ||
34
+ params[:q][:bill_address_lastname_start]
35
+ @users = @users.with_email_or_address(params[:q][:email_start], address_params)
36
+ end
37
+
38
+ def load_users_by_email
39
+ @users = @users.with_email(params[:q][:email_start])
40
+ end
41
+
42
+ def paginate_users
20
43
  @users = @users.page(params[:page]).per(params[:per_page])
44
+ end
45
+
46
+ def prepare_index_response
47
+ paginate_users
21
48
  expires_in 15.minutes, public: true
22
49
  headers['Surrogate-Control'] = "max-age=#{15.minutes}"
23
- respond_with(@users)
24
50
  end
25
51
 
26
52
  def show
@@ -53,12 +53,7 @@ module Spree
53
53
  end
54
54
 
55
55
  def spree_current_user
56
- return nil unless doorkeeper_token
57
- return @spree_current_user if @spree_current_user
58
-
59
- doorkeeper_authorize!
60
-
61
- @spree_current_user ||= Spree.user_class.find_by(id: doorkeeper_token.resource_owner_id)
56
+ @spree_current_user ||= Spree.user_class.find_by(id: doorkeeper_token.resource_owner_id) if doorkeeper_token
62
57
  end
63
58
 
64
59
  def spree_authorize!(action, subject, *args)
@@ -35,11 +35,11 @@ module Spree
35
35
  end
36
36
 
37
37
  def collection_serializer
38
- Spree::Api::Dependencies.storefront_order_serializer.constantize
38
+ Spree::Api::Dependencies.storefront_cart_serializer.constantize
39
39
  end
40
40
 
41
41
  def resource_serializer
42
- Spree::Api::Dependencies.storefront_order_serializer.constantize
42
+ Spree::Api::Dependencies.storefront_cart_serializer.constantize
43
43
  end
44
44
 
45
45
  def collection_finder
@@ -125,7 +125,8 @@ module Spree
125
125
  def serialize_shipping_rates(shipments)
126
126
  shipping_rates_serializer.new(
127
127
  shipments,
128
- include: [:shipping_rates, :stock_location]
128
+ include: [:shipping_rates],
129
+ params: { show_rates: true }
129
130
  ).serializable_hash
130
131
  end
131
132
  end
@@ -29,7 +29,7 @@ module Spree
29
29
  end
30
30
 
31
31
  def ensure_order_token
32
- raise ActiveRecord::RecordNotFound unless order_token.present?
32
+ raise ActiveRecord::RecordNotFound unless order_token
33
33
  end
34
34
  end
35
35
  end
@@ -161,8 +161,9 @@ module Spree
161
161
 
162
162
  @@store_attributes = [
163
163
  :id, :name, :url, :meta_description, :meta_keywords, :seo_title,
164
- :mail_from_address, :default_currency, :code, :default,
165
- :facebook, :twitter, :instagram
164
+ :mail_from_address, :customer_support_email, :default_currency,
165
+ :code, :default, :facebook, :twitter, :instagram,
166
+ :supported_currencies
166
167
  ]
167
168
 
168
169
  @@tag_attributes = [:id, :name]
@@ -13,9 +13,7 @@ module Spree
13
13
  :storefront_country_serializer, :storefront_current_order_finder, :storefront_completed_order_finder, :storefront_order_sorter,
14
14
  :storefront_collection_paginator, :storefront_user_serializer, :storefront_products_sorter, :storefront_products_finder,
15
15
  :storefront_product_serializer, :storefront_taxon_serializer, :storefront_taxon_finder, :storefront_find_by_variant_finder,
16
- :storefront_cart_update_service, :storefront_cart_estimate_shipping_rates_service, :storefront_estimated_shipment_serializer,
17
- :storefront_store_serializer, :storefront_address_serializer, :storefront_order_serializer,
18
- :storefront_account_create_address_service, :storefront_account_update_address_service, :storefront_address_finder
16
+ :storefront_cart_update_service, :storefront_cart_estimate_shipping_rates_service, :storefront_estimated_shipment_serializer
19
17
  ].freeze
20
18
 
21
19
  attr_accessor *INJECTION_POINTS
@@ -50,12 +48,7 @@ module Spree
50
48
  @storefront_checkout_remove_store_credit_service = Spree::Dependencies.checkout_remove_store_credit_service
51
49
  @storefront_checkout_get_shipping_rates_service = Spree::Dependencies.checkout_get_shipping_rates_service
52
50
 
53
- # account services
54
- @storefront_account_create_address_service = Spree::Dependencies.account_create_address_service
55
- @storefront_account_update_address_service = Spree::Dependencies.account_update_address_service
56
-
57
51
  # serializers
58
- @storefront_address_serializer = 'Spree::V2::Storefront::AddressSerializer'
59
52
  @storefront_cart_serializer = 'Spree::V2::Storefront::CartSerializer'
60
53
  @storefront_credit_card_serializer = 'Spree::V2::Storefront::CreditCardSerializer'
61
54
  @storefront_country_serializer = 'Spree::V2::Storefront::CountrySerializer'
@@ -65,8 +58,6 @@ module Spree
65
58
  @storefront_payment_method_serializer = 'Spree::V2::Storefront::PaymentMethodSerializer'
66
59
  @storefront_product_serializer = 'Spree::V2::Storefront::ProductSerializer'
67
60
  @storefront_estimated_shipment_serializer = 'Spree::V2::Storefront::EstimatedShippingRateSerializer'
68
- @storefront_store_serializer = 'Spree::V2::Storefront::StoreSerializer'
69
- @storefront_order_serializer = 'Spree::V2::Storefront::CartSerializer'
70
61
 
71
62
  # sorters
72
63
  @storefront_order_sorter = Spree::Dependencies.order_sorter
@@ -76,7 +67,6 @@ module Spree
76
67
  @storefront_collection_paginator = Spree::Dependencies.collection_paginator
77
68
 
78
69
  # finders
79
- @storefront_address_finder = Spree::Dependencies.address_finder
80
70
  @storefront_country_finder = Spree::Dependencies.country_finder
81
71
  @storefront_current_order_finder = Spree::Dependencies.current_order_finder
82
72
  @storefront_completed_order_finder = Spree::Dependencies.completed_order_finder
@@ -8,9 +8,7 @@ module Spree
8
8
  :updated_at, :completed_at, :included_tax_total, :additional_tax_total, :display_additional_tax_total,
9
9
  :display_included_tax_total, :tax_total, :currency, :state, :token, :email,
10
10
  :display_item_total, :display_ship_total, :display_adjustment_total, :display_tax_total,
11
- :promo_total, :display_promo_total, :item_count, :special_instructions, :display_total,
12
- :pre_tax_item_amount, :display_pre_tax_item_amount, :pre_tax_total, :display_pre_tax_total,
13
- :shipment_state, :payment_state
11
+ :promo_total, :display_promo_total, :item_count, :special_instructions, :display_total
14
12
 
15
13
  has_many :line_items
16
14
  has_many :variants
@@ -9,8 +9,7 @@ module Spree
9
9
  :display_adjustment_total, :additional_tax_total,
10
10
  :discounted_amount, :display_discounted_amount,
11
11
  :display_additional_tax_total, :promo_total, :display_promo_total,
12
- :included_tax_total, :display_included_tax_total,
13
- :pre_tax_amount, :display_pre_tax_amount
12
+ :included_tax_total, :display_included_tax_total
14
13
 
15
14
  belongs_to :variant
16
15
  end
@@ -8,7 +8,7 @@ module Spree
8
8
  has_one :payment_method
9
9
 
10
10
  attributes :amount, :response_code, :number, :cvv_response_code, :cvv_response_message,
11
- :payment_method_id, :payment_method_name, :state
11
+ :payment_method_id, :payment_method_name
12
12
  end
13
13
  end
14
14
  end
@@ -5,8 +5,8 @@ module Spree
5
5
  set_type :product
6
6
 
7
7
  attributes :name, :description, :price, :currency, :display_price,
8
- :available_on, :slug, :meta_description, :meta_keywords,
9
- :updated_at
8
+ :compare_at_price, :display_compare_at_price, :available_on,
9
+ :slug, :meta_description, :meta_keywords, :updated_at
10
10
 
11
11
  attribute :purchasable, &:purchasable?
12
12
  attribute :in_stock, &:in_stock?
@@ -9,9 +9,7 @@ module Spree
9
9
 
10
10
  attribute :free, &:free?
11
11
 
12
- has_many :shipping_rates
13
-
14
- belongs_to :stock_location
12
+ has_many :shipping_rates, if: proc { |_record, params| params&.dig(:show_rates) }
15
13
  end
16
14
  end
17
15
  end
@@ -4,7 +4,7 @@ module Spree
4
4
  class StoreCreditSerializer < BaseSerializer
5
5
  set_type :store_credit
6
6
 
7
- belongs_to :category, serializer: :store_credit_category
7
+ belongs_to :category
8
8
  has_many :store_credit_events
9
9
  belongs_to :credit_type,
10
10
  id_method_name: :type_id,
@@ -4,8 +4,8 @@ module Spree
4
4
  class VariantSerializer < BaseSerializer
5
5
  set_type :variant
6
6
 
7
- attributes :name, :sku, :price, :currency, :display_price, :weight, :height,
8
- :width, :depth, :is_master, :options_text, :slug, :description
7
+ attributes :sku, :price, :currency, :display_price, :weight, :height,
8
+ :width, :depth, :is_master, :options_text
9
9
 
10
10
  attribute :purchasable, &:purchasable?
11
11
  attribute :in_stock, &:in_stock?
@@ -6,6 +6,10 @@ attributes *product_attributes
6
6
  node(:display_price) { |p| p.display_price.to_s }
7
7
  node(:has_variants, &:has_variants?)
8
8
  node(:taxon_ids, &:taxon_ids)
9
+ node(:display_current_currency_price) do |product|
10
+ price = product.price_in(current_currency)
11
+ Spree::Money.new(price.amount, currency: current_currency).to_s
12
+ end
9
13
 
10
14
  child master: :master do
11
15
  extends 'spree/api/v1/variants/small'
@@ -3,8 +3,6 @@ Doorkeeper.configure do
3
3
  use_refresh_token
4
4
  api_only
5
5
 
6
- skip_client_authentication_for_password_grant { true } if defined?(skip_client_authentication_for_password_grant)
7
-
8
6
  resource_owner_authenticator { current_spree_user }
9
7
 
10
8
  resource_owner_from_credentials do
data/config/routes.rb CHANGED
@@ -152,7 +152,6 @@ Spree::Core::Engine.add_routes do
152
152
  resource :account, controller: :account, only: %i[show]
153
153
 
154
154
  namespace :account do
155
- resources :addresses, controller: :addresses, only: %i[index create update]
156
155
  resources :credit_cards, controller: :credit_cards, only: %i[index show]
157
156
  resources :orders, controller: :orders, only: %i[index show]
158
157
  end
@@ -162,7 +161,6 @@ Spree::Core::Engine.add_routes do
162
161
  get '/order_status/:number', to: 'order_status#show', as: :order_status
163
162
  resources :products, only: %i[index show]
164
163
  resources :taxons, only: %i[index show], id: /.+/
165
- get '/stores/:code', to: 'stores#show', as: :store
166
164
  end
167
165
  end
168
166
 
@@ -49,7 +49,88 @@ paths:
49
49
  $ref: '#/components/responses/403Forbidden'
50
50
  security:
51
51
  - bearerAuth: []
52
-
52
+ post:
53
+ description: >-
54
+ Creates a new account
55
+
56
+ This endpoint requires [Spree Auth Devise](https://github.com/spree/spree_auth_devise) gem installed
57
+ tags:
58
+ - Account
59
+ operationId: 'Account Creation'
60
+ requestBody:
61
+ required: true
62
+ content:
63
+ application/vnd.api+json:
64
+ schema:
65
+ type: object
66
+ properties:
67
+ user:
68
+ type: object
69
+ properties:
70
+ email:
71
+ type: string
72
+ example: 'john@snow.org'
73
+ password:
74
+ type: string
75
+ example: 'spree123'
76
+ password_confirmation:
77
+ type: string
78
+ example: 'spree123'
79
+ responses:
80
+ '200':
81
+ description: ok
82
+ content:
83
+ application/vnd.api+json:
84
+ schema:
85
+ $ref: '#/components/schemas/Account'
86
+ '422':
87
+ description: Validation errors
88
+ content:
89
+ application/vnd.api+json:
90
+ schema:
91
+ $ref: '#/components/schemas/Error'
92
+ patch:
93
+ description: >-
94
+ Updates user account
95
+
96
+ This endpoint requires [Spree Auth Devise](https://github.com/spree/spree_auth_devise) gem installed
97
+ tags:
98
+ - Account
99
+ operationId: 'Account Updates'
100
+ requestBody:
101
+ required: true
102
+ content:
103
+ application/vnd.api+json:
104
+ schema:
105
+ type: object
106
+ properties:
107
+ user:
108
+ type: object
109
+ properties:
110
+ email:
111
+ type: string
112
+ example: 'john@snow.org'
113
+ password:
114
+ type: string
115
+ example: 'spree123'
116
+ password_confirmation:
117
+ type: string
118
+ example: 'spree123'
119
+ responses:
120
+ '200':
121
+ description: ok
122
+ content:
123
+ application/vnd.api+json:
124
+ schema:
125
+ $ref: '#/components/schemas/Account'
126
+ '422':
127
+ description: Validation errors
128
+ content:
129
+ application/vnd.api+json:
130
+ schema:
131
+ $ref: '#/components/schemas/Error'
132
+ security:
133
+ - bearerAuth: []
53
134
  '/account/credit_cards':
54
135
  get:
55
136
  description: >-
@@ -1125,14 +1206,6 @@ components:
1125
1206
  company:
1126
1207
  type: string
1127
1208
  example: 'Google Inc.'
1128
- AddressList:
1129
- required:
1130
- - data
1131
- properties:
1132
- data:
1133
- type: array
1134
- items:
1135
- $ref: '#/components/schemas/Address'
1136
1209
  Cart:
1137
1210
  required:
1138
1211
  - data
@@ -1299,18 +1372,6 @@ components:
1299
1372
  display_tax_total:
1300
1373
  type: string
1301
1374
  example: '$10.00'
1302
- pre_tax_item_amount:
1303
- type: string
1304
- example: '17.00'
1305
- display_pre_tax_item_amount:
1306
- type: string
1307
- example: '$17.00'
1308
- pre_tax_total:
1309
- type: string
1310
- example: '20.00'
1311
- display_pre_tax_total:
1312
- type: string
1313
- example: '$20.00'
1314
1375
  item_count:
1315
1376
  type: number
1316
1377
  example: 2
@@ -1523,12 +1584,6 @@ components:
1523
1584
  display_discounted_amount:
1524
1585
  type: string
1525
1586
  example: '$125.00'
1526
- pre_tax_amount:
1527
- type: string
1528
- example: '125.0'
1529
- display_pre_tax_amount:
1530
- type: string
1531
- example: '$125.00'
1532
1587
  promo_total:
1533
1588
  type: string
1534
1589
  example: '-5.0'
@@ -2029,10 +2084,6 @@ components:
2029
2084
  VariantAttributes:
2030
2085
  type: object
2031
2086
  properties:
2032
- name:
2033
- type: string
2034
- example: 'Example product'
2035
- description: 'Product name'
2036
2087
  sku:
2037
2088
  type: string
2038
2089
  example: 'SKU-1001'
@@ -2064,14 +2115,6 @@ components:
2064
2115
  options_text:
2065
2116
  type: string
2066
2117
  example: 'Size: small, Color: red'
2067
- slug:
2068
- type: string
2069
- example: 'example-product'
2070
- description: 'Product slug'
2071
- description:
2072
- type: string
2073
- example: 'Example description'
2074
- description: 'Product description'
2075
2118
  purchasable:
2076
2119
  type: boolean
2077
2120
  example: true
@@ -6,7 +6,6 @@ module Spree
6
6
  def self.included(klass)
7
7
  klass.class_eval do
8
8
  include CanCan::ControllerAdditions
9
- include Spree::Core::ControllerHelpers::Auth
10
9
 
11
10
  prepend_view_path Rails.root + 'app/views'
12
11
  append_view_path File.expand_path('../../../app/views', File.dirname(__FILE__))
@@ -4,7 +4,7 @@ shared_context 'API v2 tokens' do
4
4
  let(:headers_order_token) { { 'X-Spree-Order-Token' => order.token } }
5
5
  end
6
6
 
7
- [200, 201, 400, 401, 404, 403, 422].each do |status_code|
7
+ [200, 201, 400, 404, 403, 422].each do |status_code|
8
8
  shared_examples "returns #{status_code} HTTP status" do
9
9
  it "returns #{status_code}" do
10
10
  expect(response.status).to eq(status_code)
@@ -27,8 +27,6 @@ shared_examples 'returns valid cart JSON' do
27
27
  expect(json_response['data']).to have_type('cart')
28
28
  expect(json_response['data']).to have_attribute(:number).with_value(order.number)
29
29
  expect(json_response['data']).to have_attribute(:state).with_value(order.state)
30
- expect(json_response['data']).to have_attribute(:payment_state).with_value(order.payment_state)
31
- expect(json_response['data']).to have_attribute(:shipment_state).with_value(order.shipment_state)
32
30
  expect(json_response['data']).to have_attribute(:token).with_value(order.token)
33
31
  expect(json_response['data']).to have_attribute(:total).with_value(order.total.to_s)
34
32
  expect(json_response['data']).to have_attribute(:item_total).with_value(order.item_total.to_s)
@@ -50,10 +48,6 @@ shared_examples 'returns valid cart JSON' do
50
48
  expect(json_response['data']).to have_attribute(:promo_total).with_value(order.promo_total.to_s)
51
49
  expect(json_response['data']).to have_attribute(:display_promo_total).with_value(order.display_promo_total.to_s)
52
50
  expect(json_response['data']).to have_attribute(:display_total).with_value(order.display_total.to_s)
53
- expect(json_response['data']).to have_attribute(:pre_tax_item_amount).with_value(order.pre_tax_item_amount.to_s)
54
- expect(json_response['data']).to have_attribute(:display_pre_tax_item_amount).with_value(order.display_pre_tax_item_amount.to_s)
55
- expect(json_response['data']).to have_attribute(:pre_tax_total).with_value(order.pre_tax_total.to_s)
56
- expect(json_response['data']).to have_attribute(:display_pre_tax_total).with_value(order.display_pre_tax_total.to_s)
57
51
  expect(json_response['data']).to have_relationships(:user, :line_items, :variants, :billing_address, :shipping_address, :payments, :shipments, :promotions)
58
52
  end
59
53
  end
data/spree_api.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.email = ["ryan@spreecommerce.com"]
9
9
  s.summary = %q{Spree's API}
10
10
  s.description = %q{Spree's API}
11
- s.homepage = 'http://spreecommerce.org'
11
+ s.homepage = 'https://spreecommerce.org'
12
12
  s.license = 'BSD-3-Clause'
13
13
 
14
14
  s.metadata = {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.15
4
+ version: 4.2.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Bigg
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-21 00:00:00.000000000 Z
11
+ date: 2020-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jsonapi-rspec
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 4.1.15
33
+ version: 4.2.0.beta
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 4.1.15
40
+ version: 4.2.0.beta
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rabl
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -133,7 +133,6 @@ files:
133
133
  - app/controllers/spree/api/v1/variants_controller.rb
134
134
  - app/controllers/spree/api/v1/zones_controller.rb
135
135
  - app/controllers/spree/api/v2/base_controller.rb
136
- - app/controllers/spree/api/v2/storefront/account/addresses_controller.rb
137
136
  - app/controllers/spree/api/v2/storefront/account/credit_cards_controller.rb
138
137
  - app/controllers/spree/api/v2/storefront/account/orders_controller.rb
139
138
  - app/controllers/spree/api/v2/storefront/account_controller.rb
@@ -142,7 +141,6 @@ files:
142
141
  - app/controllers/spree/api/v2/storefront/countries_controller.rb
143
142
  - app/controllers/spree/api/v2/storefront/order_status_controller.rb
144
143
  - app/controllers/spree/api/v2/storefront/products_controller.rb
145
- - app/controllers/spree/api/v2/storefront/stores_controller.rb
146
144
  - app/controllers/spree/api/v2/storefront/taxons_controller.rb
147
145
  - app/helpers/spree/api/api_helpers.rb
148
146
  - app/helpers/spree/api/v2/collection_options_helpers.rb
@@ -168,12 +166,9 @@ files:
168
166
  - app/serializers/spree/v2/storefront/shipment_serializer.rb
169
167
  - app/serializers/spree/v2/storefront/shipping_rate_serializer.rb
170
168
  - app/serializers/spree/v2/storefront/state_serializer.rb
171
- - app/serializers/spree/v2/storefront/stock_location_serializer.rb
172
- - app/serializers/spree/v2/storefront/store_credit_category_serializer.rb
173
169
  - app/serializers/spree/v2/storefront/store_credit_event_serializer.rb
174
170
  - app/serializers/spree/v2/storefront/store_credit_serializer.rb
175
171
  - app/serializers/spree/v2/storefront/store_credit_type_serializer.rb
176
- - app/serializers/spree/v2/storefront/store_serializer.rb
177
172
  - app/serializers/spree/v2/storefront/taxon_image_serializer.rb
178
173
  - app/serializers/spree/v2/storefront/taxon_serializer.rb
179
174
  - app/serializers/spree/v2/storefront/taxonomy_serializer.rb
@@ -302,15 +297,15 @@ files:
302
297
  - script/rails
303
298
  - spec/fixtures/thinking-cat.jpg
304
299
  - spree_api.gemspec
305
- homepage: http://spreecommerce.org
300
+ homepage: https://spreecommerce.org
306
301
  licenses:
307
302
  - BSD-3-Clause
308
303
  metadata:
309
304
  bug_tracker_uri: https://github.com/spree/spree/issues
310
- changelog_uri: https://github.com/spree/spree/releases/tag/v4.1.15
305
+ changelog_uri: https://github.com/spree/spree/releases/tag/v4.2.0.beta
311
306
  documentation_uri: https://guides.spreecommerce.org/
312
- source_code_uri: https://github.com/spree/spree/tree/v4.1.15
313
- post_install_message:
307
+ source_code_uri: https://github.com/spree/spree/tree/v4.2.0.beta
308
+ post_install_message:
314
309
  rdoc_options: []
315
310
  require_paths:
316
311
  - lib
@@ -321,12 +316,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
321
316
  version: 2.5.0
322
317
  required_rubygems_version: !ruby/object:Gem::Requirement
323
318
  requirements:
324
- - - ">="
319
+ - - ">"
325
320
  - !ruby/object:Gem::Version
326
- version: '0'
321
+ version: 1.3.1
327
322
  requirements: []
328
- rubygems_version: 3.2.22
329
- signing_key:
323
+ rubygems_version: 3.1.2
324
+ signing_key:
330
325
  specification_version: 4
331
326
  summary: Spree's API
332
327
  test_files: []
@@ -1,77 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Storefront
5
- module Account
6
- class AddressesController < ::Spree::Api::V2::BaseController
7
- before_action :require_spree_current_user
8
-
9
- def index
10
- render_serialized_payload { serialize_collection(collection) }
11
- end
12
-
13
- def create
14
- result = create_service.call(user: spree_current_user, address_params: address_params)
15
- render_result(result)
16
- end
17
-
18
- def update
19
- result = update_service.call(address: resource, address_params: address_params)
20
- render_result(result)
21
- end
22
-
23
- private
24
-
25
- def collection
26
- collection_finder.new(scope: scope, params: params).execute
27
- end
28
-
29
- def resource
30
- @resource ||= scope.find(params[:id])
31
- end
32
-
33
- def scope
34
- spree_current_user.addresses
35
- end
36
-
37
- def collection_finder
38
- Spree::Api::Dependencies.storefront_address_finder.constantize
39
- end
40
-
41
- def collection_serializer
42
- Spree::Api::Dependencies.storefront_address_serializer.constantize
43
- end
44
-
45
- def resource_serializer
46
- Spree::Api::Dependencies.storefront_address_serializer.constantize
47
- end
48
-
49
- def serialize_collection(collection)
50
- collection_serializer.new(collection).serializable_hash
51
- end
52
-
53
- def create_service
54
- Spree::Api::Dependencies.storefront_account_create_address_service.constantize
55
- end
56
-
57
- def update_service
58
- Spree::Api::Dependencies.storefront_account_update_address_service.constantize
59
- end
60
-
61
- def address_params
62
- params.require(:address).permit(permitted_address_attributes)
63
- end
64
-
65
- def render_result(result)
66
- if result.success?
67
- render_serialized_payload { serialize_resource(result.value) }
68
- else
69
- render_error_payload(result.error)
70
- end
71
- end
72
- end
73
- end
74
- end
75
- end
76
- end
77
- end
@@ -1,27 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Storefront
5
- class StoresController < ::Spree::Api::V2::BaseController
6
- def show
7
- render_serialized_payload { serialize_resource(resource) }
8
- end
9
-
10
- private
11
-
12
- def scope
13
- Spree::Store
14
- end
15
-
16
- def resource
17
- scope.find_by!(code: params[:code])
18
- end
19
-
20
- def resource_serializer
21
- Spree::Api::Dependencies.storefront_store_serializer.constantize
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,11 +0,0 @@
1
- module Spree
2
- module V2
3
- module Storefront
4
- class StockLocationSerializer < BaseSerializer
5
- set_type :stock_location
6
-
7
- attributes :name
8
- end
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- module Spree
2
- module V2
3
- module Storefront
4
- class StoreCreditCategorySerializer < BaseSerializer
5
- set_type :store_credit_category
6
-
7
- attributes :name
8
- end
9
- end
10
- end
11
- end
@@ -1,13 +0,0 @@
1
- module Spree
2
- module V2
3
- module Storefront
4
- class StoreSerializer < BaseSerializer
5
- set_type :store
6
-
7
- attributes :name, :url, :meta_description, :meta_keywords, :seo_title, :default_currency, :default, :supported_currencies, :facebook,
8
- :twitter, :instagram, :default_locale, :customer_support_email, :default_country_id, :description,
9
- :address, :contact_phone, :contact_email
10
- end
11
- end
12
- end
13
- end