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-1972 delete vereniging from index when VerenigingIsGestopt #560

Closed
wants to merge 1 commit into from
Closed
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 @@ -89,6 +89,9 @@ public async Task Handle(EventEnvelope<LocatieWerdGewijzigd> message)
public async Task Handle(EventEnvelope<LocatieWerdVerwijderd> message)
=> await _elasticRepository.RemoveLocatie<DuplicateDetectionDocument>(message.VCode, message.Data.Locatie.LocatieId);

public async Task Handle(EventEnvelope<VerenigingWerdGestopt> message)
=> await _elasticRepository.Remove<DuplicateDetectionDocument>(message.VCode);

private static DuplicateDetectionDocument.Locatie Map(Registratiedata.Locatie locatie)
=> new()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,12 @@ public async Task RemoveLocatie<T>(string id, int locatieId) where T : class
// todo: log ? (should never happen in test/staging/production)
throw new IndexDocumentFailed(response.DebugInformation);
}

public async Task Remove<T>(string id) where T : class
{
var response =await _elasticClient.DeleteAsync<T>(id);
if (!response.IsValid)
// todo: log ? (should never happen in test/staging/production)
throw new IndexDocumentFailed(response.DebugInformation);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ Task IndexAsync<TDocument>(TDocument document)
Task AppendLocatie<TDocument>(string id, ILocatie locatie) where TDocument : class;
Task RemoveLocatie<TDocument>(string id, int locatieId) where TDocument : class;
Task UpdateLocatie<TDocument>(string id, ILocatie locatie) where TDocument : class;
Task Remove<T>(string id) where T : class;
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
public sealed class When_NaamGewijzigd_Setup
{
public WijzigBasisgegevensRequest Request { get; }
public V052_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWijzigen Scenario { get; }
public V053_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWijzigen Scenario { get; }
public HttpResponseMessage Response { get; }

public When_NaamGewijzigd_Setup(EventsInDbScenariosFixture fixture)
{
Scenario = fixture.V052AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWijzigen;
Scenario = fixture.V053AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWijzigen;

Request = new Fixture().CustomizeAdminApi().Create<WijzigBasisgegevensRequest>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,11 +126,11 @@ public readonly V045_VerenigingMetRechtspersoonlijkheidWerdGeregistreerd_With_Co
public readonly V046_FeitelijkeVerenigingWerdGeregistreerd_ForWijzigStartdatum
V046FeitelijkeVerenigingWerdGeregistreerdForWijzigStartdatum = new();

public readonly V052_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWijzigen
V052AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWijzigen = new();
public readonly V053_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWijzigen
V053AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWijzigen = new();

public readonly V054_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd
V054AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWerdGewijzigd = new();
public readonly V055_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd
V055AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWerdGewijzigd = new();


public readonly V047_FeitelijkeVerenigingWerdGeregistreerd_WithMinimalFields_ForDuplicateDetection_WithAnalyzer
Expand Down Expand Up @@ -184,8 +184,8 @@ protected override async Task Given()
V044VerenigingMetRechtspersoonlijkheidWerdGeregistreerdWithWijzigMaatschappelijkeZetelVolgensKbo,
V045VerenigingMetRechtspersoonlijkheidWerdGeregistreerdWithContactgegevenFromKboForWijzigen,
V046FeitelijkeVerenigingWerdGeregistreerdForWijzigStartdatum,
V052AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWijzigen,
V054AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWerdGewijzigd,
V053AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWijzigen,
V055AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWerdGewijzigd,
};

foreach (var scenario in scenarios)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@ public V047_FeitelijkeVerenigingWerdGeregistreerd_WithMinimalFields_ForDuplicate
* 2 karakters van plaats wisselen → Pottestampers = Pottestapmers
**/

var verenigingWerdGeregistreerdOmTeWijzigen = VerenigingWerdGeregistreerd(fixture, naam: "XXX van Technologïeënthusiasten: Inováçie & Ëntwikkeling", vCode: "V9999047",
postcode: "9832", gemeente: "Neder-over-opper-onder-heembeek");
var verenigingWerdGeregistreerdOmTeWijzigen = VerenigingWerdGeregistreerd(
fixture, naam: "XXX van Technologïeënthusiasten: Inováçie & Ëntwikkeling", vCode: "V9999047",
postcode: "9832", gemeente: "Neder-over-opper-onder-heembeek");

var locatie = fixture.Create<Registratiedata.Locatie>();
var locatieTeVerwijderen = fixture.Create<Registratiedata.Locatie>();
Expand All @@ -49,12 +50,18 @@ public V047_FeitelijkeVerenigingWerdGeregistreerd_WithMinimalFields_ForDuplicate
.Select(Registratiedata.HoofdactiviteitVerenigingsloket.With)
.ToArray()),
new LocatieWerdToegevoegd(locatie),
new LocatieWerdGewijzigd(locatie with { Naam = "Erembodegem"}),
new LocatieWerdGewijzigd(locatie with { Naam = "Erembodegem" }),
new LocatieWerdToegevoegd(locatieTeVerwijderen),

})
.ToArray();

var verenigingWerdGeregistreerdOmTeStoppen = VerenigingWerdGeregistreerd(
fixture, naam: "Vereniging van Technologïeënthusiasten: Inováçie & Ëntwikkeling", vCode: "V9999052",
postcode: "9832", gemeente: "Neder-over-opper-onder-heembeek");

verenigingWerdGeregistreerdOmTeStoppen.Item2 = verenigingWerdGeregistreerdOmTeStoppen.Item2.Append(
new VerenigingWerdGestopt(DateOnly.MaxValue)).ToArray();

EventsPerVCode = new[]
{
verenigingWerdGeregistreerdOmTeWijzigen,
Expand All @@ -64,7 +71,7 @@ public V047_FeitelijkeVerenigingWerdGeregistreerd_WithMinimalFields_ForDuplicate
VerenigingWerdGeregistreerd(fixture, naam: "Sint-Servaas", vCode: "V9999050", postcode: "8800", gemeente: "Roeselare"),
VerenigingWerdGeregistreerd(fixture, naam: "De pottestampers", vCode: "V9999051", postcode: "9830",
gemeente: "Heist-op-den-Berg"),

verenigingWerdGeregistreerdOmTeStoppen,
};

Metadata = fixture.Create<CommandMetadata>() with { ExpectedVersion = null };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@ namespace AssociationRegistry.Test.Admin.Api.Fixtures.Scenarios.EventsInDb;
using Framework;
using AutoFixture;

