Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: or-2334 do not check dubbeldetection for dubbele vereniging #1024

Merged
merged 2 commits into from
Dec 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ await _client
q => q.Bool(
b => b.Must(
MatchOpNaam(naam),
IsNietGestopt
IsNietGestopt,
IsNietDubbel
)
.MustNot(BeVerwijderd)
.Filter(MatchOpPostcodeOfGemeente(gemeentes, postcodes)
Expand Down Expand Up @@ -67,6 +68,12 @@ private static QueryContainer IsNietGestopt(QueryContainerDescriptor<DuplicateDe
.Value(false));
}

private static QueryContainer IsNietDubbel(QueryContainerDescriptor<DuplicateDetectionDocument> descriptor)
{
return descriptor.Term(queryDescriptor => queryDescriptor.Field(document => document.IsDubbel)
.Value(false));
}

private static QueryContainer BeVerwijderd(QueryContainerDescriptor<DuplicateDetectionDocument> shouldDescriptor)
{
return shouldDescriptor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
HoofdactiviteitVerenigingsloket = MapHoofdactiviteitVerenigingsloket(message.Data.HoofdactiviteitenVerenigingsloket),
IsGestopt = false,
IsVerwijderd = false,
IsDubbel = false,
}
);

Expand All @@ -41,6 +42,7 @@
HoofdactiviteitVerenigingsloket = Array.Empty<string>(),
IsGestopt = false,
IsVerwijderd = false,
IsDubbel = false,
}
);

Expand Down Expand Up @@ -151,7 +153,7 @@
message.VCode,
new DuplicateDetectionDocument
{
KorteNaam = message.Data.KorteNaam,

Check warning on line 156 in src/AssociationRegistry.Admin.ProjectionHost/Projections/Search/DuplicateDetection/DuplicateDetectionProjectionHandler.cs

View workflow job for this annotation

GitHub Actions / Run Tests (test/AssociationRegistry.Test.Admin.AddressSync)

Possible null reference assignment.
}
);

Expand Down Expand Up @@ -182,6 +184,15 @@
public async Task Handle(EventEnvelope<LocatieDuplicaatWerdVerwijderdNaAdresMatch> message)
=> await _elasticRepository.RemoveLocatie<DuplicateDetectionDocument>(message.VCode, message.Data.VerwijderdeLocatieId);

public async Task Handle(EventEnvelope<VerenigingWerdGemarkeerdAlsDubbelVan> message)
=> await _elasticRepository.UpdateAsync(
message.VCode,
new DuplicateDetectionDocument
{
IsDubbel = true,
}
);

private static string[] MapHoofdactiviteitVerenigingsloket(
IEnumerable<Registratiedata.HoofdactiviteitVerenigingsloket> hoofdactiviteitenVerenigingsloket)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,9 @@ public async Task ConsumeAsync(IReadOnlyList<StreamAction> streamActions)
case nameof(AdresWerdOvergenomenUitAdressenregister):
case nameof(AdresWerdGewijzigdInAdressenregister):
case nameof(LocatieDuplicaatWerdVerwijderdNaAdresMatch):
case nameof(VerenigingWerdGemarkeerdAlsDubbelVan):
await _duplicateDetectionProjectionHandler.Handle(eventEnvelope);

break;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ public record DuplicateDetectionDocument
public Locatie[] Locaties { get; set; } = null!;
public string VerenigingsTypeCode { get; set; } = null!;
public string KorteNaam { get; set; } = null!;
public string[] HoofdactiviteitVerenigingsloket { get; set; } = Array.Empty<string>();
public string[] HoofdactiviteitVerenigingsloket { get; set; } = [];
public bool IsGestopt { get; set; }
public bool IsVerwijderd { get; set; }
public bool IsDubbel { get; set; }

public record Locatie : ILocatie
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ public static TypeMappingDescriptor<DuplicateDetectionDocument> Get(TypeMappingD
.Boolean(
propertyDescriptor => propertyDescriptor
.Name(document => document.IsVerwijderd))
.Boolean(
propertyDescriptor => propertyDescriptor
.Name(document => document.IsDubbel))
.Nested<DuplicateDetectionDocument.Locatie>(
propertyDescriptor => propertyDescriptor
.Name(document => document.Locaties)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ public class VerenigingZoekDocument
public string JsonLdMetadataType { get; set; }
public string VCode { get; set; } = null!;

public string[] CorresponderendeVCodes { get; set; } = Array.Empty<string>();
public string[] CorresponderendeVCodes { get; set; } = [];
public VerenigingsType Verenigingstype { get; set; } = null!;
public string Naam { get; set; } = null!;
public string Roepnaam { get; set; } = null!;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
namespace AssociationRegistry.Test.Admin.Api.DuplicateDetection;

using AssociationRegistry.Admin.Api.Verenigingen.Common;
using AssociationRegistry.Admin.Api.Verenigingen.Registreer.FeitelijkeVereniging.RequetsModels;
using AutoFixture;
using Common.AutoFixture;
using Common.Scenarios.EventsInDb;
using FluentAssertions;
using Framework.Fixtures;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Net;
using Vereniging;
using Xunit;
using Xunit.Abstractions;
using Xunit.Categories;
using Adres = AssociationRegistry.Admin.Api.Verenigingen.Common.Adres;

[Collection(nameof(AdminApiCollection))]
[Category("AdminApi")]
[IntegrationTest]
public class Given_A_Vereniging_Gemarkeerd_Als_Dubbel
{
private readonly ITestOutputHelper _testOutputHelper;
private readonly AdminApiClient _adminApiClient;
private readonly Fixture _fixture;
private readonly V080_VerenigingWerdGeregistreerd_And_Gemarkeerd_Als_Dubbel_For_DuplicateDetection _scenario;

public Given_A_Vereniging_Gemarkeerd_Als_Dubbel(EventsInDbScenariosFixture fixture, ITestOutputHelper testOutputHelper)
{
_fixture = new Fixture().CustomizeAdminApi();
_adminApiClient = fixture.AdminApiClient;
_scenario = fixture.V080VerenigingWerdGeregistreerdAndGemarkeerdAlsDubbelForDuplicateDetection;
_testOutputHelper = testOutputHelper;
}

[Fact]
public async Task? Then_no_duplicate_is_returned_for_dubbele_vereniging()
{
var request = CreateRegistreerFeitelijkeVerenigingRequest(_scenario.DubbeleVerenigingWerdGeregistreerd.Naam,
_scenario.DubbeleVerenigingWerdGeregistreerd.Locaties.First().Adres
.Gemeente,
_scenario.DubbeleVerenigingWerdGeregistreerd.Locaties.First().Adres
.Postcode);

var response = await _adminApiClient.RegistreerFeitelijkeVereniging(JsonConvert.SerializeObject(request));
response.StatusCode.Should().Be(HttpStatusCode.Accepted);
}

private static IEnumerable<string> ExtractDuplicateVCode(string responseContent)
{
var duplicates = JObject.Parse(responseContent)
.SelectTokens("$.mogelijkeDuplicateVerenigingen[*].vCode")
.Select(x => x.ToString());

return duplicates;
}

private RegistreerFeitelijkeVerenigingRequest CreateRegistreerFeitelijkeVerenigingRequest(string naam, string gemeente, string postcode)
{
return new RegistreerFeitelijkeVerenigingRequest
{
Naam = naam,
Startdatum = null,
KorteNaam = "",
KorteBeschrijving = "",
Locaties = new[]
{
new ToeTeVoegenLocatie
{
Locatietype = Locatietype.Correspondentie,
Adres = new Adres
{
Straatnaam = _fixture.Create<string>(),
Huisnummer = _fixture.Create<string>(),
Postcode = postcode,
Gemeente = gemeente,
Land = _fixture.Create<string>(),
},
},
},
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,9 @@ public readonly V074_AdresWerdOvergenomenUitAdressenregister_And_VerenigingWerdV
public readonly V079_FeitelijkeVerenigingWerdUitgeschrevenUitPubliekeDatastroom_And_NaamGewijzigdScenario
V079FeitelijkeVerenigingWerdUitgeschrevenUitPubliekeDatastroomAndNaamGewijzigd = new();

public readonly V080_VerenigingWerdGeregistreerd_And_Gemarkeerd_Als_Dubbel_For_DuplicateDetection
V080VerenigingWerdGeregistreerdAndGemarkeerdAlsDubbelForDuplicateDetection = new();

protected override async Task Given()
{
var scenarios = new IEventsInDbScenario[]
Expand Down Expand Up @@ -253,6 +256,7 @@ protected override async Task Given()
V071FeitelijkeVerenigingWerdGeregistreerdWithMinimalFieldsForAddingLocatieForPostalInformation,
V072FeitelijkeVerenigingWerdGeregistreerdWithLocatiesForWijzigenForAdresKonNietOvergenomenWordenUitAdressenregister,
V079FeitelijkeVerenigingWerdUitgeschrevenUitPubliekeDatastroomAndNaamGewijzigd,
V080VerenigingWerdGeregistreerdAndGemarkeerdAlsDubbelForDuplicateDetection,
};

using var daemon = await PreAddEvents();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
namespace AssociationRegistry.Test.Common.Scenarios.EventsInDb;

using AssociationRegistry.Framework;
using AutoFixture;
using Events;
using EventStore;
using global::AutoFixture;

public class V080_VerenigingWerdGeregistreerd_And_Gemarkeerd_Als_Dubbel_For_DuplicateDetection : IEventsInDbScenario
{
public readonly CommandMetadata Metadata;
public readonly FeitelijkeVerenigingWerdGeregistreerd AuthentiekeVerenigingWerdGeregistreerd;
public readonly FeitelijkeVerenigingWerdGeregistreerd DubbeleVerenigingWerdGeregistreerd;
public readonly VerenigingWerdGemarkeerdAlsDubbelVan VerenigingWerdGemarkeerdAlsDubbelVan;

public V080_VerenigingWerdGeregistreerd_And_Gemarkeerd_Als_Dubbel_For_DuplicateDetection()
{
var fixture = new Fixture().CustomizeAdminApi();
VCode = VCodeDubbeleVereniging;

AuthentiekeVerenigingWerdGeregistreerd = fixture.Create<FeitelijkeVerenigingWerdGeregistreerd>() with
{
VCode = VCodeAuthentiekeVereniging,
Locaties = new[]
{
fixture.Create<Registratiedata.Locatie>() with
{
Adres = fixture.Create<Registratiedata.Adres>(),
},
},
};

DubbeleVerenigingWerdGeregistreerd = fixture.Create<FeitelijkeVerenigingWerdGeregistreerd>() with
{
VCode = VCodeDubbeleVereniging,
Locaties = new[]
{
fixture.Create<Registratiedata.Locatie>() with
{
Adres = fixture.Create<Registratiedata.Adres>(),
},
},
};

VerenigingWerdGemarkeerdAlsDubbelVan = new(VCode, AuthentiekeVerenigingWerdGeregistreerd.VCode);
Metadata = fixture.Create<CommandMetadata>() with { ExpectedVersion = null };
}

public string VCodeAuthentiekeVereniging = "V9999080";
public string VCodeDubbeleVereniging = "V9999081";
public string VCode { get; set; }
public StreamActionResult Result { get; set; } = null!;

public IEvent[] GetEvents()
=> new IEvent[]
{ AuthentiekeVerenigingWerdGeregistreerd, DubbeleVerenigingWerdGeregistreerd, VerenigingWerdGemarkeerdAlsDubbelVan };

public CommandMetadata GetCommandMetadata()
=> Metadata;
}
Loading