Files
pos-system/services/fnb-engine-net/tests/FnbEngine.UnitTests/Domain/TableAggregateTests.cs
2026-02-23 13:02:38 +00:00

53 lines
1.3 KiB
C#

using FluentAssertions;
using FnbEngine.Domain.AggregatesModel.TableAggregate;
using FnbEngine.Domain.Exceptions;
using Xunit;
namespace FnbEngine.UnitTests.Domain;
/// <summary>
/// EN: Unit tests for table aggregate behavior.
/// VI: Unit tests cho hành vi aggregate bàn ăn.
/// </summary>
public class TableAggregateTests
{
[Fact]
public void CreateTable_WithValidData_ShouldBeAvailable()
{
// Act
var table = new Table(Guid.NewGuid(), "A-01", 4, "Main Hall");
// Assert
table.TableNumber.Should().Be("A-01");
table.Capacity.Should().Be(4);
table.Status.Should().Be(TableStatus.Available);
}
[Fact]
public void MarkAsOccupied_WhenAvailable_ShouldSucceed()
{
// Arrange
var table = new Table(Guid.NewGuid(), "B-02", 6);
// Act
table.MarkAsOccupied();
// Assert
table.Status.Should().Be(TableStatus.Occupied);
}
[Fact]
public void MarkAsOccupied_WhenCleaning_ShouldThrowDomainException()
{
// Arrange
var table = new Table(Guid.NewGuid(), "C-03", 2);
table.MarkAsCleaning();
// Act
var action = () => table.MarkAsOccupied();
// Assert
action.Should().Throw<DomainException>();
}
}