From 1b709a3e0370bb7db9ff8e6e3818d026fab65add Mon Sep 17 00:00:00 2001 From: Victor Nava Date: Thu, 5 Mar 2015 16:03:48 +1100 Subject: [PATCH] Do not load Order Cycles that closed more than a month a go --- Gemfile.lock | 4 ++-- app/controllers/admin/order_cycles_controller.rb | 2 +- app/models/order_cycle.rb | 2 ++ db/schema.rb | 2 +- spec/models/order_cycle_spec.rb | 10 ++++++++++ 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 57e0877ad2..320e680184 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -325,7 +325,7 @@ GEM mail (2.5.4) mime-types (~> 1.16) treetop (~> 1.4.8) - method_source (0.8.1) + method_source (0.8.2) mime-types (1.25.1) mini_portile (0.6.2) momentjs-rails (2.5.1) @@ -509,7 +509,7 @@ GEM xml-simple (1.1.4) xpath (2.0.0) nokogiri (~> 1.3) - zeus (0.13.3) + zeus (0.15.4) method_source (>= 0.6.7) PLATFORMS diff --git a/app/controllers/admin/order_cycles_controller.rb b/app/controllers/admin/order_cycles_controller.rb index 04a6d234c6..22a7aaa3cc 100644 --- a/app/controllers/admin/order_cycles_controller.rb +++ b/app/controllers/admin/order_cycles_controller.rb @@ -79,7 +79,7 @@ module Admin ocs.undated + ocs.soonest_closing + ocs.soonest_opening + - ocs.most_recently_closed + ocs.recently_closed end private diff --git a/app/models/order_cycle.rb b/app/models/order_cycle.rb index 134af04c91..bf52d5c129 100644 --- a/app/models/order_cycle.rb +++ b/app/models/order_cycle.rb @@ -19,7 +19,9 @@ class OrderCycle < ActiveRecord::Base scope :undated, where(orders_open_at: nil, orders_close_at: nil) scope :soonest_closing, lambda { active.order('order_cycles.orders_close_at ASC') } + # TODO This method returns all the closed orders. So maybe we can replace it with :recently_closed. scope :most_recently_closed, lambda { closed.order('order_cycles.orders_close_at DESC') } + scope :recently_closed, lambda { where("order_cycles.orders_close_at >= ?", 31.days.ago).order("order_cycles.orders_close_at DESC") } scope :soonest_opening, lambda { upcoming.order('order_cycles.orders_open_at ASC') } scope :distributing_product, lambda { |product| diff --git a/db/schema.rb b/db/schema.rb index a8ac91e6d8..6ef4fe2ee9 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -585,9 +585,9 @@ ActiveRecord::Schema.define(:version => 20150220035501) do t.string "email" t.text "special_instructions" t.integer "distributor_id" - t.integer "order_cycle_id" t.string "currency" t.string "last_ip_address" + t.integer "order_cycle_id" t.integer "cart_id" end diff --git a/spec/models/order_cycle_spec.rb b/spec/models/order_cycle_spec.rb index 7ba2b66589..cc6035caa8 100644 --- a/spec/models/order_cycle_spec.rb +++ b/spec/models/order_cycle_spec.rb @@ -90,6 +90,16 @@ describe OrderCycle do end end + describe "#recently_closed" do + it "finds the orders closed in the last 30 days sorted in descending order" do + oc1 = create(:simple_order_cycle, orders_close_at: 1.day.ago) + oc2 = create(:simple_order_cycle, orders_close_at: 30.days.ago) + create(:simple_order_cycle, orders_close_at: 31.days.ago) + + OrderCycle.recently_closed.should == [oc1 , oc2] + end + end + it "finds the most recently closed order cycles" do oc1 = create(:simple_order_cycle, orders_close_at: 2.hours.ago) oc2 = create(:simple_order_cycle, orders_close_at: 1.hour.ago)