solidus_api 2.5.2 → 2.6.0.rc1

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 (212) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +3 -1
  3. data/app/controllers/spree/api/address_books_controller.rb +2 -0
  4. data/app/controllers/spree/api/addresses_controller.rb +2 -0
  5. data/app/controllers/spree/api/base_controller.rb +2 -0
  6. data/app/controllers/spree/api/checkouts_controller.rb +2 -0
  7. data/app/controllers/spree/api/classifications_controller.rb +2 -0
  8. data/app/controllers/spree/api/config_controller.rb +2 -0
  9. data/app/controllers/spree/api/countries_controller.rb +2 -0
  10. data/app/controllers/spree/api/credit_cards_controller.rb +2 -0
  11. data/app/controllers/spree/api/images_controller.rb +2 -0
  12. data/app/controllers/spree/api/inventory_units_controller.rb +2 -0
  13. data/app/controllers/spree/api/line_items_controller.rb +2 -0
  14. data/app/controllers/spree/api/option_types_controller.rb +2 -0
  15. data/app/controllers/spree/api/option_values_controller.rb +2 -0
  16. data/app/controllers/spree/api/orders_controller.rb +2 -0
  17. data/app/controllers/spree/api/payments_controller.rb +3 -1
  18. data/app/controllers/spree/api/product_properties_controller.rb +2 -0
  19. data/app/controllers/spree/api/products_controller.rb +2 -0
  20. data/app/controllers/spree/api/promotions_controller.rb +2 -0
  21. data/app/controllers/spree/api/properties_controller.rb +2 -0
  22. data/app/controllers/spree/api/resource_controller.rb +2 -0
  23. data/app/controllers/spree/api/return_authorizations_controller.rb +2 -0
  24. data/app/controllers/spree/api/shipments_controller.rb +2 -0
  25. data/app/controllers/spree/api/states_controller.rb +4 -2
  26. data/app/controllers/spree/api/stock_items_controller.rb +2 -0
  27. data/app/controllers/spree/api/stock_locations_controller.rb +2 -0
  28. data/app/controllers/spree/api/stock_movements_controller.rb +2 -0
  29. data/app/controllers/spree/api/store_credit_events_controller.rb +2 -0
  30. data/app/controllers/spree/api/stores_controller.rb +2 -0
  31. data/app/controllers/spree/api/taxonomies_controller.rb +2 -0
  32. data/app/controllers/spree/api/taxons_controller.rb +2 -0
  33. data/app/controllers/spree/api/users_controller.rb +2 -0
  34. data/app/controllers/spree/api/variants_controller.rb +2 -0
  35. data/app/controllers/spree/api/zones_controller.rb +2 -0
  36. data/app/helpers/spree/api/api_helpers.rb +6 -4
  37. data/app/models/spree/api_configuration.rb +2 -0
  38. data/app/views/spree/api/address_books/show.json.jbuilder +2 -0
  39. data/app/views/spree/api/addresses/_address.json.jbuilder +2 -0
  40. data/app/views/spree/api/addresses/show.json.jbuilder +2 -0
  41. data/app/views/spree/api/adjustments/_adjustment.json.jbuilder +2 -0
  42. data/app/views/spree/api/config/money.json.jbuilder +2 -0
  43. data/app/views/spree/api/config/show.json.jbuilder +2 -0
  44. data/app/views/spree/api/countries/index.json.jbuilder +2 -0
  45. data/app/views/spree/api/countries/show.json.jbuilder +2 -0
  46. data/app/views/spree/api/credit_cards/_credit_card.json.jbuilder +2 -0
  47. data/app/views/spree/api/credit_cards/index.json.jbuilder +2 -0
  48. data/app/views/spree/api/credit_cards/show.json.jbuilder +2 -0
  49. data/app/views/spree/api/errors/delete_restriction.json.jbuilder +2 -0
  50. data/app/views/spree/api/errors/gateway_error.json.jbuilder +2 -0
  51. data/app/views/spree/api/errors/invalid_api_key.json.jbuilder +2 -0
  52. data/app/views/spree/api/errors/invalid_resource.json.jbuilder +2 -0
  53. data/app/views/spree/api/errors/must_specify_api_key.json.jbuilder +2 -0
  54. data/app/views/spree/api/errors/not_found.json.jbuilder +2 -0
  55. data/app/views/spree/api/errors/unauthorized.json.jbuilder +2 -0
  56. data/app/views/spree/api/images/_image.json.jbuilder +2 -0
  57. data/app/views/spree/api/images/index.json.jbuilder +2 -0
  58. data/app/views/spree/api/images/show.json.jbuilder +2 -0
  59. data/app/views/spree/api/inventory_units/show.json.jbuilder +2 -0
  60. data/app/views/spree/api/line_items/_line_item.json.jbuilder +2 -0
  61. data/app/views/spree/api/line_items/new.json.jbuilder +2 -0
  62. data/app/views/spree/api/line_items/show.json.jbuilder +2 -0
  63. data/app/views/spree/api/option_types/_option_type.json.jbuilder +2 -0
  64. data/app/views/spree/api/option_types/index.json.jbuilder +2 -0
  65. data/app/views/spree/api/option_types/show.json.jbuilder +2 -0
  66. data/app/views/spree/api/option_values/_option_value.json.jbuilder +2 -0
  67. data/app/views/spree/api/option_values/index.json.jbuilder +2 -0
  68. data/app/views/spree/api/option_values/show.json.jbuilder +2 -0
  69. data/app/views/spree/api/orders/_big.json.jbuilder +13 -5
  70. data/app/views/spree/api/orders/_order.json.jbuilder +2 -0
  71. data/app/views/spree/api/orders/could_not_apply_coupon.json.jbuilder +2 -0
  72. data/app/views/spree/api/orders/could_not_transition.json.jbuilder +2 -0
  73. data/app/views/spree/api/orders/expected_total_mismatch.json.jbuilder +2 -0
  74. data/app/views/spree/api/orders/index.json.jbuilder +2 -0
  75. data/app/views/spree/api/orders/invalid_shipping_method.json.jbuilder +2 -0
  76. data/app/views/spree/api/orders/mine.json.jbuilder +2 -0
  77. data/app/views/spree/api/orders/show.json.jbuilder +2 -0
  78. data/app/views/spree/api/payments/credit_over_limit.json.jbuilder +2 -0
  79. data/app/views/spree/api/payments/index.json.jbuilder +2 -0
  80. data/app/views/spree/api/payments/new.json.jbuilder +2 -0
  81. data/app/views/spree/api/payments/show.json.jbuilder +2 -0
  82. data/app/views/spree/api/payments/source_views/_check.json.jbuilder +1 -0
  83. data/app/views/spree/api/payments/source_views/_gateway.json.jbuilder +6 -0
  84. data/app/views/spree/api/payments/source_views/_storecredit.json.jbuilder +3 -0
  85. data/app/views/spree/api/payments/update_forbidden.json.jbuilder +2 -0
  86. data/app/views/spree/api/product_properties/index.json.jbuilder +2 -0
  87. data/app/views/spree/api/product_properties/new.json.jbuilder +2 -0
  88. data/app/views/spree/api/product_properties/show.json.jbuilder +2 -0
  89. data/app/views/spree/api/products/_product.json.jbuilder +2 -0
  90. data/app/views/spree/api/products/index.json.jbuilder +2 -0
  91. data/app/views/spree/api/products/new.json.jbuilder +2 -0
  92. data/app/views/spree/api/products/show.json.jbuilder +2 -0
  93. data/app/views/spree/api/promotions/handler.json.jbuilder +2 -0
  94. data/app/views/spree/api/promotions/show.json.jbuilder +2 -0
  95. data/app/views/spree/api/properties/index.json.jbuilder +2 -0
  96. data/app/views/spree/api/properties/new.json.jbuilder +2 -0
  97. data/app/views/spree/api/properties/show.json.jbuilder +2 -0
  98. data/app/views/spree/api/return_authorizations/index.json.jbuilder +2 -0
  99. data/app/views/spree/api/return_authorizations/new.json.jbuilder +2 -0
  100. data/app/views/spree/api/return_authorizations/show.json.jbuilder +2 -0
  101. data/app/views/spree/api/shared/_pagination.json.jbuilder +2 -0
  102. data/app/views/spree/api/shipments/_big.json.jbuilder +8 -4
  103. data/app/views/spree/api/shipments/_small.json.jbuilder +2 -0
  104. data/app/views/spree/api/shipments/cannot_ready_shipment.json.jbuilder +2 -0
  105. data/app/views/spree/api/shipments/estimated_rates.json.jbuilder +2 -0
  106. data/app/views/spree/api/shipments/mine.json.jbuilder +2 -0
  107. data/app/views/spree/api/shipments/show.json.jbuilder +2 -0
  108. data/app/views/spree/api/shipping_rates/_shipping_rate.json.jbuilder +2 -0
  109. data/app/views/spree/api/states/index.json.jbuilder +2 -0
  110. data/app/views/spree/api/states/show.json.jbuilder +2 -0
  111. data/app/views/spree/api/stock_items/_stock_item.json.jbuilder +2 -0
  112. data/app/views/spree/api/stock_items/index.json.jbuilder +2 -0
  113. data/app/views/spree/api/stock_items/show.json.jbuilder +2 -0
  114. data/app/views/spree/api/stock_locations/_stock_location.json.jbuilder +2 -0
  115. data/app/views/spree/api/stock_locations/index.json.jbuilder +2 -0
  116. data/app/views/spree/api/stock_locations/show.json.jbuilder +2 -0
  117. data/app/views/spree/api/stock_movements/_stock_movement.json.jbuilder +2 -0
  118. data/app/views/spree/api/stock_movements/index.json.jbuilder +2 -0
  119. data/app/views/spree/api/stock_movements/show.json.jbuilder +2 -0
  120. data/app/views/spree/api/store_credit_events/mine.json.jbuilder +2 -0
  121. data/app/views/spree/api/stores/index.json.jbuilder +2 -0
  122. data/app/views/spree/api/stores/show.json.jbuilder +2 -0
  123. data/app/views/spree/api/taxonomies/_nested.json.jbuilder +2 -0
  124. data/app/views/spree/api/taxonomies/_taxonomy.json.jbuilder +2 -0
  125. data/app/views/spree/api/taxonomies/index.json.jbuilder +2 -0
  126. data/app/views/spree/api/taxonomies/jstree.json.jbuilder +2 -0
  127. data/app/views/spree/api/taxonomies/new.json.jbuilder +2 -0
  128. data/app/views/spree/api/taxonomies/show.json.jbuilder +2 -0
  129. data/app/views/spree/api/taxons/_taxon.json.jbuilder +2 -0
  130. data/app/views/spree/api/taxons/_taxons.json.jbuilder +2 -0
  131. data/app/views/spree/api/taxons/index.json.jbuilder +2 -0
  132. data/app/views/spree/api/taxons/jstree.json.jbuilder +2 -0
  133. data/app/views/spree/api/taxons/new.json.jbuilder +2 -0
  134. data/app/views/spree/api/taxons/show.json.jbuilder +2 -0
  135. data/app/views/spree/api/users/_user.json.jbuilder +2 -0
  136. data/app/views/spree/api/users/index.json.jbuilder +2 -0
  137. data/app/views/spree/api/users/new.json.jbuilder +2 -0
  138. data/app/views/spree/api/users/show.json.jbuilder +2 -0
  139. data/app/views/spree/api/variants/_big.json.jbuilder +2 -0
  140. data/app/views/spree/api/variants/_small.json.jbuilder +2 -0
  141. data/app/views/spree/api/variants/index.json.jbuilder +2 -0
  142. data/app/views/spree/api/variants/new.json.jbuilder +2 -0
  143. data/app/views/spree/api/variants/show.json.jbuilder +2 -0
  144. data/app/views/spree/api/zones/_zone.json.jbuilder +2 -0
  145. data/app/views/spree/api/zones/index.json.jbuilder +2 -0
  146. data/app/views/spree/api/zones/show.json.jbuilder +2 -0
  147. data/config/routes.rb +9 -7
  148. data/db/migrate/20100107141738_add_api_key_to_spree_users.rb +2 -0
  149. data/db/migrate/20120411123334_resize_api_key_field.rb +2 -0
  150. data/db/migrate/20120530054546_rename_api_key_to_spree_api_key.rb +2 -0
  151. data/db/migrate/20131017162334_add_index_to_user_spree_api_key.rb +2 -0
  152. data/lib/solidus_api.rb +2 -0
  153. data/lib/spree/api/engine.rb +2 -0
  154. data/lib/spree/api/responders/rabl_template.rb +2 -0
  155. data/lib/spree/api/responders.rb +2 -0
  156. data/lib/spree/api/testing_support/caching.rb +2 -0
  157. data/lib/spree/api/testing_support/helpers.rb +2 -0
  158. data/lib/spree/api/testing_support/setup.rb +2 -0
  159. data/lib/spree/api.rb +2 -0
  160. data/lib/spree_api.rb +2 -0
  161. data/script/rails +4 -2
  162. data/solidus_api.gemspec +4 -3
  163. data/spec/controllers/spree/api/base_controller_spec.rb +2 -0
  164. data/spec/controllers/spree/api/resource_controller_spec.rb +8 -4
  165. data/spec/features/checkout_spec.rb +2 -0
  166. data/spec/models/spree/legacy_user_spec.rb +2 -0
  167. data/spec/requests/api/address_books_spec.rb +2 -0
  168. data/spec/requests/rabl_cache_spec.rb +2 -0
  169. data/spec/requests/ransackable_attributes_spec.rb +2 -0
  170. data/spec/requests/spree/api/addresses_controller_spec.rb +2 -1
  171. data/spec/requests/spree/api/checkouts_controller_spec.rb +2 -1
  172. data/spec/requests/spree/api/classifications_controller_spec.rb +2 -0
  173. data/spec/requests/spree/api/config_controller_spec.rb +3 -1
  174. data/spec/requests/spree/api/countries_controller_spec.rb +2 -1
  175. data/spec/requests/spree/api/credit_cards_controller_spec.rb +2 -1
  176. data/spec/requests/spree/api/images_controller_spec.rb +2 -1
  177. data/spec/requests/spree/api/inventory_units_controller_spec.rb +2 -0
  178. data/spec/requests/spree/api/line_items_controller_spec.rb +2 -1
  179. data/spec/requests/spree/api/option_types_controller_spec.rb +2 -1
  180. data/spec/requests/spree/api/option_values_controller_spec.rb +3 -2
  181. data/spec/requests/spree/api/orders_controller_spec.rb +17 -13
  182. data/spec/requests/spree/api/payments_controller_spec.rb +2 -0
  183. data/spec/requests/spree/api/product_properties_controller_spec.rb +2 -1
  184. data/spec/requests/spree/api/products_controller_spec.rb +4 -3
  185. data/spec/requests/spree/api/promotion_application_spec.rb +2 -1
  186. data/spec/requests/spree/api/promotions_controller_spec.rb +2 -1
  187. data/spec/requests/spree/api/properties_controller_spec.rb +2 -1
  188. data/spec/requests/spree/api/return_authorizations_controller_spec.rb +2 -1
  189. data/spec/requests/spree/api/shipments_controller_spec.rb +13 -0
  190. data/spec/requests/spree/api/states_controller_spec.rb +2 -1
  191. data/spec/requests/spree/api/stock_items_controller_spec.rb +2 -1
  192. data/spec/requests/spree/api/stock_locations_controller_spec.rb +2 -1
  193. data/spec/requests/spree/api/stock_movements_controller_spec.rb +2 -1
  194. data/spec/requests/spree/api/store_credit_events_controller_spec.rb +2 -0
  195. data/spec/requests/spree/api/stores_controller_spec.rb +9 -6
  196. data/spec/requests/spree/api/taxonomies_controller_spec.rb +2 -1
  197. data/spec/requests/spree/api/taxons_controller_spec.rb +2 -1
  198. data/spec/requests/spree/api/unauthenticated_products_controller_spec.rb +3 -2
  199. data/spec/requests/spree/api/users_controller_spec.rb +2 -1
  200. data/spec/requests/spree/api/variants_controller_spec.rb +2 -2
  201. data/spec/requests/spree/api/zones_controller_spec.rb +2 -1
  202. data/spec/shared_examples/protect_product_actions.rb +2 -0
  203. data/spec/spec_helper.rb +3 -1
  204. data/spec/support/be_paginated_matcher.rb +2 -0
  205. data/spec/support/controller_hacks.rb +2 -0
  206. data/spec/support/database_cleaner.rb +2 -0
  207. data/spec/support/have_attributes_matcher.rb +2 -0
  208. data/spec/test_views/spree/api/widgets/_widget.json.jbuilder +2 -0
  209. data/spec/test_views/spree/api/widgets/index.json.jbuilder +3 -1
  210. data/spec/test_views/spree/api/widgets/new.json.jbuilder +2 -0
  211. data/spec/test_views/spree/api/widgets/show.json.jbuilder +2 -0
  212. metadata +27 -23
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe "Rabl Cache", type: :request, caching: true do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe "Ransackable Attributes" do
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::AddressesController, type: :request do
5
-
6
7
  before do
