spree_api 4.1.15 → 4.2.0.beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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