diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index e55124201f..ace78ed248 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -142,7 +142,6 @@ Layout/LineLength: - spec/controllers/api/product_images_controller_spec.rb - spec/controllers/api/products_controller_spec.rb - spec/controllers/api/promo_images_controller_spec.rb - - spec/controllers/api/shipments_controller_spec.rb - spec/controllers/api/variants_controller_spec.rb - spec/controllers/cart_controller_spec.rb - spec/controllers/checkout_controller_spec.rb diff --git a/spec/controllers/api/shipments_controller_spec.rb b/spec/controllers/api/shipments_controller_spec.rb index d79eaf0c08..3643f0a58d 100644 --- a/spec/controllers/api/shipments_controller_spec.rb +++ b/spec/controllers/api/shipments_controller_spec.rb @@ -4,8 +4,9 @@ describe Api::ShipmentsController, type: :controller do render_views let!(:shipment) { create(:shipment) } - let!(:attributes) { [:id, :tracking, :number, :cost, :shipped_at, :stock_location_name, :order_id] } - let!(:resource_scoping) { { order_id: shipment.order.to_param, id: shipment.to_param } } + let!(:attributes) do + [:id, :tracking, :number, :cost, :shipped_at, :stock_location_name, :order_id] + end let(:current_api_user) { build(:user) } before do @@ -14,12 +15,12 @@ describe Api::ShipmentsController, type: :controller do context "as a non-admin" do it "cannot make a shipment ready" do - api_put :ready + api_put :ready, order_id: shipment.order.to_param, id: shipment.to_param assert_unauthorized! end it "cannot make a shipment shipped" do - api_put :ship + api_put :ship, order_id: shipment.order.to_param, id: shipment.to_param assert_unauthorized! end end @@ -92,7 +93,7 @@ describe Api::ShipmentsController, type: :controller do it "can make a shipment ready" do allow_any_instance_of(Spree::Order).to receive_messages(paid?: true, complete?: true) - api_put :ready + api_put :ready, order_id: shipment.order.to_param, id: shipment.to_param expect(attributes.all?{ |attr| json_response.key? attr.to_s }).to be_truthy expect(json_response["state"]).to eq("ready") @@ -101,7 +102,7 @@ describe Api::ShipmentsController, type: :controller do it "cannot make a shipment ready if the order is unpaid" do allow_any_instance_of(Spree::Order).to receive_messages(paid?: false) - api_put :ready + api_put :ready, order_id: shipment.order.to_param, id: shipment.to_param expect(json_response["error"]).to eq("Cannot ready shipment.") expect(response.status).to eq(422) @@ -109,21 +110,26 @@ describe Api::ShipmentsController, type: :controller do context 'for completed shipments' do let(:order) { create :completed_order_with_totals } - let!(:resource_scoping) { { order_id: order.to_param, id: order.shipments.first.to_param } } it 'adds a variant to a shipment' do - api_put :add, variant_id: variant.to_param, quantity: 2 + api_put :add, variant_id: variant.to_param, + quantity: 2, + order_id: order.to_param, + id: order.shipments.first.to_param expect(response.status).to eq(200) - expect(order.shipment.reload.inventory_units.select { |h| h['variant_id'] == variant.id }.size).to eq 2 + expect(inventory_units_for(variant).size).to eq 2 end it 'removes a variant from a shipment' do order.contents.add(variant, 2) - api_put :remove, variant_id: variant.to_param, quantity: 1 + api_put :remove, variant_id: variant.to_param, + quantity: 1, + order_id: order.to_param, + id: order.shipments.first.to_param expect(response.status).to eq(200) - expect(order.shipment.reload.inventory_units.select { |h| h['variant_id'] == variant.id }.size).to eq(1) + expect(inventory_units_for(variant).size).to eq(1) end end @@ -140,7 +146,9 @@ describe Api::ShipmentsController, type: :controller do it "can transition a shipment from ready to ship" do shipment.reload - api_put :ship, order_id: shipment.order.to_param, id: shipment.to_param, shipment: { tracking: "123123" } + api_put :ship, order_id: shipment.order.to_param, + id: shipment.to_param, + shipment: { tracking: "123123" } expect(attributes.all?{ |attr| json_response.key? attr.to_s }).to be_truthy expect(json_response["state"]).to eq("shipped") diff --git a/spec/controllers/api/shops_controller_spec.rb b/spec/controllers/api/shops_controller_spec.rb index 33343e8d84..91f88abc0a 100644 --- a/spec/controllers/api/shops_controller_spec.rb +++ b/spec/controllers/api/shops_controller_spec.rb @@ -34,7 +34,7 @@ module Api describe "#closed_shops" do it "returns data for all closed shops" do - spree_get :closed_shops, nil + spree_get :closed_shops, {} expect(json_response).not_to match hub.name diff --git a/spec/controllers/api/variants_controller_spec.rb b/spec/controllers/api/variants_controller_spec.rb index a5c81329dd..c91f25f2ec 100644 --- a/spec/controllers/api/variants_controller_spec.rb +++ b/spec/controllers/api/variants_controller_spec.rb @@ -113,7 +113,6 @@ describe Api::VariantsController, type: :controller do let(:product) { create(:product) } let(:variant) { product.master } - let(:resource_scoping) { { product_id: variant.product.to_param } } context "deleted variants" do before do @@ -121,7 +120,7 @@ describe Api::VariantsController, type: :controller do end it "are visible by admin" do - api_get :index, show_deleted: 1 + api_get :index, show_deleted: 1, product_id: variant.product.to_param expect(json_response.count).to eq(2) end @@ -129,7 +128,7 @@ describe Api::VariantsController, type: :controller do it "can create a new variant" do original_number_of_variants = variant.product.variants.count - api_post :create, variant: { sku: "12345", unit_value: "weight", unit_description: "L" } + api_post :create, variant: { sku: "12345", unit_value: "weight", unit_description: "L" }, product_id: variant.product.to_param expect(attributes.all?{ |attr| json_response.include? attr.to_s }).to eq(true) expect(response.status).to eq(201) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index e145fa7909..edc9519e94 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -36,7 +36,6 @@ WebMock.disable_net_connect!( # Requires supporting ruby files with custom matchers and macros, etc, # in spec/support/ and its subdirectories. Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } -require 'spree/testing_support/controller_requests' require 'spree/testing_support/capybara_ext' require 'spree/api/testing_support/setup' require 'spree/testing_support/authorization_helpers' @@ -148,8 +147,8 @@ RSpec.configure do |config| config.include Spree::UrlHelpers config.include Spree::CheckoutHelpers config.include Spree::MoneyHelper - config.include Spree::TestingSupport::ControllerRequests, type: :controller config.include Spree::TestingSupport::Preferences + config.include ControllerRequestsHelper, type: :controller config.include Devise::TestHelpers, type: :controller config.extend Spree::Api::TestingSupport::Setup, type: :controller config.include OpenFoodNetwork::ApiHelper, type: :controller diff --git a/spec/support/controller_hacks.rb b/spec/support/controller_hacks.rb deleted file mode 100644 index 7645e87372..0000000000 --- a/spec/support/controller_hacks.rb +++ /dev/null @@ -1,34 +0,0 @@ -require 'active_support/all' - -module ControllerHacks - def api_get(action, params = {}, session = nil, flash = nil) - api_process(action, params, session, flash, "GET") - end - - def api_post(action, params = {}, session = nil, flash = nil) - api_process(action, params, session, flash, "POST") - end - - def api_put(action, params = {}, session = nil, flash = nil) - api_process(action, params, session, flash, "PUT") - end - - def api_delete(action, params = {}, session = nil, flash = nil) - api_process(action, params, session, flash, "DELETE") - end - - def api_process(action, params = {}, session = nil, flash = nil, method = "get") - scoping = respond_to?(:resource_scoping) ? resource_scoping : {} - process(action, - params. - merge(scoping). - reverse_merge!(use_route: :spree, format: :json), - session, - flash, - method) - end -end - -RSpec.configure do |config| - config.include ControllerHacks, type: :controller -end diff --git a/spec/support/controller_requests_helper.rb b/spec/support/controller_requests_helper.rb new file mode 100644 index 0000000000..7187670f12 --- /dev/null +++ b/spec/support/controller_requests_helper.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +require 'active_support/all' + +module ControllerRequestsHelper + def api_get(action, params = {}, session = nil, flash = nil) + process_json_action(action, params, session, flash, "GET") + end + + def api_post(action, params = {}, session = nil, flash = nil) + process_json_action(action, params, session, flash, "POST") + end + + def api_put(action, params = {}, session = nil, flash = nil) + process_json_action(action, params, session, flash, "PUT") + end + + def api_delete(action, params = {}, session = nil, flash = nil) + process_json_action(action, params, session, flash, "DELETE") + end + + def spree_get(action, params = {}, session = nil, flash = nil) + process_action_with_route(action, params, session, flash, "GET") + end + + def spree_post(action, params = {}, session = nil, flash = nil) + process_action_with_route(action, params, session, flash, "POST") + end + + def spree_put(action, params = {}, session = nil, flash = nil) + process_action_with_route(action, params, session, flash, "PUT") + end + + def spree_delete(action, params = {}, session = nil, flash = nil) + process_action_with_route(action, params, session, flash, "DELETE") + end + + private + + def process_json_action(action, params = {}, session = nil, flash = nil, method = "get") + process_action_with_route(action, + params.reverse_merge!(format: :json), + session, + flash, + method) + end + + def process_action_with_route(action, params = {}, session = nil, flash = nil, method = "GET") + process(action, + params.reverse_merge!(use_route: :main_app), + session, + flash, + method) + end +end