// Copyright © 2015 HSL <https://www.hsl.fi> // This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses. package fi.hsl.parkandride.back; import fi.hsl.parkandride.core.domain.Hub; import fi.hsl.parkandride.core.domain.MultilingualString; import fi.hsl.parkandride.core.domain.Region; import fi.hsl.parkandride.core.domain.RegionWithHubs; import org.geolatte.geom.Points; import org.junit.Before; import org.junit.Test; import javax.inject.Inject; import java.util.Collection; import java.util.List; import static java.util.stream.Collectors.toList; import static org.assertj.core.api.Assertions.assertThat; public class RegionDaoTest extends AbstractDaoTest { @Inject RegionDao regionDao; @Inject HubDao hubDao; private long helsinkiHubId; private long helsinkiHub2Id; private long keravaHubId; @Before public void initFixture() { devHelper.deleteAll(); final Collection<Region> regions = regionDao.getRegions(); final Region region = getRegionWithName(regions, "Helsinki"); final Hub helsinkiHub = new Hub(); helsinkiHub.name = new MultilingualString("Keskusta"); helsinkiHub.location = Points.create2D(24.95220318379312, 60.16094413640474, region.area.getCrsId()); helsinkiHubId = hubDao.insertHub(helsinkiHub); final Hub helsinkiHub2 = new Hub(); helsinkiHub2.name = new MultilingualString("Keskusta 2"); helsinkiHub2.location = Points.create2D(24.95220318379312, 60.16094413640474, region.area.getCrsId()); helsinkiHub2Id = hubDao.insertHub(helsinkiHub2); final Hub keravaHub = new Hub(); keravaHub.name = new MultilingualString("Kerava"); keravaHub.location = Points.create2D(25.106506567382755, 60.40474204568207, region.area.getCrsId()); keravaHubId = hubDao.insertHub(keravaHub); } @Test public void getRegionsWithHubsReturnsHubIdsForCorrectRegions() { final Collection<RegionWithHubs> allRegions = regionDao.regionsWithHubs(); assertThat(allRegions).hasSameSizeAs(regionDao.getRegions()); final List<RegionWithHubs> regionsWithHubs = allRegions.stream() .filter(rwh -> !rwh.hubIds.isEmpty()) .collect(toList()); assertThat(regionsWithHubs).hasSize(2); assertThat(getRegionWithName(regionsWithHubs, "Helsinki").hubIds) .containsOnly(helsinkiHubId, helsinkiHub2Id); assertThat(getRegionWithName(regionsWithHubs, "Kerava").hubIds) .containsExactly(keravaHubId); } private static <T extends Region> T getRegionWithName(Collection<T> regions, String name) { return regions.stream() .filter(r -> r.name.fi.equals(name)) .findFirst() .get(); } }