package jfxtras.icalendarfx.itip;
import static org.junit.Assert.assertEquals;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import org.junit.Test;
import jfxtras.icalendarfx.ICalendarStaticComponents;
import jfxtras.icalendarfx.VCalendar;
import jfxtras.icalendarfx.components.VEvent;
import jfxtras.icalendarfx.properties.calendar.Version;
public class ComboMessageTest
{
@Test
public void canEditThisAndFuture()
{
VCalendar mainVCalendar = new VCalendar()
.withVEvents(ICalendarStaticComponents.getDaily1());
String iTIPMessage =
"BEGIN:VCALENDAR" + System.lineSeparator() +
"METHOD:REQUEST" + System.lineSeparator() +
"PRODID:-//Example/ExampleCalendarClient//EN" + System.lineSeparator() +
"VERSION:" + Version.DEFAULT_ICALENDAR_SPECIFICATION_VERSION + System.lineSeparator() +
"BEGIN:VEVENT" + System.lineSeparator() +
"CATEGORIES:group05" + System.lineSeparator() +
"DTSTART:20151109T100000" + System.lineSeparator() +
"DTEND:20151109T110000" + System.lineSeparator() +
"DESCRIPTION:Daily1 Description" + System.lineSeparator() +
"SUMMARY:Daily1 Summary" + System.lineSeparator() +
"DTSTAMP:20150110T080000Z" + System.lineSeparator() +
"UID:20150110T080000-004@jfxtras.org" + System.lineSeparator() +
"RRULE:FREQ=DAILY;UNTIL=20151110T180000Z" + System.lineSeparator() +
"ORGANIZER;CN=Papa Smurf:mailto:papa@smurf.org" + System.lineSeparator() +
"SEQUENCE:1" + System.lineSeparator() +
"END:VEVENT" + System.lineSeparator() +
"END:VCALENDAR" + System.lineSeparator() +
"BEGIN:VCALENDAR" + System.lineSeparator() +
"METHOD:PUBLISH" + System.lineSeparator() +
"PRODID:-//Example/ExampleCalendarClient//EN" + System.lineSeparator() +
"VERSION:" + Version.DEFAULT_ICALENDAR_SPECIFICATION_VERSION + System.lineSeparator() +
"BEGIN:VEVENT" + System.lineSeparator() +
"CATEGORIES:group05" + System.lineSeparator() +
"DTSTART:20151111T100000" + System.lineSeparator() +
"DTEND:20151111T110000" + System.lineSeparator() +
"DESCRIPTION:Daily1 Description" + System.lineSeparator() +
"SUMMARY:new summary" + System.lineSeparator() +
"DTSTAMP:20160914T180627Z" + System.lineSeparator() +
"UID:20160914T110627-0jfxtras.org" + System.lineSeparator() +
"RRULE:FREQ=DAILY" + System.lineSeparator() +
"ORGANIZER;CN=Papa Smurf:mailto:papa@smurf.org" + System.lineSeparator() +
"RELATED-TO:20150110T080000-004@jfxtras.org" + System.lineSeparator() +
"END:VEVENT" + System.lineSeparator() +
"END:VCALENDAR";
// System.out.println(iTIPMessage);
mainVCalendar.processITIPMessage(iTIPMessage);
// verify VComponent changes
assertEquals(2, mainVCalendar.getVEvents().size());
VEvent v0 = mainVCalendar.getVEvents().get(0);
VEvent expectedV0 = ICalendarStaticComponents.getDaily1()
.withSequence(1);
ZonedDateTime until = ZonedDateTime.of(LocalDateTime.of(2015, 11, 10, 10, 0), ZoneId.systemDefault()).withZoneSameInstant(ZoneId.of("Z"));
expectedV0.getRecurrenceRule().getValue()
.setUntil(until);
assertEquals(expectedV0, v0);
VEvent v1 = mainVCalendar.getVEvents().get(1);
VEvent expectedV1 = ICalendarStaticComponents.getDaily1()
.withDateTimeStart(LocalDateTime.of(2015, 11, 11, 10, 0))
.withDateTimeEnd(LocalDateTime.of(2015, 11, 11, 11, 0))
.withDateTimeStamp(v1.getDateTimeStamp()) // time stamp is time-based so copy it to guarantee equality.
.withUniqueIdentifier(v1.getUniqueIdentifier()) // uid is time-based so copy it to guarantee equality.
.withSummary("new summary")
.withRelatedTo("20150110T080000-004@jfxtras.org");
assertEquals(expectedV1, v1);
}
}