WildPlumProject/WildPlumTests/DataModelTests/WarehouseDataModelTests.cs

73 lines
2.4 KiB
C#
Raw Normal View History

2025-02-19 09:24:22 +04:00
using WildPlumContracts.DataModels;
using WildPlumContracts.Exceptions;
namespace WildPlumTests.DataModelTests;
[TestFixture]
public class WarehouseDataModelTests
{
[Test]
public void Validate_ThrowsException_WhenIdIsNullOrEmpty()
{
Assert.Multiple(() =>
{
Assert.That(() => CreateDataModel(null!, "Warehouse Name", "Location").Validate(),
Throws.TypeOf<ValidationException>());
Assert.That(() => CreateDataModel(string.Empty, "Warehouse Name", "Location").Validate(),
Throws.TypeOf<ValidationException>());
});
}
[Test]
public void Validate_ThrowsException_WhenIdIsNotGuid()
{
Assert.That(() => CreateDataModel("invalid-guid", "Warehouse Name", "Location").Validate(),
Throws.TypeOf<ValidationException>());
}
[Test]
public void Validate_ThrowsException_WhenNameIsNullOrEmpty()
{
Assert.Multiple(() =>
{
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), null!, "Location").Validate(),
Throws.TypeOf<ValidationException>());
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), string.Empty, "Location").Validate(),
Throws.TypeOf<ValidationException>());
});
}
[Test]
public void Validate_ThrowsException_WhenLocationIsNullOrEmpty()
{
Assert.Multiple(() =>
{
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), "Warehouse Name", null!).Validate(),
Throws.TypeOf<ValidationException>());
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), "Warehouse Name", string.Empty).Validate(),
Throws.TypeOf<ValidationException>());
});
}
[Test]
public void AllFieldsAreCorrectTest()
{
var id = Guid.NewGuid().ToString();
var name = "Warehouse Name";
var location = "Location";
var warehouseData = CreateDataModel(id, name, location);
Assert.That(() => warehouseData.Validate(), Throws.Nothing);
Assert.Multiple(() =>
{
Assert.That(warehouseData.Id, Is.EqualTo(id));
Assert.That(warehouseData.Name, Is.EqualTo(name));
Assert.That(warehouseData.Location, Is.EqualTo(location));
});
}
private static WarehouseDataModel CreateDataModel(string id, string name, string location) =>
new(id, name, location);
}