diff --git a/admin/app/controllers/solidus_admin/products_controller.rb b/admin/app/controllers/solidus_admin/products_controller.rb index 156654662a..90822de245 100644 --- a/admin/app/controllers/solidus_admin/products_controller.rb +++ b/admin/app/controllers/solidus_admin/products_controller.rb @@ -16,7 +16,8 @@ def index Spree::Product.includes( :variant_images, master: :prices, - variants: :prices + variants: :prices, + variants_including_master: {stock_items: :stock_location} ), param: :q, distinct: false diff --git a/admin/spec/requests/solidus_admin/products_spec.rb b/admin/spec/requests/solidus_admin/products_spec.rb index ea6830b132..5e08e52e5a 100644 --- a/admin/spec/requests/solidus_admin/products_spec.rb +++ b/admin/spec/requests/solidus_admin/products_spec.rb @@ -9,6 +9,20 @@ allow_any_instance_of(SolidusAdmin::BaseController).to receive(:spree_current_user).and_return(admin_user) end + describe "GET #index" do + before { create_list(:product, 3) } + + it "renders successfully" do + get solidus_admin.products_path + expect(response).to have_http_status(:ok) + end + + it "loads stock for every product without an N+1" do + expect { get solidus_admin.products_path } + .to make_database_queries(matching: /from .spree_stock_items./i, count: 1) + end + end + describe "PATCH #update" do let(:product) { create(:product) } let(:params) do