|
| 1 | +# frozen_string_literal: true |
| 2 | + |
| 3 | +require 'spec_helper' |
| 4 | + |
| 5 | +def expect_scheduled(event, time) |
| 6 | + visit admin_conference_program_event_path(event.conference.short_title, event) |
| 7 | + if time |
| 8 | + date = event.conference.start_date.strftime('%F') |
| 9 | + expect(page).to have_text("Scheduled time #{date} #{time} #{event.conference.timezone}") |
| 10 | + else |
| 11 | + expect(page).to have_no_text('Scheduled') |
| 12 | + end |
| 13 | +end |
| 14 | + |
| 15 | +def move(event, to:) |
| 16 | + draggable = find("#event-#{event.id}.ui-draggable") |
| 17 | + droppable = find("#schedule-room-#{to[0].guid}-#{to[1]}-#{to[2]}.ui-droppable") |
| 18 | + wait_for_ajax { draggable.drag_to droppable } |
| 19 | +end |
| 20 | + |
| 21 | +def remove(event) |
| 22 | + button = find("#event-#{event.id} .schedule-event-delete-button") |
| 23 | + wait_for_ajax { button.click } |
| 24 | +end |
| 25 | + |
| 26 | +feature Schedule do |
| 27 | + let(:venue) { create(:venue) } |
| 28 | + let(:conference) { create(:conference, venue: venue) } |
| 29 | + let!(:room) { create(:room, venue: venue) } |
| 30 | + let!(:event) { create(:event, program: conference.program, state: 'confirmed') } |
| 31 | + |
| 32 | + context 'as an organizer' do |
| 33 | + let(:organizer) { create(:organizer, resource: conference) } |
| 34 | + |
| 35 | + before :each do |
| 36 | + sign_in organizer |
| 37 | + end |
| 38 | + |
| 39 | + scenario 'create a schedule', js: true do |
| 40 | + expect_scheduled event, nil |
| 41 | + |
| 42 | + visit admin_conference_schedules_path(conference) |
| 43 | + click_on 'Add Schedule' |
| 44 | + move event, to: [room, 9, 30] |
| 45 | + wait_for_ajax { switch conference.short_title, to: true } |
| 46 | + |
| 47 | + expect_scheduled event, '09:30' |
| 48 | + end |
| 49 | + |
| 50 | + scenario 'reschedule an event', js: true do |
| 51 | + create(:event_schedule, event: event, room: room) |
| 52 | + expect_scheduled event, '09:00' |
| 53 | + |
| 54 | + visit admin_conference_schedule_path(conference, conference.program.selected_schedule) |
| 55 | + move event, to: [room, 12, 15] |
| 56 | + |
| 57 | + expect_scheduled event, '12:15' |
| 58 | + end |
| 59 | + |
| 60 | + scenario 'unschedule an event', js: true do |
| 61 | + create(:event_schedule, event: event, room: room) |
| 62 | + expect_scheduled event, '09:00' |
| 63 | + |
| 64 | + visit admin_conference_schedule_path(conference, conference.program.selected_schedule) |
| 65 | + remove event |
| 66 | + |
| 67 | + expect_scheduled event, nil |
| 68 | + end |
| 69 | + end |
| 70 | +end |
0 commit comments