7
8
  stub_authentication!
8
9
  @address = create(:address)
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::CheckoutsController, type: :request do
5
-
6
7
  before(:each) do
7
8
  stub_authentication!
8
9
  Spree::Config[:track_inventory_levels] = false
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::ConfigController, type: :request do
5
- let!(:default_country) { create :country, iso: "US"}
7
+ let!(:default_country) { create :country, iso: "US" }
6
8
 
7
9
  before do
8
10
  stub_authentication!
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::CountriesController, type: :request do
5
-
6
7
  before do
7
8
  stub_authentication!
8
9
  @state = create(:state)
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::CreditCardsController, type: :request do
5
7
  describe '#index' do
6
-
7
8
  let!(:admin_user) do
8
9
  create(:admin_user)
9
10
  end
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Spree::Api::ImagesController, type: :request do
5
-
6
7
  let!(:product) { create(:product) }
7
8
  let!(:attributes) {
8
9
  [:id, :position, :attachment_content_type,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
@@ -10,7 +12,6 @@ module Spree
10
12
  end
11
13
 
12
14
  describe Api::LineItemsController, type: :request do
13
-
14
15
  let!(:order) { create(:order_with_line_items, line_items_count: 1) }
15
16
 
16
17
  let(:product) { create(:product) }
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::OptionTypesController, type: :request do
5
-
6
7
  let(:attributes) { [:id, :name, :position, :presentation] }
7
8
  let!(:option_value) { create(:option_value) }
8
9
  let!(:option_type) { option_value.option_type }
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::OptionValuesController, type: :request do
5
-
6
7
  let(:attributes) { [:id, :name, :presentation, :option_type_name, :option_type_name] }
7
8
  let!(:option_value) { create(:option_value) }
8
9
  let!(:option_type) { option_value.option_type }
@@ -101,7 +102,7 @@ module Spree
101
102
  end
102
103
 
103
104
  it "cannot create an option type with invalid attributes" do
104
- post spree.api_option_type_option_values_path(option_type), params: { option_value: {name: ""} }
105
+ post spree.api_option_type_option_values_path(option_type), params: { option_value: { name: "" } }
105
106
  expect(response.status).to eq(422)
106
107
  end
107
108
 
@@ -1,5 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
- require 'spree/testing_support/bar_ability'
3
4
 
4
5
  module Spree
5
6
  describe Api::OrdersController, type: :request do
@@ -347,6 +348,21 @@ module Spree
347
348
  expect(credit_cards[0]['id']).to eq payment.source.id
348
349
  expect(credit_cards[0]['address']['id']).to eq credit_card.address_id
349
350
  end
351
+
352
+ it 'renders the payment source view for gateway' do
353
+ subject
354
+ expect(response).to render_template partial: 'spree/api/payments/source_views/_gateway'
355
+ end
356
+ end
357
+
358
+ context 'when store credit is present' do
359
+ let!(:payment) { create(:store_credit_payment, order: order, source: store_credit) }
360
+ let(:store_credit) { create(:store_credit) }
361
+
362
+ it 'renders the payment source view for store credit' do
363
+ subject
364
+ expect(response).to render_template partial: 'spree/api/payments/source_views/_storecredit'
365
+ end
350
366
  end
351
367
  end
352
368
 
@@ -373,18 +389,6 @@ module Spree
373
389
  expect(response.status).to eq(200)
374
390
  end
375
391
 
376
- context "with BarAbility registered" do
377
- before { Spree::Ability.register_ability(::BarAbility) }
378
- after { Spree::Ability.remove_ability(::BarAbility) }
379
-
380
- it "can view an order" do
381
- user = build(:user, spree_roles: [Spree::Role.new(name: 'bar')])
382
- allow(Spree.user_class).to receive_messages find_by: user
383
- get spree.api_order_path(order)
384
- expect(response.status).to eq(200)
385
- end
386
- end
387
-
388
392
  it "cannot cancel an order that doesn't belong to them" do
389
393
  order.update_attribute(:completed_at, Time.current)
390
394
  order.update_attribute(:shipment_state, "ready")
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'shared_examples/protect_product_actions'
3
5
 
4
6
  module Spree
5
7
  describe Spree::Api::ProductPropertiesController, type: :request do
6
-
7
8
  let!(:product) { create(:product) }
8
9
  let!(:property_1) { product.product_properties.create(property_name: "My Property 1", value: "my value 1", position: 0) }
9
10
  let!(:property_2) { product.product_properties.create(property_name: "My Property 2", value: "my value 2", position: 1) }
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'shared_examples/protect_product_actions'
3
5
 
4
6
  module Spree
5
7
  describe Spree::Api::ProductsController, type: :request do
6
-
7
8
  let!(:product) { create(:product) }
8
9
  let!(:inactive_product) { create(:product, available_on: Time.current.tomorrow, name: "inactive") }
9
10
  let(:base_attributes) { Api::ApiHelpers.product_attributes }
@@ -349,7 +350,7 @@ module Spree
349
350
  expect(response.status).to eq 200
350
351
  expect(json_response['variants'].count).to eq(2) # 2 variants
351
352
 
352
- variants = json_response['variants'].select { |v| !v['is_master'] }
353
+ variants = json_response['variants'].reject { |v| v['is_master'] }
353
354
  size_option_value = variants.last['option_values'].detect{ |x| x['option_type_name'] == 'size' }
354
355
  expect(size_option_value['name']).to eq('small')
355
356
 
@@ -373,7 +374,7 @@ module Spree
373
374
  } }
