package quba;
import models.OrderModel;
import org.joda.time.DateTime;
import org.junit.Test;
import quba.models.QubaStation;
import quba.models.QubaStationProfile;
import quba.service.QubaPositionSyncer;
import util.InMemoryDbTest;
import java.util.List;
import java.util.Set;
import static org.junit.Assert.*;
public class QubaPositionSyncerTest extends InMemoryDbTest {
@Test
public void testSyncPosition(){
QubaPositionSyncer syncer = new QubaPositionSyncer();
OrderModel orderModel = OrderModel.find.fetch("position").where().eq("id",1L).findUnique();
DateTime now = getTime(2015, 10, 7, 10, 0);
QubaStation station = QubaStation.findStationByName(orderModel.position.name);
assertNull("Fant stasjon som ikke skulle funnets",station);
int expected = 4;
Set<Integer> activeTermins = orderModel.getActiveTerminsForDayContainingTimestamp(now);
assertEquals("Uventet antall terminer for angitt dag", expected,activeTermins.size());
syncer.syncPosition(orderModel.position, activeTermins);
station = QubaStation.findStationByName(orderModel.position.name);
assertNotNull("Fant ikke stasjon, skulle ha funnets",station);
List<QubaStationProfile> profiles = QubaStationProfile.findAllProfilesForStation(station.stationid);
assertNotNull("Fant ikke profiler",profiles);
assertEquals("Uventet antall profiler", expected,profiles.size());
}
@Test
public void testMakeQubaPos() {
assertEquals("Feil i konvertering til Quba posisjon", 603100, QubaPositionSyncer.makeQubaPos(60d, 30d, 55d));
assertEquals("Feil i konvertering til Quba posisjon", 51000, QubaPositionSyncer.makeQubaPos(5d, 10d, 25d));
}
@Test
public void testSyncPositionAddTermins(){
QubaPositionSyncer syncer = new QubaPositionSyncer();
OrderModel orderModel = OrderModel.find.fetch("position").where().eq("id",2L).findUnique();
DateTime now = getTime(2015, 11, 7, 10, 0);
QubaStation station = QubaStation.findStationByName(orderModel.position.name);
assertNotNull("Fant ikke stasjon",station);
List<QubaStationProfile> profiles = QubaStationProfile.findAllProfilesForStation(station.stationid);
assertNotNull("Fant ikke profiler",profiles);
assertEquals("Uventet antall pre-eksisterende profiler", 3,profiles.size());
Set<Integer> activeTermins = orderModel.getActiveTerminsForDayContainingTimestamp(now);
assertEquals("Uventet antall terminer for angitt dag",4,activeTermins.size());
syncer.syncPosition(orderModel.position, activeTermins);
profiles = QubaStationProfile.findAllProfilesForStation(station.stationid);
assertNotNull("Fant ikke profiler",profiles);
assertEquals("Uventet antall profiler", 6,profiles.size());
}
}