public async Task CanFindFusieGemeenteByNiscode() { //Arrange var request = new AddressMatchRequest().WithGemeenteAndNisCodeAndStraatnaam(); Latest.ArrangeLatestGemeenteWithRandomNisCodes(request.Gemeentenaam, 2); //Act var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value; //Assert response.Should().NotBeNull(); response.Should().HaveMatches(2); var firstMatch = response.AdresMatches.First(); firstMatch.Should().HaveGemeente() .Which.Should().HaveGemeentenaam(request.Gemeentenaam); firstMatch.Should().NotHaveVolledigAdres(); var secondMatch = response.AdresMatches.First(); secondMatch.Should().HaveGemeente() .Which.Should().HaveGemeentenaam(request.Gemeentenaam); secondMatch.Should().NotHaveVolledigAdres(); response.Should().ContainWarning("'Straatnaam' niet interpreteerbaar."); response.Should().NotContainWarning("Geen overeenkomst tussen 'Niscode' en 'Gemeentenaam'."); }
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)); }
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 CanFindStraatnaamByKadStraatCode() { var existingNisCode = Generate.NisCode.Generate(Random); int existingStraatnaamId = Generate.VbrObjectIdInt.Generate(Random); var existingGemeentenaam = "Springfield"; var existingStraatnaam = "Evergreen Terrace"; var requestededKadStraatCode = "6789"; //Arrange var request = new AddressMatchRequest().WithGemeenteAndKadStraatcode(); request.KadStraatcode = requestededKadStraatCode; Latest.ArrangeLatestGemeente(existingNisCode, existingGemeentenaam); KadRrService.ArrangeKadStraatnamen(existingNisCode, existingGemeentenaam, existingStraatnaamId, existingStraatnaam, requestededKadStraatCode); //Act var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value; //Assert response.Should().NotBeNull(); response.Should().HaveMatches(1); var 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(); }
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 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 CanFindGemeenteByPostcode() { var existingNisCode = Generate.NisCode.Generate(Random); var existingGemeentenaam = "Springfield"; var requestedPostcode = "4900"; //Arrange var request = new AddressMatchRequest().WithPostcodeAndStraatnaam(); request.Postcode = requestedPostcode; Latest.ArrangeLatestPostInfo(existingNisCode, requestedPostcode); Latest.ArrangeLatestGemeente(existingNisCode, existingGemeentenaam); //Act var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value; //Assert response.Should().NotBeNull(); response.Should().HaveMatches(1); var firstMatch = response.AdresMatches.First(); firstMatch.Should().HaveGemeente() .Which.Should().HaveGemeentenaam(existingGemeentenaam) .And.HaveObjectId(existingNisCode); firstMatch.Should().NotHaveVolledigAdres(); response.Should().ContainWarning("'Straatnaam' niet interpreteerbaar."); }
private Task <List <AdresListFilterStub> > MockedSanitizationTest(string straatnaam, string?huisNummer, string?index) { var promise = new TaskCompletionSource <List <AdresListFilterStub> >(); void SanitizeAction(int i) { var request = new AddressMatchRequest { Gemeentenaam = ExistingGemeentenaam, Straatnaam = straatnaam, Huisnummer = huisNummer, Index = index }; try { Log($"--------------------- TEST NR{i} ---------------------"); Log($"INPUT:\r\n-straatnaam : {straatnaam ?? "<null>"}\r\n-huisNummer : {huisNummer ?? "<null>"}\r\n-index : {index ?? "<null>"}"); _arrangeStraatnaam(straatnaam); var filters = new List <AdresListFilterStub>(); Latest.Arrange( Produce.EmptyList <AddressDetailItem>(), (when, x) => when.InterceptingLatestAdresQuery( (straatnaamid, huisnr, busnr) => filters.Add(new AdresListFilterStub { HuisnummerFilter = huisnr, BusnummerFilter = busnr }), x)); var _ = (OkObjectResult)Send(request).GetAwaiter().GetResult(); if (filters.Any()) { Log("RESULTS:"); filters.ForEach(result => Log($"\t***\r\n\tHuisNummer : {result.HuisnummerFilter ?? "<null>"}\r\n\tAppNummer : NOT IMPLEMENTED, WHAT TODO WITH APPNUMMER?\r\n\tBusNummer : {result.BusnummerFilter ?? "<null>"}")); } else { Log("NO RESULTS"); } promise.SetResult(filters); } catch (Exception e) { Log($"Exception\r\n{e}"); promise.SetException(e); } } _matchActions.Add(SanitizeAction); return(promise.Task); }
public void PostcodeShouldBeNumeric() { //Arrange AddressMatchRequest request = new AddressMatchRequest().WithGemeenteAndStraatnaam(); request.Postcode = "NAN"; //Act & Assert _validator.ShouldHaveValidationErrorFor(r => r.Postcode, request); }
public void BusnummerAndIndexAreMutuallyExclusive() { //Arrange AddressMatchRequest request = new AddressMatchRequest().WithGemeenteAndStraatnaam(); request.Huisnummer = "742"; request.Busnummer = "C2"; request.Index = "verd2"; //Act & Assert _validator.ShouldHaveValidationErrorFor(r => "Busnummer, Index", request); }
public static AddressMatchRequest WithGemeenteAndNisCodeAndStraatnaam(this AddressMatchRequest request) => new AddressMatchRequest { Busnummer = request.Busnummer, Gemeentenaam = "Springfield", Huisnummer = request.Huisnummer, Index = request.Index, KadStraatcode = request.KadStraatcode, Niscode = "12345", Postcode = request.Postcode, RrStraatcode = request.RrStraatcode, Straatnaam = "Evergreen Terrace" };
public static AddressMatchRequest WithPostcodeAndRrStraatcode(this AddressMatchRequest request) => new AddressMatchRequest { Busnummer = request.Busnummer, Gemeentenaam = request.Gemeentenaam, Huisnummer = request.Huisnummer, Index = request.Index, KadStraatcode = request.KadStraatcode, Niscode = request.Niscode, Postcode = "9770", RrStraatcode = "987", Straatnaam = request.Straatnaam };
public static AddressMatchRequest WithGemeenteAndKadStraatcode(this AddressMatchRequest request) => new AddressMatchRequest { Busnummer = request.Busnummer, Gemeentenaam = "Springfield", Huisnummer = request.Huisnummer, Index = request.Index, KadStraatcode = "6789", Niscode = request.Niscode, Postcode = request.Postcode, RrStraatcode = request.RrStraatcode, Straatnaam = request.Straatnaam, };
public static AddressMatchRequest WithPostcodeAndStraatnaam(this AddressMatchRequest request) => new AddressMatchRequest { Busnummer = request.Busnummer, Gemeentenaam = request.Gemeentenaam, Huisnummer = request.Huisnummer, Index = request.Index, KadStraatcode = request.KadStraatcode, Niscode = request.Niscode, Postcode = "49007", RrStraatcode = request.RrStraatcode, Straatnaam = "Evergreen Terrace" };
private AddressMatchQueryComponents Map(AddressMatchRequest request) => new AddressMatchQueryComponents { MunicipalityName = request.Gemeentenaam, HouseNumber = request.Huisnummer, BoxNumber = request.Busnummer, Index = request.Index, KadStreetNameCode = request.KadStraatcode, NisCode = request.Niscode, PostalCode = request.Postcode, RrStreetCode = request.RrStraatcode, StreetName = request.Straatnaam };
[InlineData("Trammesantlei", "Evergreen Terrace", false)] // no match public async Task CanFindStraatnaamByStraatnaamMatch(string requestedStraatnaam, string existingStraatnaam, bool isMatch = true) { var existingNisCode = Generate.NisCode.Generate(Random); var existingStraatnaamId = Generate.VbrObjectIdInt.Generate(Random); var existingGemeentenaam = "Springfield"; //Arrange var 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); var 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); var firstMatch = response.AdresMatches.First(); firstMatch.Should().HaveGemeente() .Which.Should().HaveGemeentenaam(existingGemeentenaam) .And.HaveObjectId(existingNisCode); firstMatch.Should().HaveNoStraatnaam(); response.Should().ContainWarning("'Straatnaam' niet interpreteerbaar."); } }
public static AddressMatchRequest WithNISCodeAndStraatnaam(this AddressMatchRequest request) { return (new AddressMatchRequest { Busnummer = request.Busnummer, Gemeentenaam = request.Gemeentenaam, Huisnummer = request.Huisnummer, Index = request.Index, KadStraatcode = request.KadStraatcode, Niscode = "12345", Postcode = request.Postcode, RrStraatcode = request.RrStraatcode, Straatnaam = "Evergreen Terrace" }); }
protected Task <IActionResult> Send(AddressMatchRequest request) { return(_controller.Get( KadRrService.Object, Latest.Object, new OptionsWrapper <ResponseOptions>(new ResponseOptions { DetailUrl = "detail/{0}", GemeenteDetailUrl = "gemeentedetail/{0}", StraatnaamDetailUrl = "straatnaamdetail/{0}", PostInfoDetailUrl = "postinfodetail/{0}", MaxStreetNamesThreshold = 100, SimilarityThreshold = 75.0 }), _addresMatchContext, _buildingContext, request)); }
public async Task CanFindRrAdres() { //Arrange var existingNisCode = Generate.NisCode.Generate(Random); var existingGemeentenaam = "Springfield"; var existingStraatnaamId = Generate.VbrObjectIdInt.Generate(Random); var existingStraatnaam = "Evergreen Terrace"; var streetNameId = Guid.NewGuid(); var 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.Exactly(6, Generate.TblHuisNummer.Select(x => x.WithStraatNaamId(streetNameId))), (when, x) => when.AdresMappingExistsFor(x, request.Huisnummer, request.Index, request.RrStraatcode, request.Postcode)) .OrderBy(x => new VolledigAdres(existingStraatnaam, x.HouseNumber, x.BoxNumber, x.PostalCode, existingGemeentenaam, Taal.NL).GeografischeNaam.Spelling) .ToList(); //Act var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value; //Assert response.Should().NotBeNull(); response.Should().HaveMatches(Math.Min(mappedAdressen.Count, 10)); var firstMatch = response.AdresMatches.OrderBy(x => x.Score).ThenBy(x => x.VolledigAdres?.GeografischeNaam?.Spelling).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) { var existingNisCode = Generate.NisCode.Generate(Random); //Arrange var 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); var 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'."); } }
public async Task AdresMatchWithBusnummerSkipsSanitization() { var existingNisCode = Generate.NisCode.Generate(Random); var existingStraatnaamId = Generate.VbrObjectIdInt.Generate(Random); var existingGemeentenaam = "Springfield"; var postcode = Generate.Postcode.Generate(Random); //Arrange var 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); var 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}"); }
public async Task CanFindGemeenteByNiscode() { //Arrange var request = new AddressMatchRequest().WithGemeenteAndNisCodeAndStraatnaam(); Latest.ArrangeLatestGemeente(request.Niscode, request.Gemeentenaam); //Act var response = (AddressMatchCollection)((OkObjectResult)await Send(request)).Value; //Assert response.Should().NotBeNull(); response.Should().HaveMatches(1); var firstMatch = response.AdresMatches.First(); firstMatch.Should().HaveGemeente() .Which.Should().HaveGemeentenaam(request.Gemeentenaam) .And.HaveObjectId(request.Niscode); firstMatch.Should().NotHaveVolledigAdres(); response.Should().ContainWarning("'Straatnaam' niet interpreteerbaar."); }
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)); }