374
375
 
375
376
  expect(json_response['variants'].count).to eq(1)
376
- variants = json_response['variants'].select { |v| !v['is_master'] }
377
+ variants = json_response['variants'].reject { |v| v['is_master'] }
377
378
  expect(variants.last['option_values'][0]['name']).to eq('large')
378
379
  expect(variants.last['sku']).to eq('456')
379
380
  expect(variants.count).to eq(1)
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree::Api
4
6
  describe OrdersController, type: :request do
5
-
6
7
  before do
7
8
  stub_authentication!
8
9
  end
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Spree::Api::PromotionsController, type: :request do
5
-
6
7
  shared_examples "a JSON response" do
7
8
  it 'should be ok' do
8
9
  subject
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  module Spree
3
5
  describe Spree::Api::PropertiesController, type: :request do
4
-
5
6
  let!(:property_1) { Property.create!(name: "foo", presentation: "Foo") }
6
7
  let!(:property_2) { Property.create!(name: "bar", presentation: "Bar") }
7
8
 
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::ReturnAuthorizationsController, type: :request do
5
-
6
7
  let!(:order) { create(:shipped_order) }
7
8
 
8
9
  let(:product) { create(:product) }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Spree::Api::ShipmentsController, type: :request do
@@ -212,6 +214,17 @@ describe Spree::Api::ShipmentsController, type: :request do
212
214
  expect(json_response['shipments'][0]['order']['payments'][0]['source'].keys).to match_array ["id"]
213
215
  end
214
216
  end
217
+
218
+ context "check payment" do
219
+ let(:current_api_user) { shipped_order.user }
220
+ let(:shipped_order) { create(:shipped_order, payment_type: :check_payment) }
221
+
222
+ before { subject }
223
+
224
+ it 'does not try to render a nil source' do
225
+ expect(json_response['shipments'][0]['order']['payments'][0]['source']).to eq(nil)
226
+ end
227
+ end
215
228
  end
216
229
 
217
230
  context 'with filtering' do
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::StatesController, type: :request do
5
-
6
7
  let!(:state) { create(:state, name: "Victoria") }
7
8
  let(:attributes) { [:id, :name, :abbr, :country_id] }
8
9
 
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::StockItemsController, type: :request do
5
-
6
7
  let!(:stock_location) { create(:stock_location_with_items) }
7
8
  let!(:stock_item) { stock_location.stock_items.order(:id).first }
8
9
  let!(:attributes) {
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::StockLocationsController, type: :request do
5
-
6
7
  let!(:stock_location) { create(:stock_location) }
7
8
  let!(:attributes) { [:id, :name, :address1, :address2, :city, :state_id, :state_name, :country_id, :zipcode, :phone, :active] }
8
9
 
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::StockMovementsController, type: :request do
5
-
6
7
  let!(:stock_location) { create(:stock_location_with_items) }
7
8
  let!(:stock_item) { stock_location.stock_items.order(:id).first }
8
9
  let!(:stock_movement) { create(:stock_movement, stock_item: stock_item) }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Spree::Api::StoreCreditEventsController, type: :request do
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  module Spree
4
6
  describe Api::StoresController, type: :request do
5
-
6
7
  let!(:store) do
7
8
  create(:store, name: "My Spree Store", url: "spreestore.example.com")
8
9
  end
@@ -18,8 +19,7 @@ module Spree
18
19
  create(:store,
19
20
  name: "Extra Store",
20
21
  url: "spreestore-5.example.com",
21
- default: false
22
- )
22
+ default: false)
23
23
  end
24
24
 
25
25
  it "can list the available stores" do
@@ -35,7 +35,8 @@ module Spree
35
35
  "mail_from_address" => "spree@example.org",
36
36
  "default_currency" => nil,
37
37
  "code" => store.code,
38
- "default" => true
38
+ "default" => true,
39
+ "available_locales" => ["en"]
39
40
  },
40
41
  {
41
42
  "id" => non_default_store.id,
@@ -47,7 +48,8 @@ module Spree
47
48
  "mail_from_address" => "spree@example.org",
48
49
  "default_currency" => nil,
49
50
  "code" => non_default_store.code,
50
- "default" => false
51
+ "default" => false,
52
+ "available_locales" => ["en"]
51
53
  }
52
54
  ])
53
55
  end
@@ -64,7 +66,8 @@ module Spree
64
66
  "mail_from_address" => "spree@example.org",
65
67
  "default_currency" => nil,
66
68
  "code" => store.code,
67
- "default" => true
69
+ "default" => true,
70
+ "available_locales" => ["en"]
68
71
  )
69
72
  end
70
73
 
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::TaxonomiesController, type: :request do
5
-
6
7
  let(:taxonomy) { create(:taxonomy) }
7
8
  let(:taxon) { create(:taxon, name: "Ruby", taxonomy: taxonomy) }
