From 419974ba12da71320cf73b02949f02d3a103b8c8 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Thu, 6 Jun 2024 15:17:22 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20F=C3=BCge=20BaseDto-Datensatz=20mit=20?= =?UTF-8?q?=C3=BCberschriebenem=20GetHashCode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DigitalData.Core.DTO/BaseDto.cs | 17 ++++ DigitalData.Core.Tests/ADServiceTests.cs | 18 ----- DigitalData.Core.Tests/DTO/BaseDtoTest.cs | 79 +++++++++++++++++++ .../DigitalData.Core.Tests.csproj | 4 + DigitalData.Core.sln | 2 +- 5 files changed, 101 insertions(+), 19 deletions(-) create mode 100644 DigitalData.Core.DTO/BaseDto.cs delete mode 100644 DigitalData.Core.Tests/ADServiceTests.cs create mode 100644 DigitalData.Core.Tests/DTO/BaseDtoTest.cs diff --git a/DigitalData.Core.DTO/BaseDto.cs b/DigitalData.Core.DTO/BaseDto.cs new file mode 100644 index 0000000..747c521 --- /dev/null +++ b/DigitalData.Core.DTO/BaseDto.cs @@ -0,0 +1,17 @@ +namespace DigitalData.Core.DTO +{ + /// + /// Represents a base Data Transfer Object (DTO) with an identifier. + /// + /// The type of the identifier. + /// The identifier of the DTO. + public record BaseDto(TId Id) where TId : notnull + { + /// + /// Returns the hash code for this instance, based on the identifier. + /// This override ensures that the hash code is derived consistently from the identifier. + /// + /// A hash code for the current object, derived from the identifier. + public override int GetHashCode() => Id.GetHashCode(); + } +} \ No newline at end of file diff --git a/DigitalData.Core.Tests/ADServiceTests.cs b/DigitalData.Core.Tests/ADServiceTests.cs deleted file mode 100644 index f7ec324..0000000 --- a/DigitalData.Core.Tests/ADServiceTests.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace DigitalData.Core.Tests -{ - [TestFixture] - public class ADServiceTests - { - [SetUp] - public void Setup() - { - - } - - [Test] - public void ValidateUser_CorrectCredentials_ReturnsTrue() - { - - } - } -} diff --git a/DigitalData.Core.Tests/DTO/BaseDtoTest.cs b/DigitalData.Core.Tests/DTO/BaseDtoTest.cs new file mode 100644 index 0000000..d9bda02 --- /dev/null +++ b/DigitalData.Core.Tests/DTO/BaseDtoTest.cs @@ -0,0 +1,79 @@ +using DigitalData.Core.DTO; + +namespace DigitalData.Core.Tests.DTO +{ + public class BaseDtoTest + { + public record SampleDto(int Id) : BaseDto(Id); + + [Test] + public void EntitiesWithSameIdShouldBeEqual() + { + var dto1 = new SampleDto(1); + var dto2 = new SampleDto(1); + + Assert.That(dto2, Is.EqualTo(dto1)); + } + + [Test] + public void EntitiesWithDifferentIdsShouldNotBeEqual() + { + var dto1 = new SampleDto(1); + var dto2 = new SampleDto(2); + + Assert.That(dto2, Is.Not.EqualTo(dto1)); + } + + [Test] + public void GetHashCodeShouldReturnSameValueForEntitiesWithSameId() + { + var dto1 = new SampleDto(1); + var dto2 = new SampleDto(1); + + Assert.That(dto2.GetHashCode(), Is.EqualTo(dto1.GetHashCode())); + } + + [Test] + public void EqualsShouldReturnFalseForNull() + { + var dto = new SampleDto(1); + + Assert.IsFalse(dto.Equals(null)); + } + + [Test] + public void EqualityOperatorShouldReturnTrueForSameReference() + { + var dto = new SampleDto(1); + + Assert.That(dto, Is.EqualTo(dto)); + } + + [Test] + public void EqualityOperatorShouldReturnFalseForDifferentEntitiesWithDifferentIds() + { + var dto1 = new SampleDto(1); + var dto2 = new SampleDto(2); + + Assert.IsFalse(dto1 == dto2); + } + + [Test] + public void InequalityOperatorShouldReturnTrueForDifferentEntitiesWithDifferentIds() + { + var dto1 = new SampleDto(1); + var dto2 = new SampleDto(2); + + Assert.IsTrue(dto1 != dto2); + } + + [Test] + public void InequalityOperatorShouldReturnFalseForEntitiesWithSameId() + { + var dto1 = new SampleDto(1); + var dto2 = new SampleDto(1); + + Assert.IsFalse(dto1 != dto2); + } + } +} \ No newline at end of file diff --git a/DigitalData.Core.Tests/DigitalData.Core.Tests.csproj b/DigitalData.Core.Tests/DigitalData.Core.Tests.csproj index b284f28..a4fb147 100644 --- a/DigitalData.Core.Tests/DigitalData.Core.Tests.csproj +++ b/DigitalData.Core.Tests/DigitalData.Core.Tests.csproj @@ -18,4 +18,8 @@ + + + + diff --git a/DigitalData.Core.sln b/DigitalData.Core.sln index 8cd090c..7696df0 100644 --- a/DigitalData.Core.sln +++ b/DigitalData.Core.sln @@ -13,7 +13,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DigitalData.Core.API", "Dig EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DigitalData.Core.Tests", "DigitalData.Core.Tests\DigitalData.Core.Tests.csproj", "{B54DEF90-C30C-44EA-9875-76F1B330CBB7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.Core.DTO", "DigitalData.Core.DTO\DigitalData.Core.DTO.csproj", "{0B051A5F-BD38-47D1-BAFF-D44BA30D3FB7}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DigitalData.Core.DTO", "DigitalData.Core.DTO\DigitalData.Core.DTO.csproj", "{0B051A5F-BD38-47D1-BAFF-D44BA30D3FB7}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution