From ffe4603f2f7ec88b8823e654e8955e80442f2fcf Mon Sep 17 00:00:00 2001 From: Joseph Johansen Date: Thu, 1 Aug 2024 11:55:20 +0100 Subject: [PATCH] Preload enterprise logos and promo images for shops page --- app/services/shops_list_service.rb | 2 ++ spec/services/shops_list_service_spec.rb | 42 ++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 spec/services/shops_list_service_spec.rb diff --git a/app/services/shops_list_service.rb b/app/services/shops_list_service.rb index 030010bea1..0e4d42f99e 100644 --- a/app/services/shops_list_service.rb +++ b/app/services/shops_list_service.rb @@ -19,5 +19,7 @@ class ShopsListService .includes(address: [:state, :country]) .includes(:properties) .includes(supplied_products: :properties) + .with_attached_promo_image + .with_attached_logo end end diff --git a/spec/services/shops_list_service_spec.rb b/spec/services/shops_list_service_spec.rb new file mode 100644 index 0000000000..c3ae5e3ae7 --- /dev/null +++ b/spec/services/shops_list_service_spec.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +require "spec_helper" + +RSpec.describe ShopsListService do + subject { described_class.new } + before do + create_list :enterprise, 3, :with_logo_image, :with_promo_image + create_list :distributor_enterprise, 3, + :with_logo_image, + :with_promo_image, + with_payment_and_shipping: true + end + + let(:shop) { subject.open_shops.first } + + describe "#open_shops" do + it "preloads promo images" do + expect(shop.association(:promo_image_attachment).loaded?).to be true + expect(shop.promo_image.association(:blob).loaded?).to be true + end + + it "preloads logos" do + expect(shop.association(:logo_attachment).loaded?).to be true + expect(shop.logo.association(:blob).loaded?).to be true + end + end + + describe "#closed_shops" do + let(:shop) { subject.closed_shops.first } + + it "preloads promo images" do + expect(shop.association(:promo_image_attachment).loaded?).to be true + expect(shop.promo_image.association(:blob).loaded?).to be true + end + + it "preloads logos" do + expect(shop.association(:logo_attachment).loaded?).to be true + expect(shop.logo.association(:blob).loaded?).to be true + end + end +end