package jfxtras.scene.control.agenda.icalendar.agenda;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.control.CheckBox;
import javafx.scene.input.MouseButton;
import jfxtras.icalendarfx.components.VEvent;
import jfxtras.scene.control.agenda.icalendar.ICalendarStaticComponents;
import jfxtras.test.AssertNode;
import jfxtras.test.TestUtil;
/**
* Tests displaying edit popups from Agenda.
*
* @author David Bal
*/
public class VEventDisplayPopupTest extends AgendaTestAbstract
{
@Override
public Parent getRootNode()
{
return super.getRootNode();
}
@Test
public void canProduceEditPopup()
{
TestUtil.runThenWaitForPaintPulse( () ->
{
agenda.getVCalendar().addChild(ICalendarStaticComponents.getDaily1());
agenda.refresh();
});
// Open edit popup
moveTo("#hourLine11");
press(MouseButton.SECONDARY);
release(MouseButton.SECONDARY);
Node n = find("#editDisplayableTabPane");
// AssertNode.generateSource("n", n, null, false, jfxtras.test.AssertNode.A.XYWH);
new AssertNode(n).assertXYWH(0.0, 0.0, 400.0, 570.0, 0.01);
clickOn("#cancelComponentButton");
}
@Test
public void canProduceEditPopupFromExistingAppointment()
{
TestUtil.runThenWaitForPaintPulse( () ->
{
agenda.getVCalendar().addChild(ICalendarStaticComponents.getDaily1());
agenda.refresh();
});
// Open select one popup
moveTo("#hourLine11");
press(MouseButton.PRIMARY);
release(MouseButton.PRIMARY);
// click on advanced edit
clickOn("#OneAppointmentSelectedEditButton");
Node n = find("#editDisplayableTabPane");
// AssertNode.generateSource("n", n, null, false, jfxtras.test.AssertNode.A.XYWH);
new AssertNode(n).assertXYWH(0.0, 0.0, 400.0, 570.0, 0.01);
clickOn("#cancelComponentButton");
}
@Test
public void canProduceEditPopupFromNewAppointment()
{
// Draw new appointment
moveTo("#hourLine11");
press(MouseButton.PRIMARY);
moveTo("#hourLine12");
release(MouseButton.PRIMARY);
find("#AppointmentRegularBodyPane2015-11-11/0"); // validate that the pane has the expected id
// click on advanced edit
clickOn("#newAppointmentEditButton");
Node n = find("#editDisplayableTabPane");
// AssertNode.generateSource("n", n, null, false, jfxtras.test.AssertNode.A.XYWH);
new AssertNode(n).assertXYWH(0.0, 0.0, 400.0, 570.0, 0.01);
clickOn("#cancelComponentButton");
}
@Test
public void canToggleRepeatableCheckBox()
{
TestUtil.runThenWaitForPaintPulse( () ->
{
agenda.getVCalendar().addChild(ICalendarStaticComponents.getDaily1());
agenda.refresh();
});
// Open edit popup
moveTo("#hourLine11");
press(MouseButton.SECONDARY);
release(MouseButton.SECONDARY);
clickOn("#recurrenceRuleTab");
// Get properties
CheckBox repeatableCheckBox = find("#repeatableCheckBox");
// Check initial state
assertTrue(repeatableCheckBox.isSelected());
// Remove RRULE and verify state change
TestUtil.runThenWaitForPaintPulse( () -> repeatableCheckBox.setSelected(false));
clickOn("#saveRepeatButton");
assertEquals(1, agenda.getVCalendar().getVEvents().size());
VEvent v = agenda.getVCalendar().getVEvents().get(0);
assertTrue(v.getRecurrenceRule() == null);
}
}