defmodule Mobilizon.Service.ICalendarTest do use Mobilizon.DataCase import Mobilizon.Factory alias ICalendar.Value alias Mobilizon.Addresses.Address alias Mobilizon.Events.Event alias Mobilizon.Service.Export.ICalendar, as: ICalendarService describe "export an event to ics" do test "export basic infos" do %Event{} = event = insert(:event) ics = """ BEGIN:VCALENDAR CALSCALE:GREGORIAN VERSION:2.0 PRODID:-//ICalendar//Mobilizon//EN BEGIN:VEVENT CATEGORIES:#{event.tags |> Enum.map(& &1.title) |> Enum.join(",")} DESCRIPTION:Ceci est une description avec une première phrase assez longue\\,\\n puis sur une seconde ligne DTEND:#{Value.to_ics(event.ends_on)} DTSTAMP:#{Value.to_ics(event.publish_at)} DTSTART:#{Value.to_ics(event.begins_on)} GEO:#{event.physical_address |> Address.coords() |> Tuple.to_list() |> Enum.join(";")} LOCATION:#{Address.representation(event.physical_address)} SUMMARY:#{event.title} UID:#{event.uuid} URL:#{event.url} END:VEVENT END:VCALENDAR """ assert {:ok, ics} == ICalendarService.export_public_event(event) end end end