solidus_api 2.10.5 → 2.11.0

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 (99) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/app/controllers/spree/api/addresses_controller.rb +1 -1
  4. data/app/controllers/spree/api/base_controller.rb +11 -3
  5. data/app/controllers/spree/api/checkouts_controller.rb +1 -11
  6. data/app/controllers/spree/api/countries_controller.rb +2 -2
  7. data/app/controllers/spree/api/credit_cards_controller.rb +2 -2
  8. data/app/controllers/spree/api/customer_returns_controller.rb +67 -0
  9. data/app/controllers/spree/api/images_controller.rb +4 -4
  10. data/app/controllers/spree/api/inventory_units_controller.rb +1 -1
  11. data/app/controllers/spree/api/option_types_controller.rb +3 -3
  12. data/app/controllers/spree/api/option_values_controller.rb +2 -2
  13. data/app/controllers/spree/api/orders_controller.rb +1 -1
  14. data/app/controllers/spree/api/payments_controller.rb +1 -1
  15. data/app/controllers/spree/api/product_properties_controller.rb +9 -14
  16. data/app/controllers/spree/api/promotions_controller.rb +3 -12
  17. data/app/controllers/spree/api/properties_controller.rb +3 -3
  18. data/app/controllers/spree/api/resource_controller.rb +2 -2
  19. data/app/controllers/spree/api/return_authorizations_controller.rb +3 -3
  20. data/app/controllers/spree/api/shipments_controller.rb +1 -1
  21. data/app/controllers/spree/api/states_controller.rb +3 -3
  22. data/app/controllers/spree/api/stock_items_controller.rb +2 -2
  23. data/app/controllers/spree/api/stock_locations_controller.rb +3 -3
  24. data/app/controllers/spree/api/stock_movements_controller.rb +3 -3
  25. data/app/controllers/spree/api/stores_controller.rb +3 -3
  26. data/app/controllers/spree/api/taxonomies_controller.rb +2 -2
  27. data/app/controllers/spree/api/taxons_controller.rb +4 -4
  28. data/app/controllers/spree/api/users_controller.rb +13 -0
  29. data/app/controllers/spree/api/variants_controller.rb +3 -3
  30. data/app/controllers/spree/api/zones_controller.rb +2 -2
  31. data/app/helpers/spree/api/api_helpers.rb +18 -5
  32. data/app/views/spree/api/customer_returns/index.json.jbuilder +6 -0
  33. data/app/views/spree/api/customer_returns/new.json.jbuilder +4 -0
  34. data/app/views/spree/api/customer_returns/show.json.jbuilder +3 -0
  35. data/app/views/spree/api/errors/could_not_transition.json.jbuilder +4 -0
  36. data/app/views/spree/api/orders/could_not_transition.json.jbuilder +5 -0
  37. data/config/locales/en.yml +2 -0
  38. data/config/routes.rb +6 -3
  39. data/lib/spree/api/testing_support/helpers.rb +1 -1
  40. data/openapi/authentication.md +9 -1
  41. data/openapi/checkout-flow.md +17 -4
  42. data/openapi/main.hub.yml +1 -1
  43. data/openapi/solidus-api.oas.yml +6753 -0
  44. data/solidus_api.gemspec +19 -19
  45. metadata +14 -114
  46. data/openapi/api.oas2.yml +0 -6108
  47. data/script/rails +0 -10
  48. data/spec/controllers/spree/api/base_controller_spec.rb +0 -118
  49. data/spec/controllers/spree/api/resource_controller_spec.rb +0 -190
  50. data/spec/features/checkout_spec.rb +0 -192
  51. data/spec/fixtures/thinking-cat.jpg +0 -0
  52. data/spec/lib/spree_api_responders_spec.rb +0 -10
  53. data/spec/models/spree/legacy_user_spec.rb +0 -103
  54. data/spec/requests/api/address_books_spec.rb +0 -240
  55. data/spec/requests/jbuilder_cache_spec.rb +0 -34
  56. data/spec/requests/ransackable_attributes_spec.rb +0 -79
  57. data/spec/requests/spree/api/addresses_controller_spec.rb +0 -57
  58. data/spec/requests/spree/api/checkouts_controller_spec.rb +0 -484
  59. data/spec/requests/spree/api/classifications_controller_spec.rb +0 -50
  60. data/spec/requests/spree/api/config_controller_spec.rb +0 -26
  61. data/spec/requests/spree/api/countries_controller_spec.rb +0 -48
  62. data/spec/requests/spree/api/coupon_codes_controller_spec.rb +0 -105
  63. data/spec/requests/spree/api/credit_cards_controller_spec.rb +0 -105
  64. data/spec/requests/spree/api/images_controller_spec.rb +0 -99
  65. data/spec/requests/spree/api/inventory_units_controller_spec.rb +0 -55
  66. data/spec/requests/spree/api/line_items_controller_spec.rb +0 -213
  67. data/spec/requests/spree/api/option_types_controller_spec.rb +0 -116
  68. data/spec/requests/spree/api/option_values_controller_spec.rb +0 -138
  69. data/spec/requests/spree/api/orders_controller_spec.rb +0 -954
  70. data/spec/requests/spree/api/payments_controller_spec.rb +0 -259
  71. data/spec/requests/spree/api/product_properties_controller_spec.rb +0 -114
  72. data/spec/requests/spree/api/products_controller_spec.rb +0 -422
  73. data/spec/requests/spree/api/promotion_application_spec.rb +0 -50
  74. data/spec/requests/spree/api/promotions_controller_spec.rb +0 -67
  75. data/spec/requests/spree/api/properties_controller_spec.rb +0 -102
  76. data/spec/requests/spree/api/return_authorizations_controller_spec.rb +0 -180
  77. data/spec/requests/spree/api/shipments_controller_spec.rb +0 -532
  78. data/spec/requests/spree/api/states_controller_spec.rb +0 -69
  79. data/spec/requests/spree/api/stock_items_controller_spec.rb +0 -311
  80. data/spec/requests/spree/api/stock_locations_controller_spec.rb +0 -170
  81. data/spec/requests/spree/api/stock_movements_controller_spec.rb +0 -81
  82. data/spec/requests/spree/api/store_credit_events_controller_spec.rb +0 -59
  83. data/spec/requests/spree/api/stores_controller_spec.rb +0 -134
  84. data/spec/requests/spree/api/taxonomies_controller_spec.rb +0 -114
  85. data/spec/requests/spree/api/taxons_controller_spec.rb +0 -217
  86. data/spec/requests/spree/api/unauthenticated_products_controller_spec.rb +0 -27
  87. data/spec/requests/spree/api/users_controller_spec.rb +0 -151
  88. data/spec/requests/spree/api/variants_controller_spec.rb +0 -340
  89. data/spec/requests/spree/api/zones_controller_spec.rb +0 -89
  90. data/spec/shared_examples/protect_product_actions.rb +0 -18
  91. data/spec/spec_helper.rb +0 -73
  92. data/spec/support/be_paginated_matcher.rb +0 -9
  93. data/spec/support/controller_hacks.rb +0 -43
  94. data/spec/support/database_cleaner.rb +0 -16
  95. data/spec/support/have_attributes_matcher.rb +0 -11
  96. data/spec/test_views/spree/api/widgets/_widget.json.jbuilder +0 -3
  97. data/spec/test_views/spree/api/widgets/index.json.jbuilder +0 -9
  98. data/spec/test_views/spree/api/widgets/new.json.jbuilder +0 -3
  99. data/spec/test_views/spree/api/widgets/show.json.jbuilder +0 -3
