osem-fcy/spec/features/conference_spec.rb
Henne Vogelsang 81853d1ef9
Retire semantic_form_for
Also a buttload of form cleanups...
2022-02-24 15:52:34 +01:00

86 lines
2.7 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
feature Conference do
let!(:user) { create(:admin) }
let!(:organization) { create(:organization) }
shared_examples 'add and update conference' do
scenario 'adds a new conference', feature: true, js: true do
expected_count = Conference.count + 1
sign_in user
visit new_admin_conference_path
select organization.name, from: 'conference_organization_id'
fill_in 'conference_title', with: 'Example Con'
fill_in 'conference_short_title', with: 'ExCon'
select('(GMT+01:00) Berlin', from: 'conference[timezone]')
today = Time.zone.today - 1
page
.execute_script("$('#conference-start-datepicker').val('" +
"#{today.strftime('%d/%m/%Y')}')")
page
.execute_script("$('#conference-end-datepicker').val('" +
"#{(today + 7).strftime('%d/%m/%Y')}')")
click_button 'Create Conference'
page.find('#flash')
expect(flash)
.to eq('Conference was successfully created.')
expect(Conference.count).to eq(expected_count)
expect(Conference.last.organization).to eq(organization)
user.reload
expect(user.has_cached_role? :organizer, Conference.last).to eq(true)
end
scenario 'update conference', feature: true, js: true do
conference = create(:conference)
organizer = create(:organizer, resource: conference)
expected_count = Conference.count
sign_in organizer
visit edit_admin_conference_path(conference.short_title)
fill_in 'conference_title', with: 'New Con'
fill_in 'conference_short_title', with: 'NewCon'
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
page.find('#flash')
expect(flash).to eq('Conference was successfully updated.')
conference.reload
expect(conference.title).to eq('New Con')
expect(conference.short_title).to eq('NewCon')
expect(Conference.count).to eq(expected_count)
end
end
describe 'admin' do
let!(:conference) { create(:conference) }
scenario 'has organization name in menu bar for conference views', feature: true, js: true do
sign_in user
visit admin_conference_path(conference.short_title)
expect(find('.navbar-brand').text).to eq(conference.organization.name)
end
it_behaves_like 'add and update conference'
end
end