package service; import api.v1.ForecastSearchParams; import api.v1.WorklistItem; import api.v1.WorklistItemStatus; import models.ForecastSearchResult; import models.OrderModel; import org.joda.time.DateTime; import org.junit.Test; import util.InMemoryDbTest; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; public class ForecastServiceTest extends InMemoryDbTest{ @Test public void testSearchSingleOrderPartlyInvoiced(){ ForecastService service = new ForecastService(fakeUser); ForecastSearchParams params = new ForecastSearchParams(); params.met_ref = "1234321"; List<ForecastSearchResult> searchResult = service.search(params); assertNotNull("search result", searchResult); assertEquals("result size",2,searchResult.size()); assertEquals("1 should be invoiced",true,searchResult.get(0).invoiced); assertEquals("1 should be not invoiced",false,searchResult.get(1).invoiced); } @Test public void testSearchSingleOrderOutsideDateRange(){ ForecastService service = new ForecastService(fakeUser); ForecastSearchParams params = new ForecastSearchParams(); params.met_ref = "1234321"; params.start_date = new DateTime(2016,1,1,0,0,PoseidonService.getTimeZone()).toDate(); params.end_date = new DateTime(2016,2,1,0,0,PoseidonService.getTimeZone()).toDate(); List<ForecastSearchResult> searchResult = service.search(params); assertNotNull("search result", searchResult); assertEquals("result size",0,searchResult.size()); } @Test public void testGetWorklistItems() throws Exception { ForecastService service = new ForecastService(fakeUser); OrderService orderService = new OrderService(fakeUser); DateTime now = new DateTime(2016,2,25,14,0,PoseidonService.getTimeZone()); service.setNow(now); DateTime date = now.withTimeAtStartOfDay(); Integer termin = 15; List<OrderModel> orders = orderService.getOrdersForDate(date); List<WorklistItem> worklistitems = service.getWorklistItems(date, termin, orders); assertNotNull("null worklist", worklistitems); assertEquals("Uventet antall worklistitems",5,worklistitems.size()); assertNotNull("Ingen status på Huldra 1",worklistitems.get(0).status); assertEquals("Uventet status på Huldra 1", WorklistItemStatus.NO_DATA,worklistitems.get(0).status); assertNotNull("Ingen status på Huldra 2",worklistitems.get(1).status); assertEquals("Uventet status på Huldra 2", WorklistItemStatus.NO_DATA,worklistitems.get(1).status); assertNotNull("Ingen status på Muchison",worklistitems.get(2).status); assertEquals("Uventet status på Murchison", WorklistItemStatus.NO_DATA,worklistitems.get(2).status); assertNotNull("Ingen status på Muchison",worklistitems.get(3).status); assertEquals("Uventet status på Gulllfaks", WorklistItemStatus.READY,worklistitems.get(3).status); assertEquals("Uventet vindstatus Gullfaks", true,worklistitems.get(3).strongWindWarning); assertNotNull("Bestilling no_pos har ikke produkt", worklistitems.get(4).product); assertEquals("Uventet produkt på bestilling no_pos", "Nordkalotten",worklistitems.get(4).product.name); } @Test public void testFindItemStatus() throws Exception { ForecastService service = new ForecastService(fakeUser); DateTime now = new DateTime(2016,2,25,15,0,PoseidonService.getTimeZone()); service.setNow(now); DateTime date = now.withTimeAtStartOfDay(); Integer termin = 15; String pname = "Ukjent stasjon"; WorklistItemStatus status = service.findItemStatus(pname,date,termin ); assertEquals("Uventet worklistItemStatus for ukjent stasjon", WorklistItemStatus.NO_DATA,status); pname = "Gullfaks"; // mer enn 6 timer før termin -> OLD_DATA service.setNow(new DateTime(2016, 2,23,15,0, PoseidonService.getTimeZone())); status = service.findItemStatus(pname,date,termin ); assertEquals("Uventet worklistItemStatus: -48", WorklistItemStatus.OLD_DATA,status); // mellom -6 og +6 timer -> READY service.setNow(new DateTime(2016, 2,25,14,0, PoseidonService.getTimeZone())); status = service.findItemStatus(pname,date,termin ); assertEquals("Uventet worklistItemStatus: -1", WorklistItemStatus.READY,status); service.setNow(new DateTime(2016, 2,25,16,0, PoseidonService.getTimeZone())); status = service.findItemStatus(pname,date,termin ); assertEquals("Uventet worklistItemStatus: +1", WorklistItemStatus.READY,status); // mer enn +6 service.setNow(new DateTime(2016, 2,26,6,0, PoseidonService.getTimeZone())); status = service.findItemStatus(pname,date,termin ); assertEquals("Uventet worklistItemStatus: +15", WorklistItemStatus.OLD_DATA,status); } }