@@ -1,89 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- module Spree
6
- describe Api::ZonesController, type: :request do
7
- let!(:attributes) { [:id, :name, :zone_members] }
8
- let!(:zone) { create(:zone, name: 'Europe') }
9
-
10
- before do
11
- stub_authentication!
12
- end
13
-
14
- it "gets list of zones" do
15
- get spree.api_zones_path
16
- expect(json_response['zones'].first).to have_attributes(attributes)
17
- end
18
-
19
- it 'can control the page size through a parameter' do
20
- create(:zone)
21
- get spree.api_zones_path, params: { per_page: 1 }
22
- expect(json_response['count']).to eq(1)
23
- expect(json_response['current_page']).to eq(1)
24
- expect(json_response['pages']).to eq(2)
25
- end
26
-
27
- it 'can query the results through a paramter' do
28
- expected_result = create(:zone, name: 'South America')
29
- get spree.api_zones_path, params: { q: { name_cont: 'south' } }
30
- expect(json_response['count']).to eq(1)
31
- expect(json_response['zones'].first['name']).to eq expected_result.name
32
- end
33
-
34
- it "gets a zone" do
35
- get spree.api_zone_path(zone)
36
- expect(json_response).to have_attributes(attributes)
37
- expect(json_response['name']).to eq zone.name
38
- expect(json_response['zone_members'].size).to eq zone.zone_members.count
39
- end
40
-
41
- context "as an admin" do
42
- sign_in_as_admin!
43
-
44
- it "can create a new zone" do
45
- params = {
46
- zone: {
47
- name: "North Pole",
48
- zone_members: [
49
- {
50
- zoneable_type: "Spree::Country",
51
- zoneable_id: 1
52
- }
53
- ]
54
- }
55
- }
56
-
57
- post spree.api_zones_path, params: params
58
- expect(response.status).to eq(201)
59
- expect(json_response).to have_attributes(attributes)
60
- expect(json_response["zone_members"]).not_to be_empty
61
- end
62
-
63
- it "updates a zone" do
64
- params = {
65
- zone: {
66
- name: "North Pole",
67
- zone_members: [
68
- {
69
- zoneable_type: "Spree::Country",
70
- zoneable_id: 1
71
- }
72
- ]
73
- }
74
- }
75
-
76
- put spree.api_zone_path(zone), params: params
77
- expect(response.status).to eq(200)
78
- expect(json_response['name']).to eq 'North Pole'
79
- expect(json_response['zone_members']).not_to be_blank
80
- end
81
-
82
- it "can delete a zone" do
83
- delete spree.api_zone_path(zone)
84
- expect(response.status).to eq(204)
85
- expect { zone.reload }.to raise_error(ActiveRecord::RecordNotFound)
86
- end
87
- end
88
- end
89
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- shared_examples "modifying product actions are restricted" do
4
- it "cannot create a new product if not an admin" do
5
- post spree.api_products_path, params: { product: { name: "Brand new product!" } }
6
- assert_unauthorized!
7
- end
8
-
9
- it "cannot update a product" do
10
- put spree.api_product_path(product), params: { product: { name: "I hacked your store!" } }
11
- assert_unauthorized!
12
- end
13
-
14
- it "cannot delete a product" do
15
- delete spree.api_product_path(product)
16
- assert_unauthorized!
17
- end
18
- end
data/spec/spec_helper.rb DELETED
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- if ENV["COVERAGE"]
4
- require 'simplecov'
5
- SimpleCov.start('rails')
6
- end
7
-
8
- # This file is copied to spec/ when you run 'rails generate rspec:install'
9
- ENV["RAILS_ENV"] ||= 'test'
10
-
11
- require 'solidus_api'
12
- require 'spree/testing_support/dummy_app'
13
- DummyApp.setup(
14
- gem_root: File.expand_path('..', __dir__),
15
- lib_name: 'solidus_api'
16
- )
17
-
18
- require 'rails-controller-testing'
19
- require 'rspec/rails'
20
- require 'rspec-activemodel-mocks'
21
-
22
- require 'database_cleaner'
23
- require 'with_model'
24
-
25
- # Requires supporting ruby files with custom matchers and macros, etc,
26
- # in spec/support/ and its subdirectories.
27
- Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f }
28
-
29
- require 'spree/testing_support/partial_double_verification'
30
- require 'spree/testing_support/factories'
31
- require 'spree/testing_support/preferences'
32
- require 'spree/testing_support/authorization_helpers'
33
-
34
- require 'spree/api/testing_support/caching'
35
- require 'spree/api/testing_support/helpers'
36
- require 'spree/api/testing_support/setup'
37
-
38
- ActiveJob::Base.queue_adapter = :test
39
-
40
- RSpec.configure do |config|
41
- config.backtrace_exclusion_patterns = [/gems\/activesupport/, /gems\/actionpack/, /gems\/rspec/]
42
- config.color = true
43
- config.infer_spec_type_from_file_location!
44
- config.expect_with :rspec do |c|
45
- c.syntax = :expect
46
- end
47
- config.mock_with :rspec do |c|
48
- c.syntax = :expect
49
- end
50
-
51
- config.include FactoryBot::Syntax::Methods
52
- config.include Spree::Api::TestingSupport::Helpers, type: :request
53
- config.extend Spree::Api::TestingSupport::Setup, type: :request
54
- config.include Spree::Api::TestingSupport::Helpers, type: :controller
55
- config.extend Spree::Api::TestingSupport::Setup, type: :controller
56
- config.include Spree::TestingSupport::Preferences
57
-
58
- config.extend WithModel
59
-
60
- config.before(:each) do
61
- Rails.cache.clear
62
- end
63
-
64
- config.include ActiveJob::TestHelper
65
-
66
- config.use_transactional_fixtures = true
67
-
68
- config.example_status_persistence_file_path = "./spec/examples.txt"
69
-
70
- config.order = :random
71
-
72
- Kernel.srand config.seed
73
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec::Matchers.define :be_paginated do
4
- match do |actual|
5
- %w[count total_count current_page pages per_page].all? do |attr|
6
- actual[attr].is_a?(Integer)
7
- end
8
- end
9
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/all'
4
-
5
- module ControllerHacks
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- routes { Spree::Core::Engine.routes }
10
- end
11
-
12
- def api_get(action, params = {}, session = nil, flash = nil)
13
- api_process(action, params, session, flash, "GET")
14
- end
15
-
16
- def api_post(action, params = {}, session = nil, flash = nil)
17
- api_process(action, params, session, flash, "POST")
18
- end
19
-
20
- def api_put(action, params = {}, session = nil, flash = nil)
21
- api_process(action, params, session, flash, "PUT")
22
- end
23
-
24
- def api_delete(action, params = {}, session = nil, flash = nil)
25
- api_process(action, params, session, flash, "DELETE")
26
- end
27
-
28
- def api_process(action, params = {}, session = nil, flash = nil, method = "get")
29
- scoping = respond_to?(:resource_scoping) ? resource_scoping : {}
30
- process(
31
- action,
32
- method: method,
33
- params: params.merge(scoping),
34
- session: session,
35
- flash: flash,
36
- format: :json
37
- )
38
- end
39
- end
40
-
41
- RSpec.configure do |config|
42
- config.include ControllerHacks, type: :controller
43
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.configure do |config|
4
- config.before(:suite) do
5
- DatabaseCleaner.strategy = :transaction
6
- DatabaseCleaner.clean_with(:truncation)
7
- end
8
-
9
- config.before(:each) do
10
- DatabaseCleaner.start
11
- end
12
-
13
- config.after(:each) do
14
- DatabaseCleaner.clean
15
- end
16
- end
@@ -1,11 +0,0 @@
1
-
2
- # frozen_string_literal: true
3
-
4
- RSpec::Matchers.define :have_attributes do |expected_attributes|
5
- match do |actual|
6
- # actual is a Hash object representing an object, like this:
7
- # { "name" => "Product #1" }
8
- actual_attributes = actual.keys.map(&:to_sym)
9
- expected_attributes.map(&:to_sym).all? { |attr| actual_attributes.include?(attr) }
10
- end
11
- end
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- json.(widget, :id, :name, :position)
@@ -1,9 +0,0 @@
1
-
2
- # frozen_string_literal: true
3
-
4
- json.widgets(@collection) do |widget|
5
- json.partial!("spree/api/widgets/widget", widget: widget)
6
- end
7
- json.count @collection.count
8
- json.current_page(params[:page] || 1)
9
- json.pages @collection.total_pages
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- json.attributes [:name]
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- json.partial!("spree/api/widgets/widget", widget: @object)