From 4bec583bffd46ff3438bfc109a2cc7ac525b3906 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Tue, 30 Jul 2019 13:14:28 +0100 Subject: [PATCH] Refactor import_date_scope --- app/controllers/api/products_controller.rb | 7 +------ app/models/spree/product_decorator.rb | 5 +++++ spec/models/spree/product_spec.rb | 11 +++++++++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/controllers/api/products_controller.rb b/app/controllers/api/products_controller.rb index 8f0c6a5a44..f614df2c10 100644 --- a/app/controllers/api/products_controller.rb +++ b/app/controllers/api/products_controller.rb @@ -53,7 +53,7 @@ module Api editable_products.merge(product_scope) if params[:import_date].present? - product_query = product_query.joins(:variants).merge(import_date_scope).group_by_products_id + product_query = product_query.imported_on(params[:import_date]).group_by_products_id end @products = product_query.order('created_at DESC'). @@ -110,11 +110,6 @@ module Api scope.includes(:master) end - def import_date_scope - import_date = params[:import_date].to_datetime - Spree::Variant.where(import_date: import_date..import_date + 24.hours) - end - def paged_products_for_producers(producers) Spree::Product.scoped. merge(product_scope). diff --git a/app/models/spree/product_decorator.rb b/app/models/spree/product_decorator.rb index e0ebf327d3..ab8e492c95 100644 --- a/app/models/spree/product_decorator.rb +++ b/app/models/spree/product_decorator.rb @@ -56,6 +56,11 @@ Spree::Product.class_eval do ON (o_order_cycles.id = o_exchanges.order_cycle_id)") } + scope :imported_on, lambda { |date| + import_date = date.to_datetime + joins(:variants).merge(Spree::Variant.where(import_date: import_date..import_date + 24.hours)) + } + scope :with_order_cycles_inner, -> { joins(variants_including_master: { exchanges: :order_cycle }) } diff --git a/spec/models/spree/product_spec.rb b/spec/models/spree/product_spec.rb index b84da43c5b..2c3b706482 100644 --- a/spec/models/spree/product_spec.rb +++ b/spec/models/spree/product_spec.rb @@ -390,6 +390,17 @@ module Spree expect(stockable_products).to_not include p3 end end + + describe "imported_on" do + let!(:v1) { create(:variant, import_date: 1.day.ago) } + let!(:v2) { create(:variant, import_date: 2.days.ago) } + let!(:v3) { create(:variant, import_date: 1.day.ago) } + + it "returns products imported on given day" do + imported_products = Spree::Product.imported_on(1.day.ago.to_date) + expect(imported_products).to include v1.product, v3.product + end + end end describe "properties" do