public async Task CanFindGemeenteByDeelgemeente()
        {
            string existingNisCode       = Generate.Generate.NISCode.Generate(_random);
            string existingGemeentenaam  = "Springfield";
            string requestedGemeentenaam = "Deelgemeente";

            //Arrange
            AddressMatchRequest request = new AddressMatchRequest().WithGemeenteAndStraatnaam();

            request.Gemeentenaam = requestedGemeentenaam;

            _latest.ArrangeLatestPostInfoForPartOfMunicipality(existingNisCode, requestedGemeentenaam);
            _latest.ArrangeLatestGemeente(existingNisCode, existingGemeentenaam);

            //Act
            var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value;

            //Assert
            response.Should().NotBeNull();
            response.Should().HaveMatches(1);
            AdresMatchItem firstMatch = response.AdresMatches.First();

            firstMatch.Should().HaveGemeente()
            .Which.Should().HaveGemeentenaam(existingGemeentenaam)
            .And.HaveObjectId(existingNisCode);
            firstMatch.Should().NotHaveVolledigAdres();
            response.Should().ContainWarning("'Straatnaam' niet interpreteerbaar.");

            //response.Should().BeEquivalentTo(DoMatchTheOldWay(request));
        }
        public async Task <IActionResult> Get(
            [FromServices] IKadRrService kadRrService,
            [FromServices] ILatestQueries latestQueries,
            [FromServices] IOptions <ResponseOptions> responseOptions,
            [FromServices] AddressMatchContext context,
            [FromServices] BuildingContext buildingContext,
            [FromQuery] AddressMatchRequest addressMatchRequest,
            CancellationToken cancellationToken = default)
        {
            await new AddressMatchRequestValidator()
            .ValidateAndThrowAsync(addressMatchRequest, cancellationToken: cancellationToken);

            var warningLogger      = new ValidationMessageWarningLogger();
            var maxNumberOfResults = 10;
            var addressMatch       = new AddressMatchMatchingAlgorithm <AdresMatchScorableItem>(
                kadRrService,
                new ManualAddressMatchConfig(responseOptions.Value.SimilarityThreshold, responseOptions.Value.MaxStreetNamesThreshold),
                latestQueries,
                new GemeenteMapper(responseOptions.Value),
                new StreetNameMapper(responseOptions.Value, latestQueries),
                new AdresMapper(responseOptions.Value, latestQueries),
                maxNumberOfResults,
                warningLogger);

            var result = addressMatch.Process(new AddressMatchBuilder(Map(addressMatchRequest))).Take(maxNumberOfResults);

            return(Ok(new AddressMatchCollection
            {
                AdresMatches = result.ToList().Select(x => AdresMatchItem.Create(x, buildingContext, context, responseOptions.Value)).ToList(),
                Warnings = warningLogger.Warnings
            }));
        }
        public async Task CanFindStraatnaamByRrStraatCode()
        {
            string existingNisCode         = Generate.Generate.NISCode.Generate(_random);
            int    existingStraatnaamId    = Generate.Generate.VbrObjectIDInt.Generate(_random);
            string existingGemeentenaam    = "Springfield";
            string existingStraatnaam      = "Evergreen Terrace";
            string requestededRrStraatCode = "987";

            //Arrange
            AddressMatchRequest request = new AddressMatchRequest().WithPostcodeAndRrStraatcode();

            request.RrStraatcode = requestededRrStraatCode;

            _latest.ArrangeLatestGemeente(existingNisCode, existingGemeentenaam);
            _kadRrService.ArrangeRrStraatnaam(request.Postcode, existingNisCode, existingGemeentenaam, existingStraatnaamId, existingStraatnaam, requestededRrStraatCode);
            _latest.ArrangeLatestPostInfo(existingNisCode, request.Postcode);

            //Act
            var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value;

            //Assert
            response.Should().NotBeNull();
            response.Should().HaveMatches(1);
            AdresMatchItem firstMatch = response.AdresMatches.First();

            firstMatch.Should().HaveGemeente()
            .Which.Should().HaveGemeentenaam(existingGemeentenaam)
            .And.HaveObjectId(existingNisCode);
            firstMatch.Should().HaveStraatnaam()
            .Which.Should().HaveStraatnaam(existingStraatnaam)
            .And.HaveObjectId(existingStraatnaamId.ToString());
            firstMatch.Should().NotHaveVolledigAdres();

            //response.Should().BeEquivalentTo(DoMatchTheOldWay(request));
        }
        public async Task CanFindGemeenteByNiscode()
        {
            string existingGemeentenaam = "Springfield";
            string requestedNiscode     = "12345";
            //Arrange
            //request
            AddressMatchRequest request = new AddressMatchRequest().WithNISCodeAndStraatnaam();

            request.Niscode = requestedNiscode;

            _latest.ArrangeLatestGemeente(requestedNiscode, existingGemeentenaam);

            //Act
            var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value;

            //Assert
            response.Should().NotBeNull();
            response.Should().HaveMatches(1);
            AdresMatchItem firstMatch = response.AdresMatches.First();

            firstMatch.Should().HaveGemeente()
            .Which.Should().HaveGemeentenaam(existingGemeentenaam)
            .And.HaveObjectId(requestedNiscode);
            firstMatch.Should().NotHaveVolledigAdres();

            response.Should().ContainWarning("'Straatnaam' niet interpreteerbaar.");

            //response.Should().BeEquivalentTo(DoMatchTheOldWay(request));
        }
        [InlineData("Trammesantlei", "Evergreen Terrace", false)]                      //no match
        public async Task CanFindStraatnaamByStraatnaamMatch(string requestedStraatnaam, string existingStraatnaam, bool isMatch = true)
        {
            string existingNisCode      = Generate.Generate.NISCode.Generate(_random);
            int    existingStraatnaamId = Generate.Generate.VbrObjectIDInt.Generate(_random);
            string existingGemeentenaam = "Springfield";

            //Arrange
            AddressMatchRequest request = new AddressMatchRequest().WithGemeenteAndStraatnaam();

            request.Straatnaam = requestedStraatnaam;

            _latest.ArrangeLatestGemeente(existingNisCode, existingGemeentenaam);
            _latest.ArrangeLatestStraatnaam(existingNisCode, existingGemeentenaam, existingStraatnaamId.ToString(), existingStraatnaam, Guid.NewGuid());

            //Act
            var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value;

            //Assert
            response.Should().NotBeNull();
            if (isMatch)
            {
                response.Should().HaveMatches(1);
                AdresMatchItem firstMatch = response.AdresMatches.First();
                firstMatch.Should().HaveGemeente()
                .Which.Should().HaveGemeentenaam(existingGemeentenaam)
                .And.HaveObjectId(existingNisCode);
                firstMatch.Should().HaveStraatnaam()
                .Which.Should().HaveStraatnaam(existingStraatnaam)
                .And.HaveObjectId(existingStraatnaamId.ToString());
                firstMatch.Should().NotHaveVolledigAdres();
            }
            else
            {
                response.Should().HaveMatches(1);
                AdresMatchItem firstMatch = response.AdresMatches.First();
                firstMatch.Should().HaveGemeente()
                .Which.Should().HaveGemeentenaam(existingGemeentenaam)
                .And.HaveObjectId(existingNisCode);
                firstMatch.Should().HaveNoStraatnaam();
                response.Should().ContainWarning("'Straatnaam' niet interpreteerbaar.");
            }

            //response.Should().BeEquivalentTo(DoMatchTheOldWay(request));
        }
        public async Task AdresMatchWithBusnummerSkipsSanitization()
        {
            string existingNisCode      = Generate.Generate.NISCode.Generate(_random);
            int    existingStraatnaamId = Generate.Generate.VbrObjectIDInt.Generate(_random);
            string existingGemeentenaam = "Springfield";
            string postcode             = Generate.Generate.Postcode.Generate(_random);

            //Arrange
            AddressMatchRequest request = new AddressMatchRequest().WithGemeenteAndStraatnaam();

            request.Postcode   = postcode;
            request.Huisnummer = "742";
            request.Busnummer  = "C2";

            var existingGemeente   = _latest.ArrangeLatestGemeente(existingNisCode, existingGemeentenaam).Single();
            var existingStraatnaam = _latest.ArrangeLatestStraatnaam(existingNisCode, existingGemeentenaam, existingStraatnaamId.ToString(), request.Straatnaam, Guid.NewGuid()).Single();

            _latest.ArrangeLatestAdres(existingGemeente, existingStraatnaam, postcode, request.Huisnummer, request.Busnummer);

            //Act
            var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value;

            //Assert
            response.Should().NotBeNull();
            response.Should().HaveMatches(1);
            AdresMatchItem firstMatch = response.AdresMatches.First();

            firstMatch.Should().HaveGemeente()
            .Which.Should().HaveGemeentenaam(existingGemeentenaam)
            .And.HaveObjectId(existingNisCode);
            firstMatch.Should().HaveStraatnaam()
            .Which.Should().HaveStraatnaam(request.Straatnaam)
            .And.HaveObjectId(existingStraatnaamId.ToString());
            firstMatch.Should().HaveVolledigAdres()
            .Which.Should().HaveGeografischeNaam($"{existingStraatnaam.NameDutch} {request.Huisnummer} bus {request.Busnummer}, {postcode} {existingGemeentenaam}");
            firstMatch.Should().HaveScore(100);
        }
        public async Task CanFindRrAdres()
        {
            //Arrange
            string existingNisCode      = Generate.Generate.NISCode.Generate(_random);
            string existingGemeentenaam = "Springfield";
            int    existingStraatnaamId = Generate.Generate.VbrObjectIDInt.Generate(_random);
            string existingStraatnaam   = "Evergreen Terrace";
            var    streetNameId         = Guid.NewGuid();

            AddressMatchRequest request = new AddressMatchRequest().WithPostcodeAndRrStraatcode();

            request.Huisnummer = "15";

            var gemeente = _latest.ArrangeLatestGemeente(existingNisCode, existingGemeentenaam).First();
            var straat   = _latest.ArrangeLatestStraatnaam(existingNisCode, existingGemeentenaam, existingStraatnaamId.ToString(), existingStraatnaam, streetNameId).First();

            var mappedAdressen = _kadRrService
                                 .Arrange(Produce.Many(Generate.Generate.tblHuisNummer.Select(x => x.WithStraatNaamId(streetNameId))),
                                          (when, x) => when.AdresMappingExistsFor(x, request.Huisnummer, request.Index, request.RrStraatcode, request.Postcode));

            //Act
            var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value;

            //Assert
            response.Should().NotBeNull();
            response.Should().HaveMatches(Math.Min(mappedAdressen.Count(), 10));
            AdresMatchItem firstMatch = response.AdresMatches.First();

            firstMatch.Should().HaveGemeente()
            .Which.Should().HaveGemeentenaam(existingGemeentenaam)
            .And.HaveObjectId(existingNisCode);
            firstMatch.Should().HaveStraatnaam()
            .Which.Should().HaveStraatnaam(existingStraatnaam)
            .And.HaveObjectId(existingStraatnaamId.ToString());
            firstMatch.Should().HaveVolledigAdres()
            .Which.Should().HaveGeografischeNaam($"{existingStraatnaam} {mappedAdressen.First().HouseNumber} bus {mappedAdressen.First().BoxNumber}, {mappedAdressen.First().PostalCode} {existingGemeentenaam}");
        }
        [InlineData("Sprungfelt", "Springfield", false, false)]//no match
        public async Task CanFindGemeenteByGemeentenaamMatch(string requestedGemeentenaam, string existingGemeentenaam, bool isMatch, bool isExactMatch)
        {
            string existingNisCode = Generate.Generate.NISCode.Generate(_random);

            //Arrange
            AddressMatchRequest request = new AddressMatchRequest().WithGemeenteAndStraatnaam();

            request.Gemeentenaam = requestedGemeentenaam;

            _latest.ArrangeLatestGemeente(existingNisCode, existingGemeentenaam);

            //Act
            var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value;

            //Assert
            response.Should().NotBeNull();
            if (isMatch)
            {
                response.Should().HaveMatches(1);
                AdresMatchItem firstMatch = response.AdresMatches.First();
                firstMatch.Should().HaveGemeente()
                .Which.Should().HaveGemeentenaam(existingGemeentenaam)
                .And.HaveObjectId(existingNisCode);
                firstMatch.Should().NotHaveVolledigAdres();
                response.Should().ContainWarning("'Straatnaam' niet interpreteerbaar.");
            }
            else
            {
                response.Should().HaveMatches(0);
            }
            if (!isExactMatch)
            {
                response.Should().ContainWarning("Onbekende 'Gemeentenaam'.");
            }

            //response.Should().BeEquivalentTo(DoMatchTheOldWay(request));
        }
        public async Task CanFindAdresMatch()
        {
            string existingNisCode      = Generate.Generate.NISCode.Generate(_random);
            int    existingStraatnaamId = Generate.Generate.VbrObjectIDInt.Generate(_random);
            string existingGemeentenaam = "Springfield";
            string postcode             = Generate.Generate.Postcode.Generate(_random);
            var    streetNameId         = Guid.NewGuid();

            //Arrange
            AddressMatchRequest request = new AddressMatchRequest().WithGemeenteAndStraatnaam();

            request.Huisnummer = "742";

            var existingGemeente   = _latest.ArrangeLatestGemeente(existingNisCode, existingGemeentenaam).Single();
            var existingStraatnaam = _latest.ArrangeLatestStraatnaam(existingNisCode, existingGemeentenaam, existingStraatnaamId.ToString(), request.Straatnaam, streetNameId).Single();
            var existingAdres      = _latest.ArrangeLatestAdres(existingGemeente, existingStraatnaam, postcode, request.Huisnummer, null).Single();

            //Act
            var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value;

            //Assert
            response.Should().NotBeNull();
            response.Should().HaveMatches(1);
            AdresMatchItem firstMatch = response.AdresMatches.First();

            firstMatch.Should().HaveGemeente()
            .Which.Should().HaveGemeentenaam(existingGemeentenaam)
            .And.HaveObjectId(existingNisCode);
            firstMatch.Should().HaveStraatnaam()
            .Which.Should().HaveStraatnaam(request.Straatnaam)
            .And.HaveObjectId(existingStraatnaamId.ToString());
            firstMatch.Should().HaveVolledigAdres()
            .Which.Should().HaveGeografischeNaam($"{existingStraatnaam.NameDutch} {request.Huisnummer}, {postcode} {existingGemeentenaam}");

            //response.Should().BeEquivalentTo(DoMatchTheOldWay(request));
        }
Beispiel #10
0
 public static AdresMatchItemAssertions Should(this AdresMatchItem subject)
 => new AdresMatchItemAssertions(subject);
Beispiel #11
0
 public static AdresMatchItemAssertions Should(this AdresMatchItem subject)
 {
     return(new AdresMatchItemAssertions(subject));
 }