diff --git a/app/models/workshop_calendar.rb b/app/serializers/workshop_calendar.rb similarity index 100% rename from app/models/workshop_calendar.rb rename to app/serializers/workshop_calendar.rb diff --git a/spec/models/workshop_calendar_spec.rb b/spec/serializers/workshop_calendar_spec.rb similarity index 61% rename from spec/models/workshop_calendar_spec.rb rename to spec/serializers/workshop_calendar_spec.rb index 74008c38c..804eef745 100644 --- a/spec/models/workshop_calendar_spec.rb +++ b/spec/serializers/workshop_calendar_spec.rb @@ -1,9 +1,40 @@ RSpec.describe WorkshopCalendar do let(:invitation_url) { Faker::Internet.url } - let(:calendar) { WorkshopCalendar.new(workshop, invitation_url).calendar } + + describe '.new' do + it 'calls setup during initialization' do + workshop = Fabricate(:workshop) + calendar = described_class.new(workshop, invitation_url) + + expect(calendar.calendar.events.count).to eq(1) + end + end + + describe '#ical' do + it 'returns an iCalendar string' do + workshop = Fabricate(:workshop) + cal = described_class.new(workshop, invitation_url) + + result = cal.ical + + expect(result).to start_with("BEGIN:VCALENDAR\r\n") + expect(result).to include("BEGIN:VEVENT\r\n") + expect(result).to include("END:VEVENT\r\n") + expect(result).to include("END:VCALENDAR\r\n") + end + + it 'includes the invitation URL in the event description' do + workshop = Fabricate(:workshop) + cal = described_class.new(workshop, invitation_url) + + expect(cal.ical).to include(invitation_url) + end + end describe 'workshop calendar entry' do let(:workshop) { Fabricate(:workshop) } + let(:calendar) { described_class.new(workshop, invitation_url).calendar } + it 'has an event associated with it' do expect(calendar.events.count).to eq(1) end