package jfxtras.scene.control.agenda.icalendar.editors.revisor;
import static org.junit.Assert.assertEquals;
import java.time.LocalDateTime;
import java.time.temporal.Temporal;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.Test;
import jfxtras.icalendarfx.VCalendar;
import jfxtras.icalendarfx.components.VEvent;
import jfxtras.icalendarfx.properties.calendar.Version;
import jfxtras.icalendarfx.properties.component.descriptive.Summary;
import jfxtras.scene.control.agenda.icalendar.ICalendarAgenda;
import jfxtras.scene.control.agenda.icalendar.ICalendarStaticComponents;
import jfxtras.scene.control.agenda.icalendar.editors.revisors.ReviserVEvent;
import jfxtras.scene.control.agenda.icalendar.editors.revisors.SimpleRevisorFactory;
public class ReviseNonRepeatingTest
{
@Test
public void canEditIndividual()
{
VCalendar mainVCalendar = new VCalendar();
VEvent vComponentOriginal = ICalendarStaticComponents.getIndividual1();
mainVCalendar.addChild(vComponentOriginal);
VEvent vComponentEdited = new VEvent(vComponentOriginal);
vComponentEdited.setSummary("Edited summary");
Temporal startOriginalRecurrence = LocalDateTime.of(2016, 5, 16, 10, 30);
Temporal startRecurrence = LocalDateTime.of(2016, 5, 16, 11, 30);
Temporal endRecurrence = LocalDateTime.of(2016, 5, 16, 12, 30);
ReviserVEvent reviser = ((ReviserVEvent) SimpleRevisorFactory.newReviser(vComponentEdited))
.withDialogCallback((m) -> null) // no dialog for edit individual
.withEndRecurrence(endRecurrence)
.withStartOriginalRecurrence(startOriginalRecurrence)
.withStartRecurrence(startRecurrence)
.withVComponentCopyEdited(vComponentEdited)
.withVComponentOriginal(vComponentOriginal);
List<VCalendar> iTIPMessages = reviser.revise();
String expectediTIPMessage =
"BEGIN:VCALENDAR" + System.lineSeparator() +
"METHOD:REQUEST" + System.lineSeparator() +
"PRODID:" + ICalendarAgenda.DEFAULT_PRODUCT_IDENTIFIER + System.lineSeparator() +
"VERSION:" + Version.DEFAULT_ICALENDAR_SPECIFICATION_VERSION + System.lineSeparator() +
"BEGIN:VEVENT" + System.lineSeparator() +
"DTSTART:20160516T113000" + System.lineSeparator() +
"DURATION:PT1H" + System.lineSeparator() +
"DESCRIPTION:Individual Description" + System.lineSeparator() +
"SUMMARY:Edited summary" + System.lineSeparator() +
"ORGANIZER;CN=Issac Newton:mailto:isaac@greatscientists.org" + System.lineSeparator() +
vComponentEdited.getDateTimeStamp().toString() + System.lineSeparator() +
"UID:20150110T080000-007@jfxtras.org" + System.lineSeparator() +
"SEQUENCE:1" + System.lineSeparator() +
"END:VEVENT" + System.lineSeparator() +
"END:VCALENDAR";
String iTIPMessage = iTIPMessages.stream()
.map(v -> v.toString())
.collect(Collectors.joining(System.lineSeparator()));
assertEquals(expectediTIPMessage, iTIPMessage);
}
@Test
public void canEditIndividual2() // with other components present
{
VCalendar mainVCalendar = new VCalendar();
VEvent vComponentOriginal = ICalendarStaticComponents.getIndividual1();
mainVCalendar.addChild(vComponentOriginal);
final List<VEvent> vComponents = mainVCalendar.getVEvents();
VEvent vComponentEdited = new VEvent(vComponentOriginal);
vComponents.add(ICalendarStaticComponents.getDaily1());
vComponentEdited.setSummary("Edited summary");
Temporal startOriginalRecurrence = LocalDateTime.of(2016, 5, 16, 10, 30);
Temporal startRecurrence = LocalDateTime.of(2016, 5, 16, 11, 30);
Temporal endRecurrence = LocalDateTime.of(2016, 5, 16, 12, 30);
ReviserVEvent reviser = ((ReviserVEvent) SimpleRevisorFactory.newReviser(vComponentEdited))
.withDialogCallback((m) -> null) // no dialog for edit individual
.withEndRecurrence(endRecurrence)
.withStartOriginalRecurrence(startOriginalRecurrence)
.withStartRecurrence(startRecurrence)
.withVComponentCopyEdited(vComponentEdited)
.withVComponentOriginal(vComponentOriginal);
List<VCalendar> iTIPMessages = reviser.revise();
String expectediTIPMessage =
"BEGIN:VCALENDAR" + System.lineSeparator() +
"METHOD:REQUEST" + System.lineSeparator() +
"PRODID:" + ICalendarAgenda.DEFAULT_PRODUCT_IDENTIFIER + System.lineSeparator() +
"VERSION:" + Version.DEFAULT_ICALENDAR_SPECIFICATION_VERSION + System.lineSeparator() +
"BEGIN:VEVENT" + System.lineSeparator() +
"DTSTART:20160516T113000" + System.lineSeparator() +
"DURATION:PT1H" + System.lineSeparator() +
"DESCRIPTION:Individual Description" + System.lineSeparator() +
"SUMMARY:Edited summary" + System.lineSeparator() +
"ORGANIZER;CN=Issac Newton:mailto:isaac@greatscientists.org" + System.lineSeparator() +
vComponentEdited.getDateTimeStamp().toString() + System.lineSeparator() +
"UID:20150110T080000-007@jfxtras.org" + System.lineSeparator() +
"SEQUENCE:1" + System.lineSeparator() +
"END:VEVENT" + System.lineSeparator() +
"END:VCALENDAR";
String iTIPMessage = iTIPMessages.stream()
.map(v -> v.toString())
.collect(Collectors.joining(System.lineSeparator()));
assertEquals(expectediTIPMessage, iTIPMessage);
}
@Test
public void canEditIndividual3() // delete property
{
VCalendar mainVCalendar = new VCalendar();
VEvent vComponentOriginal = ICalendarStaticComponents.getIndividual1();
mainVCalendar.addChild(vComponentOriginal);
VEvent vComponentEdited = new VEvent(vComponentOriginal);
vComponentEdited.setSummary((Summary) null);
Temporal startOriginalRecurrence = LocalDateTime.of(2016, 5, 16, 10, 30);
Temporal startRecurrence = LocalDateTime.of(2016, 5, 16, 11, 30);
Temporal endRecurrence = LocalDateTime.of(2016, 5, 16, 12, 30);
ReviserVEvent reviser = ((ReviserVEvent) SimpleRevisorFactory.newReviser(vComponentEdited))
.withDialogCallback((m) -> null) // no dialog for edit individual
.withEndRecurrence(endRecurrence)
.withStartOriginalRecurrence(startOriginalRecurrence)
.withStartRecurrence(startRecurrence)
.withVComponentCopyEdited(vComponentEdited)
.withVComponentOriginal(vComponentOriginal);
List<VCalendar> iTIPMessages = reviser.revise();
String expectediTIPMessage =
"BEGIN:VCALENDAR" + System.lineSeparator() +
"METHOD:REQUEST" + System.lineSeparator() +
"PRODID:" + ICalendarAgenda.DEFAULT_PRODUCT_IDENTIFIER + System.lineSeparator() +
"VERSION:" + Version.DEFAULT_ICALENDAR_SPECIFICATION_VERSION + System.lineSeparator() +
"BEGIN:VEVENT" + System.lineSeparator() +
"DTSTART:20160516T113000" + System.lineSeparator() +
"DURATION:PT1H" + System.lineSeparator() +
"DESCRIPTION:Individual Description" + System.lineSeparator() +
"ORGANIZER;CN=Issac Newton:mailto:isaac@greatscientists.org" + System.lineSeparator() +
vComponentEdited.getDateTimeStamp().toString() + System.lineSeparator() +
"UID:20150110T080000-007@jfxtras.org" + System.lineSeparator() +
"SEQUENCE:1" + System.lineSeparator() +
"END:VEVENT" + System.lineSeparator() +
"END:VCALENDAR";
String iTIPMessage = iTIPMessages.stream()
.map(v -> v.toString())
.collect(Collectors.joining(System.lineSeparator()));
assertEquals(expectediTIPMessage, iTIPMessage);
}
}