Implements targets and campaigns for conference
This commit is contained in:
parent
678fe38a25
commit
857ac43e74
40 changed files with 1086 additions and 44 deletions
105
spec/models/target_spec.rb
Normal file
105
spec/models/target_spec.rb
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Target do
|
||||
|
||||
describe 'validations' do
|
||||
it 'has a valid factory' do
|
||||
expect(build(:target)).to be_valid
|
||||
end
|
||||
|
||||
it 'is not valid without a due date' do
|
||||
should validate_presence_of(:due_date)
|
||||
end
|
||||
|
||||
it 'is not valid without a target_count' do
|
||||
should validate_presence_of(:target_count)
|
||||
end
|
||||
|
||||
it 'is not valid without a unit' do
|
||||
should validate_presence_of(:unit)
|
||||
end
|
||||
|
||||
it 'is valid with a target_count greater than zero' do
|
||||
should allow_value(10).for(:target_count)
|
||||
end
|
||||
|
||||
it 'is not valid with a target_count equals zero' do
|
||||
should_not allow_value(0).for(:target_count)
|
||||
end
|
||||
|
||||
it 'is not valid with a target_count smaller than zero' do
|
||||
should_not allow_value(-10).for(:target_count)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#get_progress' do
|
||||
it 'returns zero if there are no registrations' do
|
||||
conference = build(:conference)
|
||||
target = build(:target, target_count: 10, unit: Target.units[:registrations])
|
||||
conference.targets = [target]
|
||||
|
||||
expect(target.get_progress).to eq('0')
|
||||
end
|
||||
|
||||
it 'returns 10 if there one registrations of 10' do
|
||||
conference = create(:conference)
|
||||
target = create(:target, target_count: 10, unit: Target.units[:registrations])
|
||||
registration = create(:registration)
|
||||
|
||||
conference.targets = [target]
|
||||
conference.registrations = [registration]
|
||||
|
||||
expect(target.get_progress).to eq('10')
|
||||
end
|
||||
|
||||
it 'returns zero if there are no submissions' do
|
||||
conference = build(:conference)
|
||||
target = build(:target, target_count: 10, unit: Target.units[:submissions])
|
||||
conference.targets = [target]
|
||||
|
||||
expect(target.get_progress).to eq('0')
|
||||
end
|
||||
|
||||
it 'returns 10 if there one submissions of 10' do
|
||||
conference = create(:conference)
|
||||
target = create(:target, target_count: 10, unit: Target.units[:submissions])
|
||||
event = create(:event)
|
||||
|
||||
conference.targets = [target]
|
||||
conference.events = [event]
|
||||
|
||||
expect(target.get_progress).to eq('10')
|
||||
end
|
||||
|
||||
it 'returns zero if there are no program minutes' do
|
||||
conference = build(:conference)
|
||||
target = build(:target, target_count: 10, unit: Target.units[:program_minutes])
|
||||
conference.targets = [target]
|
||||
|
||||
expect(target.get_progress).to eq('0')
|
||||
end
|
||||
|
||||
it 'returns 10 if there are 30 program minutes of 300' do
|
||||
conference = create(:conference)
|
||||
target = create(:target, target_count: 300, unit: Target.units[:program_minutes])
|
||||
event = create(:event)
|
||||
|
||||
conference.targets = [target]
|
||||
conference.events = [event]
|
||||
|
||||
expect(target.get_progress).to eq('10')
|
||||
end
|
||||
end
|
||||
|
||||
describe '#to_s' do
|
||||
it 'returns a string in the correct format' do
|
||||
conference = build(:conference)
|
||||
target = build(:target, target_count: 10, unit: Target.units[:registrations])
|
||||
conference.targets = [target]
|
||||
|
||||
result = "10 Registrations by #{Date.today + 14}"
|
||||
|
||||
expect(target.to_s).to eq(result)
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue