using FluentAssertions; using FnbEngine.Domain.AggregatesModel.TableAggregate; using FnbEngine.Domain.Exceptions; using Xunit; namespace FnbEngine.UnitTests.Domain; /// /// EN: Unit tests for table aggregate behavior. /// VI: Unit tests cho hành vi aggregate bàn ăn. /// 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(); } }