package de.ks.idnadrev.cost.createbooking;
import de.ks.LauncherRunner;
import de.ks.activity.ActivityCfg;
import de.ks.idnadrev.ActivityTest;
import de.ks.idnadrev.entity.cost.Account;
import de.ks.idnadrev.entity.cost.Booking;
import de.ks.persistence.PersistentWork;
import de.ks.util.FXPlatform;
import org.junit.Test;
import org.junit.runner.RunWith;
import javax.persistence.EntityManager;
import java.time.LocalDate;
import java.util.List;
import static org.junit.Assert.*;
@RunWith(LauncherRunner.class)
public class CreateBookingActivityTest extends ActivityTest {
@Override
protected void createTestData(EntityManager em) {
Account testAccount = new Account("testAccount");
em.persist(testAccount);
}
@Override
protected Class<? extends ActivityCfg> getActivityClass() {
return CreateBookingActivity.class;
}
@Test
public void testGeneral() throws Exception {
CreateBookingController controller = activityController.getControllerInstance(CreateBookingController.class);
assertEquals("testAccount", controller.account.getValue());
FXPlatform.invokeLater(() -> controller.amount.setText("bla"));
assertTrue(controller.book.isDisabled());
FXPlatform.invokeLater(() -> controller.amount.setText("123"));
activityController.waitForTasks();
FXPlatform.waitForFX();
assertFalse(controller.book.isDisabled());
}
@Test
public void testBooking() throws Exception {
CreateBookingController controller = activityController.getControllerInstance(CreateBookingController.class);
FXPlatform.invokeLater(() -> {
controller.amount.setText("123");
controller.category.setText("Steak");
controller.description.setText("1KG");
controller.onBooking();
});
activityController.waitForDataSource();
List<Booking> bookings = PersistentWork.from(Booking.class);
assertEquals(1, bookings.size());
Booking booking = bookings.get(0);
assertNotNull(booking.getAccount());
assertEquals(123, booking.getAmount(), 0.01D);
assertEquals(LocalDate.now(), booking.getBookingTime().toLocalDate());
assertEquals("Steak", booking.getCategory());
assertEquals("1KG", booking.getDescription());
}
}