8
9
  let(:taxon2) { create(:taxon, name: "Rails", taxonomy: taxonomy) }
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::TaxonsController, type: :request do
5
-
6
7
  let(:taxonomy) { create(:taxonomy) }
7
8
  let(:taxon) { create(:taxon, name: "Ruby", taxonomy: taxonomy) }
8
9
  let(:taxon2) { create(:taxon, name: "Rails", taxonomy: taxonomy) }
@@ -1,11 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'shared_examples/protect_product_actions'
2
4
  require 'spec_helper'
3
5
 
4
6
  module Spree
5
7
  describe Spree::Api::ProductsController, type: :request do
6
-
7
8
  let!(:product) { create(:product) }
8
- let(:attributes) { [:id, :name, :description, :price, :available_on, :slug, :meta_description, :meta_keywords, :taxon_ids] }
9
+ let(:attributes) { [:id, :name, :description, :price, :available_on, :slug, :meta_description, :meta_keywords, :taxon_ids, :meta_title] }
9
10
 
10
11
  context "without authentication" do
11
12
  before { Spree::Api::Config[:requires_authentication] = false }
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::UsersController, type: :request do
5
-
6
7
  let(:user) { create(:user, spree_api_key: SecureRandom.hex) }
7
8
  let(:stranger) { create(:user, email: 'stranger@example.com') }
