diff --git a/app/controllers/admin/chapters_controller.rb b/app/controllers/admin/chapters_controller.rb index 48e79b9b1..e57bbbb10 100644 --- a/app/controllers/admin/chapters_controller.rb +++ b/app/controllers/admin/chapters_controller.rb @@ -23,7 +23,7 @@ def create def show authorize(@chapter) - @workshops = @chapter.workshops.upcoming + @workshops = @chapter.workshops.today_and_upcoming @sponsors = @chapter.sponsors.uniq @groups = @chapter.groups @subscribers = @chapter.subscriptions.last(20).reverse diff --git a/app/models/concerns/listable.rb b/app/models/concerns/listable.rb index 2b78e6c2a..30cd3c8e8 100644 --- a/app/models/concerns/listable.rb +++ b/app/models/concerns/listable.rb @@ -4,6 +4,7 @@ module Listable extend ActiveSupport::Concern included do + scope :today_and_upcoming, -> { where('date_and_time >= ?', Time.zone.today).order(date_and_time: :asc) } scope :upcoming, -> { where('date_and_time >= ?', Time.zone.now).order(date_and_time: :asc) } scope :past, -> { where('date_and_time < ?', Time.zone.now).order(:date_and_time) } scope :recent, lambda { diff --git a/spec/models/concerns/listable_spec.rb b/spec/models/concerns/listable_spec.rb index 5f77ecc0e..81b97191e 100644 --- a/spec/models/concerns/listable_spec.rb +++ b/spec/models/concerns/listable_spec.rb @@ -4,6 +4,19 @@ subject(:workshop) { Fabricate(:workshop) } context 'scopes' do + context '#today_and_upcoming' do + it 'returns a list of all today and upcoming workshops' do + Fabricate.times(5, :past_workshop) + future_workshops = Fabricate.times(3, :workshop) + + # Make sure one is not technically upcoming but is happening now + future_workshops.last.date_and_time = 1.hour.ago + future_workshops.last.save + + expect(Workshop.today_and_upcoming).to match_array(future_workshops) + end + end + context '#upcoming' do it 'returns a list of all upcoming workshops' do Fabricate.times(5, :past_workshop)