Merge master

This commit is contained in:
Michael Ball 2020-02-06 01:20:11 -08:00
commit 7586112f72
217 changed files with 2853 additions and 3035 deletions

View file

@ -1,86 +0,0 @@
# frozen_string_literal: true
require 'spec_helper'
feature Conference do
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
shared_examples 'add and update cfp' do
scenario 'adds a new cfp', feature: true, js: true do
expected_count = Cfp.count + 1
sign_in organizer
visit new_admin_conference_program_cfp_path(conference.short_title)
click_button 'Create Cfp'
page.find('#flash')
expect(flash)
.to eq('Creating the call for papers failed. ' +
"Start date can't be blank. End date can't be blank.")
today = Date.today - 1
page.execute_script(
"$('#registration-period-start-datepicker').val('#{today.strftime('%d/%m/%Y')}')")
page.execute_script(
"$('#registration-period-end-datepicker').val('#{(today + 6).strftime('%d/%m/%Y')}')")
click_button 'Create Cfp'
# Validations
expect(flash)
.to eq('Call for papers successfully created.')
visit admin_conference_program_cfp_path(conference.short_title, conference.program.cfp)
expect(find('#start-date').text).to eq(today.strftime('%A, %B %-d. %Y'))
expect(find('#end-date').text).to eq((today + 6).strftime('%A, %B %-d. %Y'))
expect(Cfp.count).to eq(expected_count)
end
scenario 'update cfp', feature: true, js: true do
create(:cfp, program: conference.program)
expected_count = Cfp.count
sign_in organizer
visit admin_conference_program_cfp_path(conference.short_title, conference.program.cfp)
click_link 'Edit'
# Validate update with empty start date will not saved
page.execute_script(
"$('#registration-period-start-datepicker').val('')")
click_button 'Update Cfp'
page.find('#flash')
expect(flash)
.to eq('Updating call for papers failed. ' +
"Start date can't be blank.")
# Fill in date
today = Date.today - 9
page.execute_script(
"$('#registration-period-start-datepicker').val('#{today.strftime('%d/%m/%Y')}')")
page.execute_script(
"$('#registration-period-end-datepicker').val('#{(today + 14).strftime('%d/%m/%Y')}')")
click_button 'Update Cfp'
# Validations
page.find('#flash')
expect(flash)
.to eq('Call for papers successfully updated.')
visit admin_conference_program_cfp_path(conference.short_title, conference.program.cfp)
expect(find('#start-date').text).to eq(today.strftime('%A, %B %-d. %Y'))
expect(find('#end-date').text).to eq((today + 14).strftime('%A, %B %-d. %Y'))
expect(Cfp.count).to eq(expected_count)
end
end
describe 'organizer' do
it_behaves_like 'add and update cfp'
end
end

View file

