package de.ks.idnadrev.cost.bookingview; import de.ks.LauncherRunner; import de.ks.idnadrev.entity.Cleanup; import de.ks.idnadrev.entity.cost.Account; import de.ks.idnadrev.entity.cost.Booking; import de.ks.persistence.PersistentWork; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import javax.inject.Inject; import java.time.LocalDateTime; import static org.junit.Assert.assertEquals; @RunWith(LauncherRunner.class) public class BookingViewDSTest { @Inject Cleanup cleanup; private BookingViewDS datasource; @Before public void setUp() throws Exception { cleanup.cleanup(); PersistentWork.run(em -> { Account account1 = new Account("testAccount1"); PersistentWork.persist(account1); int amount = 15; LocalDateTime dateTime = LocalDateTime.now().minusDays(amount); for (int i = 0; i < amount; i++) { Booking booking = new Booking(account1, (i + 1) * 10); booking.setDescription("createbooking #" + i); booking.setCategory("Category" + i % 5); booking.setBookingTime(dateTime.plusDays(i)); PersistentWork.persist(booking); } Booking booking = new Booking(account1, -42); booking.setBookingTime(dateTime); PersistentWork.persist(booking); }); datasource = new BookingViewDS(); } @Test public void testLoadAll() throws Exception { BookingLoadingHint hint = new BookingLoadingHint("testAccount1"); datasource.setLoadingHint(hint); BookingViewModel model = datasource.loadModel(null); assertEquals(19, model.bookings.size()); } @Test public void testDateFilter() throws Exception { BookingLoadingHint hint = new BookingLoadingHint("testAccount1"); hint.setStartDate(hint.getStartDate().toLocalDate().plusDays(16)); hint.setEndDate(hint.getEndDate().toLocalDate().minusDays(2)); datasource.setLoadingHint(hint); BookingViewModel model = datasource.loadModel(null); assertEquals(16, model.bookings.size()); } @Test public void testAmount() throws Exception { BookingLoadingHint hint = new BookingLoadingHint("testAccount1"); hint.setAmount(20D); datasource.setLoadingHint(hint); BookingViewModel model = datasource.loadModel(null); assertEquals(4, model.bookings.size()); } @Test public void testNegativeAmount() throws Exception { BookingLoadingHint hint = new BookingLoadingHint("testAccount1"); hint.setAmount(-42D); datasource.setLoadingHint(hint); BookingViewModel model = datasource.loadModel(null); assertEquals(4, model.bookings.size()); assertEquals(-42D, model.getBookings().get(1).getAmount(), 0.01D); } @Test public void testAmountDesc() throws Exception { BookingLoadingHint hint = new BookingLoadingHint("testAccount1"); hint.setAmount(20D); hint.setDescription("book"); datasource.setLoadingHint(hint); BookingViewModel model = datasource.loadModel(null); assertEquals(4, model.bookings.size()); hint.setDescription("bla"); model = datasource.loadModel(null); assertEquals(0, model.bookings.size()); } @Test public void testCategory() throws Exception { BookingLoadingHint hint = new BookingLoadingHint("testAccount1"); hint.setCategory("Category3"); datasource.setLoadingHint(hint); BookingViewModel model = datasource.loadModel(null); assertEquals(6, model.bookings.size()); } }