diff --git a/src/Fluxera.Entity/Entity.cs b/src/Fluxera.Entity/Entity.cs index bb2bb3b..1296c1b 100644 --- a/src/Fluxera.Entity/Entity.cs +++ b/src/Fluxera.Entity/Entity.cs @@ -56,7 +56,7 @@ public virtual bool IsTransient { get { - bool isTransient = Equals(this.ID, default); + bool isTransient = Equals(this.ID, default(TKey)); if(typeof(TKey) == typeof(string)) { diff --git a/tests/Fluxera.Entity.UnitTests/EmployeeAggregate/EmployeeGuid.cs b/tests/Fluxera.Entity.UnitTests/EmployeeAggregate/EmployeeGuid.cs new file mode 100644 index 0000000..0527ece --- /dev/null +++ b/tests/Fluxera.Entity.UnitTests/EmployeeAggregate/EmployeeGuid.cs @@ -0,0 +1,17 @@ +namespace Fluxera.Entity.UnitTests.EmployeeAggregate +{ + using System; + using JetBrains.Annotations; + + [PublicAPI] + public class EmployeeGuid : AggregateRoot + { + [DomainSignature] + public string Name { get; set; } + + [DomainSignature] + public int EmployeeNumber { get; set; } + + public decimal Salary { get; set; } + } +} diff --git a/tests/Fluxera.Entity.UnitTests/EntityExtensionsTests.cs b/tests/Fluxera.Entity.UnitTests/EntityExtensionsTests.cs index 90f9926..9c1462f 100644 --- a/tests/Fluxera.Entity.UnitTests/EntityExtensionsTests.cs +++ b/tests/Fluxera.Entity.UnitTests/EntityExtensionsTests.cs @@ -1,66 +1,20 @@ namespace Fluxera.Entity.UnitTests { using System; - using EmployeeAggregate; using FluentAssertions; + using Fluxera.Entity.UnitTests.EmployeeAggregate; using NUnit.Framework; [TestFixture] public class EntityExtensionsTests { [Test] - public void ShouldReturnTrueForTransientEntityForDefaultValue() - { - Employee employee = new Employee - { - Name = "James Bond", - EmployeeNumber = 8051007, - Salary = 1_000_000, - }; - - employee.IsTransient.Should().BeTrue(); - } - - [Test] - public void ShouldReturnTrueForTransientEntityForNull() - { - Employee employee = new Employee - { - ID = null, - Name = "James Bond", - EmployeeNumber = 8051007, - Salary = 1_000_000, - }; - - employee.IsTransient.Should().BeTrue(); - } - - [Test] - public void ShouldReturnTrueForTransientEntityForEmpty() - { - Employee employee = new Employee - { - ID = string.Empty, - Name = "James Bond", - EmployeeNumber = 8051007, - Salary = 1_000_000, - }; - - employee.IsTransient.Should().BeTrue(); - } - - [Test] - public void ShouldReturnTrueForTransientEntityForOnlyWhitespace() + [TestCase(typeof(Employee), true)] + [TestCase(typeof(PerformanceReview), false)] + [TestCase(typeof(object), false)] + public void IsAggregateRootShouldReturnExpectedValue(Type type, bool expected) { - Employee employee = new Employee - { - ID = " ", - Name = "James Bond", - EmployeeNumber = 8051007, - Salary = 1_000_000, - }; - - employee.IsTransient.Should().BeTrue(); + type.IsAggregateRoot().Should().Be(expected); } [Test] @@ -71,14 +25,5 @@ public void IsEntityShouldReturnExpectedValue(Type type, bool expected) { type.IsEntity().Should().Be(expected); } - - [Test] - [TestCase(typeof(Employee), true)] - [TestCase(typeof(PerformanceReview), false)] - [TestCase(typeof(object), false)] - public void IsAggregateRootShouldReturnExpectedValue(Type type, bool expected) - { - type.IsAggregateRoot().Should().Be(expected); - } } } diff --git a/tests/Fluxera.Entity.UnitTests/EntityWithGuidKeyTransientTests.cs b/tests/Fluxera.Entity.UnitTests/EntityWithGuidKeyTransientTests.cs new file mode 100644 index 0000000..c768fc1 --- /dev/null +++ b/tests/Fluxera.Entity.UnitTests/EntityWithGuidKeyTransientTests.cs @@ -0,0 +1,38 @@ +namespace Fluxera.Entity.UnitTests +{ + using System; + using FluentAssertions; + using Fluxera.Entity.UnitTests.EmployeeAggregate; + using NUnit.Framework; + + [TestFixture] + public class EntityWithGuidKeyTransientTests + { + [Test] + public void ShouldReturnTrueForTransientEntityForDefaultValue() + { + EmployeeGuid employee = new EmployeeGuid + { + Name = "James Bond", + EmployeeNumber = 8051007, + Salary = 1_000_000, + }; + + employee.IsTransient.Should().BeTrue(); + } + + [Test] + public void ShouldReturnTrueForTransientEntityForEmpty() + { + EmployeeGuid employee = new EmployeeGuid + { + ID = Guid.Empty, + Name = "James Bond", + EmployeeNumber = 8051007, + Salary = 1_000_000, + }; + + employee.IsTransient.Should().BeTrue(); + } + } +} diff --git a/tests/Fluxera.Entity.UnitTests/EntityWithStringKeyTransientTests.cs b/tests/Fluxera.Entity.UnitTests/EntityWithStringKeyTransientTests.cs new file mode 100644 index 0000000..48a5ec1 --- /dev/null +++ b/tests/Fluxera.Entity.UnitTests/EntityWithStringKeyTransientTests.cs @@ -0,0 +1,65 @@ +namespace Fluxera.Entity.UnitTests +{ + using FluentAssertions; + using Fluxera.Entity.UnitTests.EmployeeAggregate; + using NUnit.Framework; + + [TestFixture] + public class EntityWithStringKeyTransientTests + { + [Test] + public void ShouldReturnTrueForTransientEntityForDefaultValue() + { + Employee employee = new Employee + { + Name = "James Bond", + EmployeeNumber = 8051007, + Salary = 1_000_000, + }; + + employee.IsTransient.Should().BeTrue(); + } + + [Test] + public void ShouldReturnTrueForTransientEntityForEmpty() + { + Employee employee = new Employee + { + ID = string.Empty, + Name = "James Bond", + EmployeeNumber = 8051007, + Salary = 1_000_000, + }; + + employee.IsTransient.Should().BeTrue(); + } + + [Test] + public void ShouldReturnTrueForTransientEntityForNull() + { + Employee employee = new Employee + { + ID = null, + Name = "James Bond", + EmployeeNumber = 8051007, + Salary = 1_000_000, + }; + + employee.IsTransient.Should().BeTrue(); + } + + [Test] + public void ShouldReturnTrueForTransientEntityForOnlyWhitespace() + { + Employee employee = new Employee + { + ID = " ", + Name = "James Bond", + EmployeeNumber = 8051007, + Salary = 1_000_000, + }; + + employee.IsTransient.Should().BeTrue(); + } + } +}