package dk.daoas.daoadresseservice.test; import static org.junit.Assert.assertEquals; import java.sql.SQLException; import org.junit.BeforeClass; import org.junit.Test; import dk.daoas.daoadresseservice.AddressSearch; import dk.daoas.daoadresseservice.DaekningsType; import dk.daoas.daoadresseservice.admin.ServiceConfig; import dk.daoas.daoadresseservice.beans.SearchResult; public class AddressSearchTest { static AddressSearch search; static MockDatabaseLayer db; @BeforeClass public static void setupSearchStructure() throws SQLException { ServiceConfig conf = new ServiceConfig(); conf.useGoogle = false; conf.useOpenStreetMaps = false; db = new MockDatabaseLayer(); search = new AddressSearch(db, conf); search.buildSearchStructures(); } @Test public void testBasicLookup() { SearchResult res = search.search("8700", "Vestergade 1"); assertEquals(SearchResult.Status.STATUS_OK, res.status); assertEquals(DaekningsType.DAEKNING_DIREKTE, res.address.daekningsType); } /** * Ugyldigt postnr */ @Test public void testFailureIllegalPostal() { SearchResult res = search.search("asdf", "Vestergade 10"); assertEquals(SearchResult.Status.ERROR_UNKNOWN_POSTAL, res.status); } /** * Ukendt postnr */ @Test public void testFailurePostal() { SearchResult res = search.search("1234", "Vestergade 10"); assertEquals(SearchResult.Status.ERROR_UNKNOWN_POSTAL, res.status); } /** * Manglende husnr */ @Test public void testFailureMissingHousenumber() { SearchResult res = search.search("8700", "Vestergade"); assertEquals(SearchResult.Status.ERROR_MISSING_HOUSENUMBER, res.status); } /** * Adressen vi ukendtvej */ @Test public void testFailureUnkownStreetname() { SearchResult res = search.search("8700", "Nonsensgade 1"); assertEquals(SearchResult.Status.ERROR_UNKNOWN_STREETNAME, res.status); } /** * Levenshtein1 & 2 & 3 */ @Test public void testOkLevenshtein() { SearchResult res; //Distance=1 res = search.search("8700", "Vstergade 1"); assertEquals(SearchResult.Status.STATUS_OK, res.status); assertEquals(DaekningsType.DAEKNING_DIREKTE, res.address.daekningsType); /* Distance=2 res = search.search("8700", "Vtergade 1"); assertEquals(SearchResult.Status.STATUS_OK, res.status); assertEquals(DaekningsType.DAEKNING_DIREKTE, res.address.daekningsType); */ //Distance=2 res = search.search("8700", "Vtergade 1"); assertEquals(SearchResult.Status.ERROR_UNKNOWN_STREETNAME, res.status); //Distance=3 res = search.search("8700", "Vergade 1"); assertEquals(SearchResult.Status.ERROR_UNKNOWN_STREETNAME, res.status); } /** * Tester at rutninen der fjerner foranstillede navne virker - både 1,2,3,4 */ @Test public void testRemoveCompany() { //1 SearchResult res = search.search("8700", "Firma, Vestergade 1"); assertEquals(SearchResult.Status.STATUS_OK, res.status); assertEquals(DaekningsType.DAEKNING_DIREKTE, res.address.daekningsType); assertEquals("vestergade", res.vasketVejnavn); //2 res = search.search("8700", "Firma Navn, Vestergade 1"); assertEquals(SearchResult.Status.STATUS_OK, res.status); assertEquals(DaekningsType.DAEKNING_DIREKTE, res.address.daekningsType); assertEquals("vestergade", res.vasketVejnavn); //3 res = search.search("8700", "Firma Fornavn Efternavn, Vestergade 1"); assertEquals(SearchResult.Status.STATUS_OK, res.status); assertEquals(DaekningsType.DAEKNING_DIREKTE, res.address.daekningsType); assertEquals("vestergade", res.vasketVejnavn); //4 res = search.search("8700", "Firma Fornavn MellemNavn Efternavn, Vestergade 1"); assertEquals(SearchResult.Status.STATUS_OK, res.status); assertEquals(DaekningsType.DAEKNING_DIREKTE, res.address.daekningsType); assertEquals("vestergade", res.vasketVejnavn); //5 ---denne skal fejle res = search.search("8700", "Firma Fornavn MellemNavn Efternavn FEJL, Vestergade 1"); assertEquals(SearchResult.Status.ERROR_UNKNOWN_STREETNAME, res.status); } /** * Adressen vi kender vejnavnet men ikke husnummeret */ @Test public void testFailureUnkownHousenumber() { SearchResult res = search.search("8700", "Vestergade 10"); assertEquals(SearchResult.Status.ERROR_UNKNOWN_ADDRESSPOINT, res.status); } /** * Adressen kendt men uden for dækning */ @Test public void testNotCovered() { SearchResult res = search.search("8800", "Enebærvej 2"); assertEquals(SearchResult.Status.STATUS_NOT_COVERED, res.status); } /** * Adressen kendt men markeret lukket */ @Test public void testClosed() { SearchResult res = search.search("8300", "Sønderbrogade 4"); assertEquals(SearchResult.Status.STATUS_NOT_COVERED, res.status); } /** * Adressen kendt på 100% */ @Test public void testExtended() { SearchResult res = search.search("8700", "Vestergade 2"); assertEquals(SearchResult.Status.STATUS_OK, res.status); assertEquals(DaekningsType.DAEKNING_UDVIDET, res.address.daekningsType); assertEquals(".B87049", res.address.ruteMandag); } /** * Adressen kendt på 100% */ @Test public void test100Percent() { SearchResult res = search.search("8300", "Sønderbrogade 80"); assertEquals(SearchResult.Status.STATUS_OK, res.status); assertEquals(DaekningsType.DAEKNING_100PCT, res.address.daekningsType); } /** * Vesterbrogade er registreret som en DB alias mod Vestergade */ @Test public void testDbAlias() { SearchResult res = search.search("8700", "Vesterbrogade 1"); assertEquals(SearchResult.Status.STATUS_OK, res.status); assertEquals(DaekningsType.DAEKNING_DIREKTE, res.address.daekningsType); } }