53 lines
1.3 KiB
C#
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>();
|
|
}
|
|
}
|