8
9
  let(:attributes) { [:id, :email, :created_at, :updated_at] }
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::VariantsController, type: :request do
5
-
6
7
  let!(:product) { create(:product) }
7
8
  let!(:variant) do
8
9
  variant = product.master
@@ -87,7 +88,6 @@ module Spree
87
88
  end
88
89
 
89
90
  context "stock filtering" do
90
-
91
91
  context "only variants in stock" do
92
92
  subject { get spree.api_variants_path, params: { in_stock_only: "true" } }
93
93
 
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module Spree
4
6
  describe Api::ZonesController, type: :request do
5
-
6
7
  let!(:attributes) { [:id, :name, :zone_members] }
7
8
  let!(:zone) { create(:zone, name: 'Europe') }
8
9
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  shared_examples "modifying product actions are restricted" do
2
4
  it "cannot create a new product if not an admin" do
3
5
  post spree.api_products_path, params: { product: { name: "Brand new product!" } }
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  if ENV["COVERAGE"]
2
4
  require 'simplecov'
3
5
  SimpleCov.start('rails')
@@ -9,7 +11,7 @@ ENV["RAILS_ENV"] ||= 'test'
9
11
  require 'solidus_api'
10
12
  require 'spree/testing_support/dummy_app'
11
13
  DummyApp.setup(
12
- gem_root: File.expand_path('../../', __FILE__),
14
+ gem_root: File.expand_path('..', __dir__),
13
15
  lib_name: 'solidus_api'
14
16
  )
15
17
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec::Matchers.define :be_paginated do
2
4
  match do |actual|
3
5
  %w[count total_count current_page pages per_page].all? do |attr|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/all'
2
4
 
3
5
  module ControllerHacks
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.configure do |config|
2
4
  config.before(:suite) do
3
5
  DatabaseCleaner.strategy = :transaction
@@ -1,4 +1,6 @@
1
1
 
2
+ # frozen_string_literal: true
3
+
2
4
  RSpec::Matchers.define :have_attributes do |expected_attributes|
3
5
  match do |actual|
4
6
  # actual is a Hash object representing an object, like this:
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  json.(widget, :id, :name, :position)
@@ -1,7 +1,9 @@
1
1
 
2
+ # frozen_string_literal: true
3
+
2
4
  json.widgets(@collection) do |widget|
3
5
  json.partial!("spree/api/widgets/widget", widget: widget)
4
6
  end
5
7
  json.count @collection.count
6
- json.current_page (params[:page] or 1)
8
+ json.current_page(params[:page] || 1)
7
9
  json.pages @collection.total_pages
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  json.attributes [:name]
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  json.partial!("spree/api/widgets/widget", widget: @object)