mirror of
https://github.com/openSUSE/osem.git
synced 2026-04-22 16:03:47 -04:00
95 lines
2.9 KiB
Ruby
95 lines
2.9 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Program do
|
|
let!(:conference) { create(:conference, end_date: Date.today + 3) }
|
|
let!(:program) { conference.program }
|
|
|
|
describe '#rating_enabled?' do
|
|
it 'returns true if proposals can be rated (program.rating > 0)' do
|
|
program.rating = 3
|
|
expect(program.rating_enabled?).to be true
|
|
end
|
|
|
|
it 'returns false if proposals cannot be rated (program.rating == 0) ' do
|
|
program = conference.program
|
|
program.rating = 0
|
|
expect(program.rating_enabled?).to be false
|
|
end
|
|
end
|
|
|
|
describe '#cfp_open?' do
|
|
describe 'returns true' do
|
|
it 'when there is an open Call for Papers for the conference' do
|
|
create(:cfp, start_date: Date.today - 2, end_date: Date.today, program_id: program.id)
|
|
expect(program.cfp_open?).to be true
|
|
end
|
|
end
|
|
|
|
describe 'returns false' do
|
|
it 'when there is no Call for Papers for the conference' do
|
|
expect(program.cfp_open?).to be false
|
|
end
|
|
|
|
it 'when the Call for Papers period is over' do
|
|
build(:cfp, start_date: Date.today - 2, end_date: Date.today - 1, program_id: program.id)
|
|
expect(program.cfp_open?).to be false
|
|
end
|
|
end
|
|
end
|
|
|
|
describe 'excecutes before_create functions' do
|
|
it 'and creates events_types' do
|
|
program.destroy!
|
|
conference.reload
|
|
expect(conference.program).to eq nil
|
|
|
|
create(:program, conference_id: conference.id)
|
|
conference.reload
|
|
expect(conference.program.event_types.count).to eq 2
|
|
end
|
|
|
|
it 'and creates difficulty_levels' do
|
|
program.destroy!
|
|
conference.reload
|
|
expect(conference.program).to eq nil
|
|
|
|
create(:program, conference_id: conference.id)
|
|
conference.reload
|
|
expect(conference.program.difficulty_levels.count).to eq 3
|
|
end
|
|
end
|
|
|
|
describe 'languages' do
|
|
it "is not valid if languages aren't two letters separated by commas" do
|
|
program.languages = 'eng, De es'
|
|
expect(program.valid?).to eq false
|
|
expect(program.errors[:languages]).to eq ['must be two letters separated by commas']
|
|
end
|
|
|
|
it 'is not valid if languages are repeated' do
|
|
program.languages = 'en,de,es,en'
|
|
expect(program.valid?).to eq false
|
|
expect(program.errors[:languages]).to eq ["can't be repeated"]
|
|
end
|
|
|
|
it "is not valid if languages aren't ISO 639-1 valid codes" do
|
|
program.languages = 'en,hh,yu,zi,oo'
|
|
expect(program.valid?).to eq false
|
|
expect(program.errors[:languages]).to eq ['must be ISO 639-1 valid codes']
|
|
end
|
|
|
|
it 'is valid otherwise' do
|
|
program.languages = 'en,De, ES, ru,el'
|
|
expect(program.valid?).to eq true
|
|
end
|
|
end
|
|
|
|
describe '#languages_list' do
|
|
it 'returns the list of readable languages' do
|
|
program.languages = 'en,de,fr,ru,zh'
|
|
expect(program.languages_list).to eq %w(English German French Russian Chinese)
|
|
end
|
|
end
|
|
|
|
end
|