Project Init

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Yaojia Wang
2025-11-02 23:55:18 +01:00
commit 014d62bcc2
169 changed files with 28867 additions and 0 deletions

View File

@@ -0,0 +1,126 @@
using ColaFlow.Modules.ProjectManagement.Domain.ValueObjects;
using FluentAssertions;
namespace ColaFlow.Domain.Tests.ValueObjects;
/// <summary>
/// Unit tests for ProjectId value object
/// </summary>
public class ProjectIdTests
{
[Fact]
public void Create_WithoutParameter_ShouldGenerateNewGuid()
{
// Act
var projectId = ProjectId.Create();
// Assert
projectId.Should().NotBeNull();
projectId.Value.Should().NotBe(Guid.Empty);
}
[Fact]
public void Create_WithGuid_ShouldCreateProjectIdWithGivenValue()
{
// Arrange
var guid = Guid.NewGuid();
// Act
var projectId = ProjectId.Create(guid);
// Assert
projectId.Value.Should().Be(guid);
}
[Fact]
public void From_WithGuid_ShouldCreateProjectId()
{
// Arrange
var guid = Guid.NewGuid();
// Act
var projectId = ProjectId.From(guid);
// Assert
projectId.Value.Should().Be(guid);
}
[Fact]
public void Create_MultipleCalls_ShouldGenerateDifferentGuids()
{
// Act
var projectId1 = ProjectId.Create();
var projectId2 = ProjectId.Create();
// Assert
projectId1.Value.Should().NotBe(projectId2.Value);
}
[Fact]
public void Equals_WithSameValue_ShouldReturnTrue()
{
// Arrange
var guid = Guid.NewGuid();
var projectId1 = ProjectId.Create(guid);
var projectId2 = ProjectId.Create(guid);
// Act & Assert
projectId1.Should().Be(projectId2);
projectId1.Equals(projectId2).Should().BeTrue();
}
[Fact]
public void Equals_WithDifferentValue_ShouldReturnFalse()
{
// Arrange
var projectId1 = ProjectId.Create();
var projectId2 = ProjectId.Create();
// Act & Assert
projectId1.Should().NotBe(projectId2);
projectId1.Equals(projectId2).Should().BeFalse();
}
[Fact]
public void GetHashCode_WithSameValue_ShouldReturnSameHashCode()
{
// Arrange
var guid = Guid.NewGuid();
var projectId1 = ProjectId.Create(guid);
var projectId2 = ProjectId.Create(guid);
// Act & Assert
projectId1.GetHashCode().Should().Be(projectId2.GetHashCode());
}
[Fact]
public void ToString_ShouldReturnGuidString()
{
// Arrange
var guid = Guid.NewGuid();
var projectId = ProjectId.Create(guid);
// Act
var result = projectId.ToString();
// Assert
result.Should().Be(guid.ToString());
}
[Fact]
public void ValueObject_ShouldBeImmutable()
{
// Arrange
var guid = Guid.NewGuid();
var projectId = ProjectId.Create(guid);
var originalValue = projectId.Value;
// Act - Try to get the value multiple times
var value1 = projectId.Value;
var value2 = projectId.Value;
// Assert
value1.Should().Be(originalValue);
value2.Should().Be(originalValue);
}
}