Refactor import_date_scope

This commit is contained in:
Matt-Yorkley
2019-07-30 13:14:28 +01:00
parent 90256f9c28
commit 4bec583bff
3 changed files with 17 additions and 6 deletions

View File

@@ -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).

View File

@@ -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 })
}

View File

@@ -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