From fe824c2d4eedb6c295ed0290635337bd7ef36089 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Thu, 31 Jan 2013 10:14:12 +1100 Subject: [PATCH] Add order cycle active and inactive scopes --- app/models/order_cycle.rb | 3 +++ spec/models/order_cycle_spec.rb | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/app/models/order_cycle.rb b/app/models/order_cycle.rb index 676aff474a..8c753d97db 100644 --- a/app/models/order_cycle.rb +++ b/app/models/order_cycle.rb @@ -9,6 +9,9 @@ class OrderCycle < ActiveRecord::Base validates_presence_of :name, :coordinator_id + scope :active, lambda { where('orders_open_at <= ? AND orders_close_at >= ?', Time.now, Time.now) } + scope :inactive, lambda { where('orders_open_at > ? OR orders_close_at < ?', Time.now, Time.now) } + def suppliers self.exchanges.where(:receiver_id => self.coordinator).map(&:sender).uniq diff --git a/spec/models/order_cycle_spec.rb b/spec/models/order_cycle_spec.rb index d8a3d8e653..c7987799a2 100644 --- a/spec/models/order_cycle_spec.rb +++ b/spec/models/order_cycle_spec.rb @@ -31,6 +31,15 @@ describe OrderCycle do oc.exchanges.count.should == 3 end + it "finds active and inactive order cycles" do + oc_active = create(:simple_order_cycle, orders_open_at: 1.week.ago, orders_close_at: 1.week.from_now) + oc_not_yet_open = create(:simple_order_cycle, orders_open_at: 1.week.from_now, orders_close_at: 2.weeks.from_now) + oc_already_closed = create(:simple_order_cycle, orders_open_at: 2.weeks.ago, orders_close_at: 1.week.ago) + + OrderCycle.active.should == [oc_active] + OrderCycle.inactive.sort.should == [oc_not_yet_open, oc_already_closed].sort + end + it "reports its suppliers" do oc = create(:simple_order_cycle)