@ -6,8 +6,7 @@ feature Commercial do
# It is necessary to use bang version of let to build roles before user
let!(:conference) { create(:conference) }
let!(:cfp) { create(:cfp, program: conference.program) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
let!(:participant) { create(:user) }
context 'in admin area' do

View file

@ -39,8 +39,7 @@ feature Conference do
scenario 'update conference', feature: true, js: true do
conference = create(:conference)
organizer_role = Role.find_by(name: 'organizer', resource: conference)
organizer = create(:user, role_ids: [organizer_role.id])
organizer = create(:organizer, resource: conference)
expected_count = Conference.count
@ -50,6 +49,14 @@ feature Conference do
fill_in 'conference_title', with: 'New Con'
fill_in 'conference_short_title', with: ''
day = Time.zone.today + 10
page
.execute_script("$('#conference-start-datepicker').val('" +
"#{day.strftime('%d/%m/%Y')}')")
page
.execute_script("$('#conference-end-datepicker').val('" +
"#{(day + 7).strftime('%d/%m/%Y')}')")
page.accept_alert do
click_button 'Update Conference'
end

View file

@ -5,8 +5,7 @@ require 'spec_helper'
feature Contact do
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, email: 'admin@example.com', role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
shared_examples 'contact field' do |field_name, field_value|
it 'updates a contact' do

View file

@ -4,8 +4,7 @@ require 'spec_helper'
feature DifficultyLevel do
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
shared_examples 'difficulty levels' do
scenario 'adds difficulty level', feature: true, js: true do

View file

@ -4,8 +4,7 @@ require 'spec_helper'
feature EmailSettings do
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
shared_examples 'email settings' do
scenario 'updates email settings',

View file

@ -4,8 +4,7 @@ require 'spec_helper'
feature EventType do
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
shared_examples 'event types' do
scenario 'adds and updates event type', feature: true do

View file

@ -4,8 +4,7 @@ require 'spec_helper'
feature Lodging do
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
scenario 'Add a lodging', feature: true, js: true do
path = "#{Rails.root}/app/assets/images/rails.png"

View file

@ -6,8 +6,7 @@ feature Program do
let!(:conference) { create(:conference) }
let!(:program) { conference.program }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
describe 'edit program' do
before :each do

View file

@ -6,8 +6,7 @@ feature Event do
let!(:conference) { create(:conference) }
let!(:registration_period) { create(:registration_period, conference: conference, start_date: Date.current) }
let!(:cfp) { create(:cfp, program_id: conference.program.id) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, email: 'admin@example.com', role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
let!(:participant) { create(:user) }
let!(:participant_without_bio) { create(:user, biography: '') }
@ -119,10 +118,11 @@ feature Event do
fill_in 'event_title', with: 'Example Proposal'
select('Example Event Type', from: 'event[event_type_id]')
fill_in 'event_abstract', with: 'Lorem ipsum abstract'
click_link 'Do you require something special?'
expect(page).to have_text('You have used 3 words')
page.find('#event_description')
click_link 'Do you require something special?'
fill_in 'event_description', with: 'Lorem ipsum description'
click_button 'Create Proposal'
page.find('#flash')

View file

@ -3,19 +3,21 @@
require 'spec_helper'
feature RegistrationPeriod do
# It is necessary to use bang version of let to build roles before user
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, email: 'admin@example.com', role_ids: [organizer_role.id]) }
let!(:registration_ticket) { create(:registration_ticket, conference: conference) }
let!(:organizer) { create(:organizer, email: 'admin@example.com', resource: conference) }
let(:start_date) { Date.today }
let(:end_date) { Date.today + 5 }
shared_examples 'successfully' do
scenario 'create and update registration period', js: true do
context 'as organizer' do
before do
sign_in organizer
visit admin_conference_registration_period_path(
conference_id: conference.short_title)
visit admin_conference_registration_period_path(conference_id: conference)
click_link 'New Registration Period'
end
scenario 'requires start date and end date', feature: true do
visit admin_conference_registration_period_path(conference_id: conference)
click_link 'New Registration Period'
click_button 'Save Registration Period'
@ -23,27 +25,54 @@ feature RegistrationPeriod do
expect(flash)
.to eq('An error prohibited the Registration Period from being saved: ' \
"Start date can't be blank. End date can't be blank.")
page.find('#flash .close').click
page
.execute_script("$('#registration-period-start-datepicker').val('" +
"#{Date.today.strftime('%d/%m/%Y')}')")
page
.execute_script("$('#registration-period-end-datepicker').val('" +
"#{(Date.today + 5).strftime('%d/%m/%Y')}')")
end
click_button 'Save Registration Period'
page.find('#flash')
expect(flash).to eq('Registration Period successfully updated.')
expect(current_path).to eq(admin_conference_registration_period_path(conference.short_title))
context 'with tickets' do
let!(:registration_ticket) do
create(:registration_ticket, conference: conference)
end
registration_period = RegistrationPeriod.where(conference_id: conference.id).first
registration_period.reload
expect(registration_period.start_date).to eq(Date.today)
expect(registration_period.end_date).to eq(Date.today + 5)
it 'creates registration period', feature: true, js: true do
page
.execute_script("$('#registration-period-start-datepicker').val('" +
"#{start_date.strftime('%d/%m/%Y')}')")
page
.execute_script("$('#registration-period-end-datepicker').val('" +
"#{end_date.strftime('%d/%m/%Y')}')")
click_button 'Save Registration Period'
page.find('#flash')
expect(flash).to eq('Registration Period successfully updated.')
expect(current_path).to eq(admin_conference_registration_period_path(conference.short_title))
expect(page).to have_text("Ticket required?\nYes")
registration_period = RegistrationPeriod.where(conference_id: conference.id).first
registration_period.reload
expect(registration_period.start_date).to eq(start_date)
expect(registration_period.end_date).to eq(end_date)
end
end
context 'without tickets' do
it 'creates registration period', feature: true, js: true do
page
.execute_script("$('#registration-period-start-datepicker').val('" +
"#{start_date.strftime('%d/%m/%Y')}')")
page
.execute_script("$('#registration-period-end-datepicker').val('" +
"#{end_date.strftime('%d/%m/%Y')}')")
click_button 'Save Registration Period'
page.find('#flash')
expect(flash).to eq('Registration Period successfully updated.')
expect(current_path).to eq(admin_conference_registration_period_path(conference.short_title))
expect(page).to have_text("Ticket required?\nNo")
registration_period = RegistrationPeriod.where(conference_id: conference.id).first
registration_period.reload
expect(registration_period.start_date).to eq(start_date)
expect(registration_period.end_date).to eq(end_date)
end
end
end
describe 'organizer' do
it_behaves_like 'successfully'
end
end

