Skip to content

Commit

Permalink
feat: or-1716 implement acm for correctie dubbels
Browse files Browse the repository at this point in the history
  • Loading branch information
emalfroy committed Jan 6, 2025
1 parent 69a8b5f commit 78eeb27
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,24 @@ public async Task Project(
ops.StoreObjects(docs);
}

public async Task Project(IEvent<MarkeringDubbeleVerengingWerdGecorrigeerd> markeringDubbeleVerengingWerdGecorrigeerd, IDocumentOperations ops)
{
var docs = new List<object>();

docs.AddRange(await VerenigingenPerInszProjector.Apply(markeringDubbeleVerengingWerdGecorrigeerd, ops));

ops.StoreObjects(docs);
}

public async Task Project(IEvent<VerenigingAanvaarddeCorrectieDubbeleVereniging> VerenigingAanvaarddeCorrectieDubbeleVereniging, IDocumentOperations ops)
{
var docs = new List<object>();

docs.AddRange(await VerenigingenPerInszProjector.Apply(VerenigingAanvaarddeCorrectieDubbeleVereniging, ops));

ops.StoreObjects(docs);
}

private static class VerenigingenPerInszProjector
{
public static async Task<List<VerenigingenPerInszDocument>> Apply(
Expand Down Expand Up @@ -379,6 +397,52 @@ public static async Task<List<VerenigingenPerInszDocument>> Apply(

return docs;
}

public static async Task<List<VerenigingenPerInszDocument>> Apply(
IEvent<VerenigingAanvaarddeCorrectieDubbeleVereniging> verenigingAanvaarddeCorrectieDubbeleVereniging,
IDocumentOperations ops)
{
var docs = new List<VerenigingenPerInszDocument>();
var documents = await ops.GetVerenigingenPerInszDocuments(verenigingAanvaarddeCorrectieDubbeleVereniging.Data.VCode);

foreach (var verenigingenPerInszDocument in documents)
{
var vereniging =
verenigingenPerInszDocument.Verenigingen.Single(
vereniging => vereniging.VCode == verenigingAanvaarddeCorrectieDubbeleVereniging.StreamKey!);

vereniging.CorresponderendeVCodes =
vereniging.CorresponderendeVCodes
.Where(w => w != verenigingAanvaarddeCorrectieDubbeleVereniging.Data.VCodeDubbeleVereniging)
.ToArray();

docs.Add(verenigingenPerInszDocument);
}

return docs;
}

public static async Task<List<VerenigingenPerInszDocument>> Apply(
IEvent<MarkeringDubbeleVerengingWerdGecorrigeerd> markeringDubbeleVerengingWerdGecorrigeerd,
IDocumentOperations ops)
{
var docs = new List<VerenigingenPerInszDocument>();
var documents = await ops.GetVerenigingenPerInszDocuments(markeringDubbeleVerengingWerdGecorrigeerd.Data.VCode);

foreach (var verenigingenPerInszDocument in documents)
{
var vereniging =
verenigingenPerInszDocument.Verenigingen.Single(
vereniging => vereniging.VCode == markeringDubbeleVerengingWerdGecorrigeerd.StreamKey!);

vereniging.IsDubbel = false;

docs.Add(verenigingenPerInszDocument);
}

return docs;
}

}

private static class VerenigingDocumentProjector
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
namespace AssociationRegistry.Test.Projections.Acm.Dubbels;

[Collection(nameof(ProjectionContext))]
public class Given_MarkeringDubbeleVerengingWerdGecorrigeerd(
VerenigingenPerInszScenarioFixture<VerenigingAanvaarddeCorrectieDubbeleVerenigingScenario> fixture)
: VerenigingenPerInszScenarioClassFixture<VerenigingAanvaarddeCorrectieDubbeleVerenigingScenario>
{
[Fact]
public void Then_Dubbele_Vereniging_Is_Gemarkeerd_Als_Dubbel()
{
var dubbeleVereniging =
fixture.Result.Verenigingen.Single(x => x.VCode == fixture.Scenario.DubbeleVerenigingWerdGeregistreerd.VCode);

dubbeleVereniging.IsDubbel.Should().BeFalse();
}

[Fact]
public void Then_Authentieke_Vereniging_Has_CorresponderendeVCodes()
{
var authentiekeVereniging =
fixture.Result.Verenigingen.Single(x => x.VCode == fixture.Scenario.AuthentiekeVerenigingWerdGeregistreerd.VCode);

authentiekeVereniging.CorresponderendeVCodes.Should().NotContain(fixture.Scenario.DubbeleVerenigingWerdGeregistreerd.VCode);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ public class VerenigingAanvaarddeCorrectieDubbeleVerenigingScenario : InszScenar
public FeitelijkeVerenigingWerdGeregistreerd AuthentiekeVerenigingWerdGeregistreerd { get; }
public VerenigingWerdGemarkeerdAlsDubbelVan VerenigingWerdGemarkeerdAlsDubbelVan { get; set; }
public VerenigingAanvaarddeDubbeleVereniging VerenigingAanvaarddeDubbeleVereniging { get; set; }
public MarkeringDubbeleVerengingWerdGecorrigeerd MarkeringDubbeleVerengingWerdGecorrigeerd { get; set; }
public VerenigingAanvaarddeCorrectieDubbeleVereniging VerenigingAanvaarddeCorrectieDubbeleVereniging { get; set; }

private string _insz { get; }
Expand All @@ -31,6 +32,12 @@ public VerenigingAanvaarddeCorrectieDubbeleVerenigingScenario()
VCodeAuthentiekeVereniging = AuthentiekeVerenigingWerdGeregistreerd.VCode,
};

MarkeringDubbeleVerengingWerdGecorrigeerd = AutoFixture.Create<MarkeringDubbeleVerengingWerdGecorrigeerd>() with
{
VCode = DubbeleVerenigingWerdGeregistreerd.VCode,
VCodeAuthentiekeVereniging = AuthentiekeVerenigingWerdGeregistreerd.VCode,
};

VerenigingAanvaarddeDubbeleVereniging = AutoFixture.Create<VerenigingAanvaarddeDubbeleVereniging>() with
{
VCode = AuthentiekeVerenigingWerdGeregistreerd.VCode,
Expand All @@ -48,7 +55,7 @@ public VerenigingAanvaarddeCorrectieDubbeleVerenigingScenario()

public override EventsPerVCode[] Events =>
[
new(DubbeleVerenigingWerdGeregistreerd.VCode, DubbeleVerenigingWerdGeregistreerd, VerenigingWerdGemarkeerdAlsDubbelVan),
new(DubbeleVerenigingWerdGeregistreerd.VCode, DubbeleVerenigingWerdGeregistreerd, VerenigingWerdGemarkeerdAlsDubbelVan, MarkeringDubbeleVerengingWerdGecorrigeerd),
new(AuthentiekeVerenigingWerdGeregistreerd.VCode, AuthentiekeVerenigingWerdGeregistreerd, VerenigingAanvaarddeDubbeleVereniging, VerenigingAanvaarddeCorrectieDubbeleVereniging),
];

Expand Down

0 comments on commit 78eeb27

Please sign in to comment.