From bee039170a37155d28960572fc177b3bf3932339 Mon Sep 17 00:00:00 2001 From: emalfroy Date: Wed, 6 Nov 2024 16:13:02 +0100 Subject: [PATCH] fix: or-2515 return 200 when no changes on wijzig lidmaatschap --- .../WijzigLidmaatschapController.cs | 3 + .../Lidmaatschappen/Lidmaatschap.cs | 8 +- .../LidmaatschappenTests/EqualsTest.cs | 113 ++++++++++++++++++ 3 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 test/AssociationRegistry.Test/LidmaatschappenTests/EqualsTest.cs diff --git a/src/AssociationRegistry.Admin.Api/Verenigingen/Lidmaatschap/WijzigLidmaatschap/WijzigLidmaatschapController.cs b/src/AssociationRegistry.Admin.Api/Verenigingen/Lidmaatschap/WijzigLidmaatschap/WijzigLidmaatschapController.cs index ca184b123..fec573ee1 100644 --- a/src/AssociationRegistry.Admin.Api/Verenigingen/Lidmaatschap/WijzigLidmaatschap/WijzigLidmaatschapController.cs +++ b/src/AssociationRegistry.Admin.Api/Verenigingen/Lidmaatschap/WijzigLidmaatschap/WijzigLidmaatschapController.cs @@ -90,6 +90,9 @@ public async Task WijzigLidmaatschap( var envelope = new CommandEnvelope(request.ToCommand(vCode, lidmaatschapId), metaData); var commandResult = await _messageBus.InvokeAsync(envelope); + if (!commandResult.HasChanges()) + return Ok(); + Response.AddSequenceHeader(commandResult.Sequence); Response.AddETagHeader(commandResult.Version); diff --git a/src/AssociationRegistry/Vereniging/Lidmaatschappen/Lidmaatschap.cs b/src/AssociationRegistry/Vereniging/Lidmaatschappen/Lidmaatschap.cs index 5080b468c..875cde5e7 100644 --- a/src/AssociationRegistry/Vereniging/Lidmaatschappen/Lidmaatschap.cs +++ b/src/AssociationRegistry/Vereniging/Lidmaatschappen/Lidmaatschap.cs @@ -49,7 +49,13 @@ public virtual bool Equals(Lidmaatschap? other) if (AndereVereniging != other.AndereVereniging) return false; - if (Geldigheidsperiode != other.Geldigheidsperiode) + if (AndereVerenigingNaam != other.AndereVerenigingNaam) + return false; + + if (!Geldigheidsperiode.Van.Equals(other.Geldigheidsperiode.Van)) + return false; + + if (!Geldigheidsperiode.Tot.Equals(other.Geldigheidsperiode.Tot)) return false; if (Identificatie != other.Identificatie) diff --git a/test/AssociationRegistry.Test/LidmaatschappenTests/EqualsTest.cs b/test/AssociationRegistry.Test/LidmaatschappenTests/EqualsTest.cs new file mode 100644 index 000000000..d877c01cf --- /dev/null +++ b/test/AssociationRegistry.Test/LidmaatschappenTests/EqualsTest.cs @@ -0,0 +1,113 @@ +namespace AssociationRegistry.Test.LidmaatschappenTests; + +using Acties.VoegLidmaatschapToe; +using AutoFixture; +using Common.AutoFixture; +using Vereniging; +using Xunit; + +public class EqualsTest +{ + [Fact] + public void With_The_Same_Values_Return_True() + { + var fixture = new Fixture().CustomizeDomain(); + var lidmaatschap1 = fixture.Create(); + + var lidmaatschap2 = Lidmaatschap.Create( + lidmaatschap1.LidmaatschapId, + new VoegLidmaatschapToeCommand.ToeTeVoegenLidmaatschap(lidmaatschap1.AndereVereniging, + lidmaatschap1.AndereVerenigingNaam, + new Geldigheidsperiode( + new GeldigVan(lidmaatschap1.Geldigheidsperiode.Van), + new GeldigTot(lidmaatschap1.Geldigheidsperiode.Tot)), + lidmaatschap1.Identificatie, + lidmaatschap1.Beschrijving)); + + Assert.True(lidmaatschap1.Equals(lidmaatschap2)); + } + + [Fact] + public void With_Other_Van_Value_Return_False() + { + var fixture = new Fixture().CustomizeDomain(); + var lidmaatschap1 = fixture.Create(); + + var lidmaatschap2 = lidmaatschap1 with + { + Geldigheidsperiode = new Geldigheidsperiode(new GeldigVan(), new GeldigTot(lidmaatschap1.Geldigheidsperiode.Tot)), + }; + + Assert.False(lidmaatschap1.Equals(lidmaatschap2)); + } + + [Fact] + public void With_Other_Tot_Value_Return_False() + { + var fixture = new Fixture().CustomizeDomain(); + var lidmaatschap1 = fixture.Create(); + + var lidmaatschap2 = lidmaatschap1 with + { + Geldigheidsperiode = new Geldigheidsperiode(new GeldigVan(lidmaatschap1.Geldigheidsperiode.Van), new GeldigTot()) + }; + + Assert.False(lidmaatschap1.Equals(lidmaatschap2)); + } + + [Fact] + public void With_Other_Beschrijving_Value_Return_False() + { + var fixture = new Fixture().CustomizeDomain(); + var lidmaatschap1 = fixture.Create(); + + var lidmaatschap2 = lidmaatschap1 with + { + Beschrijving = fixture.Create(), + }; + + Assert.False(lidmaatschap1.Equals(lidmaatschap2)); + } + + [Fact] + public void With_Other_Identificatie_Value_Return_False() + { + var fixture = new Fixture().CustomizeDomain(); + var lidmaatschap1 = fixture.Create(); + + var lidmaatschap2 = lidmaatschap1 with + { + Identificatie = fixture.Create(), + }; + + Assert.False(lidmaatschap1.Equals(lidmaatschap2)); + } + + [Fact] + public void With_Other_AndereVereniging_Value_Return_False() + { + var fixture = new Fixture().CustomizeDomain(); + var lidmaatschap1 = fixture.Create(); + + var lidmaatschap2 = lidmaatschap1 with + { + AndereVereniging = fixture.Create(), + }; + + Assert.False(lidmaatschap1.Equals(lidmaatschap2)); + } + + [Fact] + public void With_Other_AndereVerenigingNaam_Value_Return_False() + { + var fixture = new Fixture().CustomizeDomain(); + var lidmaatschap1 = fixture.Create(); + + var lidmaatschap2 = lidmaatschap1 with + { + AndereVerenigingNaam = fixture.Create(), + }; + + Assert.False(lidmaatschap1.Equals(lidmaatschap2)); + } +}