View file

@ -5,8 +5,7 @@ require 'spec_helper'
feature Room do
let!(:conference) { create(:conference) }
let!(:venue) { create(:venue, conference: conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
shared_examples 'rooms' do
scenario 'adds a room', feature: true, js: true do

View file

@ -6,8 +6,7 @@ feature Splashpage do
# It is necessary to use bang version of let to build roles before user
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, email: 'admin@example.com', role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
let!(:participant) { create(:user, biography: '', is_admin: false) }
scenario 'create a valid splashpage', js: true do

View file

@ -4,8 +4,7 @@ require 'spec_helper'
feature Sponsor do
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
shared_examples 'sponsors' do
scenario 'adds and updates sponsors', feature: true, js: true do

View file

@ -4,8 +4,7 @@ require 'spec_helper'
feature SponsorshipLevel do
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
shared_examples 'sponsorship_levels' do
scenario 'adds a sponsorship level', feature: true, js: true do

View file

@ -4,8 +4,7 @@ require 'spec_helper'
feature Ticket do
let!(:conference) { create(:conference, title: 'ExampleCon') }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, email: 'admin@example.com', role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
context 'as a organizer' do
before(:each) do

View file

@ -4,8 +4,7 @@ require 'spec_helper'
feature Track do
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
let(:user) { create(:user) }
shared_examples 'admin tracks' do

View file

@ -4,8 +4,7 @@ require 'spec_helper'
feature Conference do
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
shared_examples 'venue' do
scenario 'adds and updates venue' do

View file

@ -5,8 +5,7 @@ require 'spec_helper'
feature 'Version' do
let!(:conference) { create(:conference) }
let!(:cfp) { create(:cfp, program: conference.program) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
let(:event_with_commercial) { create(:event, program: conference.program) }
let(:event_commercial) { create(:event_commercial, commercialable: event_with_commercial, url: 'https://www.youtube.com/watch?v=M9bq_alk-sw') }
@ -212,7 +211,7 @@ feature 'Version' do
visit admin_revision_history_path
expect(page).to have_text("#{organizer.name} submitted new event ABC in conference #{conference.short_title}")
expect(page).to have_text("#{organizer.name} updated difficulty level and subtitle of event ABC in conference #{conference.short_title}")
expect(page).to have_text("#{organizer.name} updated subtitle and difficulty level of event ABC in conference #{conference.short_title}")
expect(page).to have_text("#{organizer.name} rejected event ABC in conference #{conference.short_title}")
expect(page).to have_text("#{organizer.name} resubmitted event ABC in conference #{conference.short_title}")
expect(page).to have_text("#{organizer.name} accepted event ABC in conference #{conference.short_title}")

View file

@ -4,8 +4,7 @@ require 'spec_helper'
feature Conference do
let!(:conference) { create(:conference) }
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
let!(:organizer) { create(:organizer, resource: conference) }
shared_examples 'volunteer' do
scenario 'adds and updates vdays', feature: true, js: true do