From b86472ac3c732c65715bd6462fef39a44a0d36fe Mon Sep 17 00:00:00 2001 From: nasia Date: Fri, 7 Jul 2017 16:13:35 +0300 Subject: [PATCH] Add Call for Booths --- .haml-lint_todo.yml | 1 + app/models/cfp.rb | 2 +- app/views/admin/cfps/_booths_cfp.html.haml | 12 ++++++++++ spec/factories/cfps.rb | 2 +- spec/features/cfp_ability_spec.rb | 22 ++++++++++++++++--- .../organization_admin_ability_spec.rb | 22 ++++++++++++++++--- spec/features/organizer_ability_spec.rb | 22 ++++++++++++++++--- spec/models/program_spec.rb | 22 +++++++++++++++++-- 8 files changed, 92 insertions(+), 13 deletions(-) create mode 100644 app/views/admin/cfps/_booths_cfp.html.haml diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml index df4d0708..4644a6bb 100644 --- a/.haml-lint_todo.yml +++ b/.haml-lint_todo.yml @@ -180,6 +180,7 @@ linters: InstanceVariables: exclude: - "app/views/admin/campaigns/_form.html.haml" + - "app/views/admin/cfps/_booths_cfp.html.haml" - "app/views/admin/cfps/_form.html.haml" - "app/views/admin/conferences/_todo_list.html.haml" - "app/views/admin/difficulty_levels/_form.html.haml" diff --git a/app/models/cfp.rb b/app/models/cfp.rb index f06bec7b..97f276c9 100644 --- a/app/models/cfp.rb +++ b/app/models/cfp.rb @@ -1,7 +1,7 @@ # cannot delete program if there are events submitted class Cfp < ActiveRecord::Base - TYPES = %w(events).freeze + TYPES = %w(events booths).freeze scope :for_events, (-> { find_by(cfp_type: 'events') }) diff --git a/app/views/admin/cfps/_booths_cfp.html.haml b/app/views/admin/cfps/_booths_cfp.html.haml new file mode 100644 index 00000000..89012336 --- /dev/null +++ b/app/views/admin/cfps/_booths_cfp.html.haml @@ -0,0 +1,12 @@ +%dt + Start Date +%dd + = @cfp.start_date.strftime('%A, %B %e. %Y') +%dt + End Date +%dd + = @cfp.end_date.strftime('%A, %B %e. %Y') +%dt + Days Left +%dd + = pluralize(@cfp.remaining_days, 'day') diff --git a/spec/factories/cfps.rb b/spec/factories/cfps.rb index 6a8e96ed..6b061d53 100644 --- a/spec/factories/cfps.rb +++ b/spec/factories/cfps.rb @@ -3,7 +3,7 @@ FactoryGirl.define do factory :cfp do start_date { 1.day.ago } - end_date { 6.days.from_now } + end_date { 2.days.from_now } cfp_type 'events' program diff --git a/spec/features/cfp_ability_spec.rb b/spec/features/cfp_ability_spec.rb index 7af4e119..b12a2ef5 100644 --- a/spec/features/cfp_ability_spec.rb +++ b/spec/features/cfp_ability_spec.rb @@ -60,16 +60,32 @@ feature 'Has correct abilities' do visit edit_admin_conference_program_path(conference.short_title) expect(current_path).to eq(edit_admin_conference_program_path(conference.short_title)) + # Only event type exists + visit new_admin_conference_program_cfp_path(conference.short_title) + expect(current_path).to eq(new_admin_conference_program_cfp_path(conference.short_title)) + + # Both event and booth exists + cfb = create(:cfp, cfp_type: 'booths', program: conference.program) visit new_admin_conference_program_cfp_path(conference.short_title) expect(current_path).to eq root_path + visit edit_admin_conference_program_cfp_path(conference.short_title, conference.program.cfp) + expect(current_path).to eq(edit_admin_conference_program_cfp_path(conference.short_title, conference.program.cfp)) + conference.program.cfp.destroy! visit new_admin_conference_program_cfp_path(conference.short_title) expect(current_path).to eq new_admin_conference_program_cfp_path(conference.short_title) - create(:cfp, program: conference.program) - visit edit_admin_conference_program_cfp_path(conference.short_title, conference.program.cfp) - expect(current_path).to eq(edit_admin_conference_program_cfp_path(conference.short_title, conference.program.cfp)) + # Only booth exists + visit new_admin_conference_program_cfp_path(conference.short_title) + expect(current_path).to eq(new_admin_conference_program_cfp_path(conference.short_title)) + + visit edit_admin_conference_program_cfp_path(conference.short_title, cfb) + expect(current_path). to eq(edit_admin_conference_program_cfp_path(conference.short_title, cfb)) + + cfb.destroy + visit new_admin_conference_program_cfp_path(conference.short_title) + expect(current_path).to eq(new_admin_conference_program_cfp_path(conference.short_title)) create(:event, program: conference.program) visit edit_admin_conference_program_event_path(conference.short_title, conference.program.events.first) diff --git a/spec/features/organization_admin_ability_spec.rb b/spec/features/organization_admin_ability_spec.rb index aefb89f4..274d345f 100644 --- a/spec/features/organization_admin_ability_spec.rb +++ b/spec/features/organization_admin_ability_spec.rb @@ -102,16 +102,32 @@ feature 'Has correct abilities' do visit edit_admin_conference_program_path(conference.short_title) expect(current_path).to eq(edit_admin_conference_program_path(conference.short_title)) + # Only event exists + visit new_admin_conference_program_cfp_path(conference.short_title) + expect(current_path).to eq(new_admin_conference_program_cfp_path(conference.short_title)) + + # Both event and booth exists + cfb = create(:cfp, cfp_type: 'booths', program: conference.program) visit new_admin_conference_program_cfp_path(conference.short_title) expect(current_path).to eq root_path + visit edit_admin_conference_program_cfp_path(conference.short_title, conference.program.cfp) + expect(current_path).to eq(edit_admin_conference_program_cfp_path(conference.short_title, conference.program.cfp)) + conference.program.cfp.destroy! visit new_admin_conference_program_cfp_path(conference.short_title) expect(current_path).to eq new_admin_conference_program_cfp_path(conference.short_title) - create(:cfp, program: conference.program) - visit edit_admin_conference_program_cfp_path(conference.short_title, conference.program.cfp) - expect(current_path).to eq(edit_admin_conference_program_cfp_path(conference.short_title, conference.program.cfp)) + # Only booth exists + visit new_admin_conference_program_cfp_path(conference.short_title) + expect(current_path).to eq(new_admin_conference_program_cfp_path(conference.short_title)) + + visit edit_admin_conference_program_cfp_path(conference.short_title, cfb) + expect(current_path). to eq(edit_admin_conference_program_cfp_path(conference.short_title, cfb)) + + cfb.destroy + visit new_admin_conference_program_cfp_path(conference.short_title) + expect(current_path).to eq(new_admin_conference_program_cfp_path(conference.short_title)) visit admin_conference_program_events_path(conference.short_title) expect(current_path).to eq(admin_conference_program_events_path(conference.short_title)) diff --git a/spec/features/organizer_ability_spec.rb b/spec/features/organizer_ability_spec.rb index 34d87b0a..10c5d726 100644 --- a/spec/features/organizer_ability_spec.rb +++ b/spec/features/organizer_ability_spec.rb @@ -108,16 +108,32 @@ feature 'Has correct abilities' do visit edit_admin_conference_program_path(conference.short_title) expect(current_path).to eq(edit_admin_conference_program_path(conference.short_title)) + # Only event type exists + visit new_admin_conference_program_cfp_path(conference.short_title) + expect(current_path).to eq(new_admin_conference_program_cfp_path(conference.short_title)) + + # Both event and booth exists + cfb = create(:cfp, cfp_type: 'booths', program: conference.program) visit new_admin_conference_program_cfp_path(conference.short_title) expect(current_path).to eq root_path + visit edit_admin_conference_program_cfp_path(conference.short_title, conference.program.cfp) + expect(current_path).to eq(edit_admin_conference_program_cfp_path(conference.short_title, conference.program.cfp)) + conference.program.cfp.destroy! visit new_admin_conference_program_cfp_path(conference.short_title) expect(current_path).to eq new_admin_conference_program_cfp_path(conference.short_title) - create(:cfp, program: conference.program) - visit edit_admin_conference_program_cfp_path(conference.short_title, conference.program.cfp) - expect(current_path).to eq(edit_admin_conference_program_cfp_path(conference.short_title, conference.program.cfp)) + # Only booth exists + visit new_admin_conference_program_cfp_path(conference.short_title) + expect(current_path).to eq(new_admin_conference_program_cfp_path(conference.short_title)) + + visit edit_admin_conference_program_cfp_path(conference.short_title, cfb) + expect(current_path). to eq(edit_admin_conference_program_cfp_path(conference.short_title, cfb)) + + cfb.destroy + visit new_admin_conference_program_cfp_path(conference.short_title) + expect(current_path).to eq(new_admin_conference_program_cfp_path(conference.short_title)) visit admin_conference_program_events_path(conference.short_title) expect(current_path).to eq(admin_conference_program_events_path(conference.short_title)) diff --git a/spec/models/program_spec.rb b/spec/models/program_spec.rb index 208ca386..d81e32bc 100644 --- a/spec/models/program_spec.rb +++ b/spec/models/program_spec.rb @@ -253,10 +253,28 @@ describe Program do end describe '#remaining_cfp_types' do - it 'returns an array with the types for which a cfp doesn\'t exist' do + it 'returns an array with the types for which a cfp doesn\'t exist, when only the Event type does' do expect(program.remaining_cfp_types).to eq(Cfp::TYPES) - create(:cfp, cfp_type: 'events', program: program, end_date: Date.current + 1) + create(:cfp, cfp_type: 'events', program: program) + expect(program.remaining_cfp_types).to eq(['booths']) + end + + it 'returns an array with the types for which a cfp doesn\'t exist, when only the Booth type does' do + expect(program.remaining_cfp_types).to eq(Cfp::TYPES) + create(:cfp, cfp_type: 'booths', program: program) + expect(program.remaining_cfp_types).to eq(['events']) + end + + it 'returns an empty array when all the cfp types exist' do + expect(program.remaining_cfp_types).to eq(Cfp::TYPES) + create(:cfp, cfp_type: 'events', program: program) + create(:cfp, cfp_type: 'booths', program: program) expect(program.remaining_cfp_types).to eq([]) end + + it 'returns all the possible cfp types when there is no existed cfp type' do + expect(program.remaining_cfp_types).to eq(Cfp::TYPES) + expect(program.remaining_cfp_types). to eq(%w[events booths]) + end end end