public class V052_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWijzigen : IEventsInDbScenario
public class V053_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWijzigen : IEventsInDbScenario
{
public readonly VerenigingMetRechtspersoonlijkheidWerdGeregistreerd MoederWerdGeregistreerd;
public readonly AfdelingWerdGeregistreerd AfdelingWerdGeregistreerd;
public readonly CommandMetadata Metadata;

public V052_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWijzigen()
public V053_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWijzigen()
{
var fixture = new Fixture().CustomizeAdminApi();

VCodeMoeder = "V9999052";
VCodeMoeder = "V9999053";
NaamMoeder = "De coolste moeder";
MoederWerdGeregistreerd = fixture.Create<VerenigingMetRechtspersoonlijkheidWerdGeregistreerd>() with
{
Expand All @@ -25,7 +25,7 @@ public V052_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWijzigen()
};
KboNummerMoeder = MoederWerdGeregistreerd.KboNummer;

VCode = "V9999053";
VCode = "V9999054";
AfdelingWerdGeregistreerd = fixture.Create<AfdelingWerdGeregistreerd>() with
{
VCode = VCode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,21 @@ namespace AssociationRegistry.Test.Admin.Api.Fixtures.Scenarios.EventsInDb;
using AutoFixture;
using Vereniging;

public class V054_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd : IEventsInDbScenario
public class V055_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd : IEventsInDbScenario
{
public readonly VerenigingMetRechtspersoonlijkheidWerdGeregistreerd MoederWerdGeregistreerd;
public readonly AfdelingWerdGeregistreerd AfdelingWerdGeregistreerd;
public readonly NaamWerdGewijzigd NaamWerdGewijzigd;
public readonly CommandMetadata Metadata;

public V054_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd()
public V055_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd()
{
var fixture = new Fixture().CustomizeAdminApi();

VCodeMoeder = "V9999054";
VCodeMoeder = "V9999055";
NaamMoeder = "De coolste moeder";

VCode = "V9999050";
VCode = "V9999056";
NaamAfdeling = "De coolste afdeling";

MoederWerdGeregistreerd = fixture.Create<VerenigingMetRechtspersoonlijkheidWerdGeregistreerd>() with
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
namespace AssociationRegistry.Test.Admin.Api.WhenDetectingDuplicates;

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

[Collection(nameof(AdminApiCollection))]
[Category("AdminApi")]
[IntegrationTest]
public class Given_A_Stopzetting
{

private readonly AdminApiClient _adminApiClient;
private readonly Fixture _fixture;
private readonly V047_FeitelijkeVerenigingWerdGeregistreerd_WithMinimalFields_ForDuplicateDetection_WithAnalyzer _scenario;

public Given_A_Stopzetting(EventsInDbScenariosFixture fixture)
{
_fixture = new Fixture().CustomizeAdminApi();
_adminApiClient = fixture.AdminApiClient;
_scenario = fixture.V047FeitelijkeVerenigingWerdGeregistreerdWithMinimalFieldsForDuplicateDetectionWithAnalyzer;
}

[Theory]
[InlineData("V9999052", "Vereniging van Technologïeënthusiasten: Inováçie & Ëntwikkeling")]
public async Task? Then_The_Stopped_Duplicate_IsNotDetected(
string duplicatesShouldNotContainThisVCode,
string naam)
{
var request = CreateRegistreerFeitelijkeVerenigingRequest(duplicatesShouldNotContainThisVCode, naam);

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

var responseContent = await response.Content.ReadAsStringAsync();

var vCodes = ExtractDuplicateVCode(responseContent);

vCodes.Should().NotContain(duplicatesShouldNotContainThisVCode);
}

private RegistreerFeitelijkeVerenigingRequest CreateRegistreerFeitelijkeVerenigingRequest(string vCode, string naam)
{
var @event = _scenario.EventsPerVCode
.Single(t => t.Item1.Value == vCode)
.Item2
.First() as FeitelijkeVerenigingWerdGeregistreerd;

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 = @event.Locaties.First().Adres.Postcode,
Gemeente = @event.Locaties.First().Adres.Gemeente,
Land = _fixture.Create<string>(),
},
},
},
};
}

private static IEnumerable<string> ExtractDuplicateVCode(string responseContent)
=> JObject.Parse(responseContent)
.SelectTokens("$.mogelijkeDuplicateVerenigingen[*].vCode")
.Select(x => x.ToString());
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ namespace AssociationRegistry.Test.Admin.Api.When_Retrieving_Detail;
public class Given_MoederWerdGeregistreerd_And_Then_AfdelingWerdGeregistreerd_AndThen_NaamWerdGewijzigd
{
private readonly AdminApiClient _adminApiClient;
private readonly V054_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd _scenario;
private readonly V055_AfdelingWerdGeregistreerd_MetBestaandeMoeder_VoorNaamWerdGewijzigd _scenario;

public Given_MoederWerdGeregistreerd_And_Then_AfdelingWerdGeregistreerd_AndThen_NaamWerdGewijzigd(EventsInDbScenariosFixture fixture)
{
_scenario = fixture.V054AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWerdGewijzigd;
_scenario = fixture.V055AfdelingWerdGeregistreerdMetBestaandeMoederVoorNaamWerdGewijzigd;
_adminApiClient = fixture.DefaultClient;
}

Expand Down
Loading