In progress
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
using ColaFlow.Modules.Identity.Domain.Aggregates.Tenants;
|
||||
using FluentAssertions;
|
||||
using Xunit;
|
||||
|
||||
namespace ColaFlow.Modules.Identity.Domain.Tests.ValueObjects;
|
||||
|
||||
public sealed class TenantSlugTests
|
||||
{
|
||||
[Theory]
|
||||
[InlineData("acme")]
|
||||
[InlineData("beta-corp")]
|
||||
[InlineData("test-123")]
|
||||
[InlineData("abc")]
|
||||
public void Create_ShouldSucceed_ForValidSlug(string slug)
|
||||
{
|
||||
// Act
|
||||
var tenantSlug = TenantSlug.Create(slug);
|
||||
|
||||
// Assert
|
||||
tenantSlug.Value.Should().Be(slug);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("")]
|
||||
[InlineData(" ")]
|
||||
[InlineData("ab")] // Too short
|
||||
[InlineData("www")] // Reserved
|
||||
[InlineData("api")] // Reserved
|
||||
[InlineData("admin")] // Reserved
|
||||
[InlineData("acme_corp")] // Underscore
|
||||
[InlineData("acme corp")] // Space
|
||||
[InlineData("-acme")] // Starts with hyphen
|
||||
[InlineData("acme-")] // Ends with hyphen
|
||||
[InlineData("acme--corp")] // Double hyphen
|
||||
public void Create_ShouldThrow_ForInvalidSlug(string slug)
|
||||
{
|
||||
// Act & Assert
|
||||
var act = () => TenantSlug.Create(slug);
|
||||
act.Should().Throw<ArgumentException>();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Create_ShouldConvertToLowerCase()
|
||||
{
|
||||
// Act
|
||||
var tenantSlug = TenantSlug.Create("AcmeCorp");
|
||||
|
||||
// Assert
|
||||
tenantSlug.Value.Should().Be("acmecorp");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Create_ShouldTrimWhitespace()
|
||||
{
|
||||
// Act
|
||||
var tenantSlug = TenantSlug.Create(" acme ");
|
||||
|
||||
// Assert
|
||||
tenantSlug.Value.Should().Be("acme");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Create_ShouldThrow_ForTooLongSlug()
|
||||
{
|
||||
// Arrange
|
||||
var longSlug = new string('a', 51);
|
||||
|
||||
// Act & Assert
|
||||
var act = () => TenantSlug.Create(longSlug);
|
||||
act.Should().Throw<ArgumentException>()
|
||||
.WithMessage("*cannot exceed 50 characters*");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user