Added test for RootRouteConstraint and conferences#current
This commit is contained in:
parent
529b8eb710
commit
ee7684d845
5 changed files with 60 additions and 5 deletions
|
|
@ -12,7 +12,7 @@ class ConferencesController < ApplicationController
|
|||
def show; end
|
||||
|
||||
def current
|
||||
current = Conference.first
|
||||
current = Conference.where('start_date <= ? AND end_date >= ?', Date.current, Date.current).first
|
||||
redirect_to conference_path(current.short_title)
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
require "root_route_constraint"
|
||||
require 'root_route_constraint'
|
||||
Osem::Application.routes.draw do
|
||||
|
||||
if ENV['OSEM_ICHAIN_ENABLED'] == 'true'
|
||||
|
|
|
|||
|
|
@ -1,10 +1,19 @@
|
|||
class RootRouteConstraint
|
||||
def initialize
|
||||
@current = Conference.where('end_date >= ?', Date.current).reorder(start_date: :asc)
|
||||
@current = Conference.where('start_date <= ? AND end_date >= ?', Date.current, Date.current).reorder(start_date: :asc)
|
||||
end
|
||||
|
||||
##
|
||||
# Checks if only one conference is live and has a public splashpage
|
||||
# If any conference is live it checks how many live conferences are there
|
||||
# ====Returns
|
||||
# * +true+ -> only one conferene is live AND the conference has public splashpage
|
||||
# * +false+ -> no or more than one conferences are live or the only live conferece has no public splashpage
|
||||
def matches?(*)
|
||||
return unless @current.present? && @current.first.splashpage.present?
|
||||
@current.count == 1 && @current.first.splashpage.public?
|
||||
if @current.present? && @current.first.splashpage.present?
|
||||
@current.count == 1 && @current.first.splashpage.public?
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -26,6 +26,13 @@ describe ConferencesController do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'GET #current' do
|
||||
it 'redirects to first conference splashpage' do
|
||||
get :current
|
||||
expect(response).to redirect_to(conference_path(Conference.first.short_title))
|
||||
end
|
||||
end
|
||||
|
||||
describe 'OPTIONS #index' do
|
||||
it 'Response code is 200' do
|
||||
process :index, 'OPTIONS'
|
||||
|
|
|
|||
39
spec/lib/root_route_constraint_spec.rb
Normal file
39
spec/lib/root_route_constraint_spec.rb
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe RootRouteConstraint do
|
||||
describe '#matches?' do
|
||||
|
||||
it 'returns false, if no conference is live' do
|
||||
constraint = RootRouteConstraint.new
|
||||
expect(constraint.matches?).to eq false
|
||||
end
|
||||
|
||||
it 'returns false, when one conference is live but no splashpage' do
|
||||
create(:conference)
|
||||
constraint = RootRouteConstraint.new
|
||||
expect(constraint.matches?).to eq false
|
||||
end
|
||||
|
||||
it 'returns false, when one conference is live but no public splashpage' do
|
||||
conference = create(:full_conference)
|
||||
conference.splashpage.public = false
|
||||
conference.splashpage.save
|
||||
constraint = RootRouteConstraint.new
|
||||
expect(constraint.matches?).to eq false
|
||||
end
|
||||
|
||||
it 'returns true, when one conference is live and has public splashpage' do
|
||||
create(:full_conference)
|
||||
constraint = RootRouteConstraint.new
|
||||
expect(constraint.matches?).to eq true
|
||||
end
|
||||
|
||||
it 'returns false, if more than one conference is live' do
|
||||
create(:full_conference)
|
||||
create(:full_conference)
|
||||
constraint = RootRouteConstraint.new
|
||||
expect(constraint.matches?).to eq false
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue