128 lines
5.8 KiB
C#
128 lines
5.8 KiB
C#
|
using WildPlumContracts.DataModels;
|
|||
|
using WildPlumContracts.Enums;
|
|||
|
using WildPlumContracts.Exceptions;
|
|||
|
|
|||
|
namespace WildPlumTests.DataModelTests;
|
|||
|
|
|||
|
[TestFixture]
|
|||
|
public class OrderDataModelTests
|
|||
|
{
|
|||
|
[Test]
|
|||
|
public void Validate_ThrowsException_WhenIdIsNullOrEmpty()
|
|||
|
{
|
|||
|
Assert.Multiple(() =>
|
|||
|
{
|
|||
|
Assert.That(() => CreateDataModel(null, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "John Doe", OrderStatus.Pending, DateTime.Now, CreateSubDataModel()).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
|
|||
|
Assert.That(() => CreateDataModel(string.Empty, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "John Doe", OrderStatus.Pending, DateTime.Now, CreateSubDataModel()).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public void Validate_ThrowsException_WhenIdIsNotGuid()
|
|||
|
{
|
|||
|
Assert.That(() => CreateDataModel("invalid-guid", Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "John Doe", OrderStatus.Pending, DateTime.Now, CreateSubDataModel()).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public void Validate_ThrowsException_WhenWarehouseIdIsNullOrEmpty()
|
|||
|
{
|
|||
|
Assert.Multiple(() =>
|
|||
|
{
|
|||
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString(), "John Doe", OrderStatus.Pending, DateTime.Now, CreateSubDataModel()).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
|
|||
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), string.Empty, Guid.NewGuid().ToString(), "John Doe", OrderStatus.Pending, DateTime.Now, CreateSubDataModel()).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public void Validate_ThrowsException_WhenWarehouseIdIsNotGuid()
|
|||
|
{
|
|||
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), "invalid-guid", Guid.NewGuid().ToString(), "John Doe", OrderStatus.Pending, DateTime.Now, CreateSubDataModel()).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public void Validate_ThrowsException_WhenWorkerIdIsNullOrEmpty()
|
|||
|
{
|
|||
|
Assert.Multiple(() =>
|
|||
|
{
|
|||
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, "John Doe", OrderStatus.Pending, DateTime.Now, CreateSubDataModel()).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
|
|||
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), string.Empty, "John Doe", OrderStatus.Pending, DateTime.Now, CreateSubDataModel()).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public void Validate_ThrowsException_WhenWorkerIdIsNotGuid()
|
|||
|
{
|
|||
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "invalid-guid", "John Doe", OrderStatus.Pending, DateTime.Now, CreateSubDataModel()).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public void Validate_ThrowsException_WhenCustomerNameIsNullOrEmpty()
|
|||
|
{
|
|||
|
Assert.Multiple(() =>
|
|||
|
{
|
|||
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, OrderStatus.Pending, DateTime.Now, CreateSubDataModel()).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
|
|||
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), string.Empty, OrderStatus.Pending, DateTime.Now, CreateSubDataModel()).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public void Validate_ThrowsException_WhenProductsListIsEmptyOrNull()
|
|||
|
{
|
|||
|
Assert.Multiple(() =>
|
|||
|
{
|
|||
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "John Doe", OrderStatus.Pending, DateTime.Now, null).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
|
|||
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "John Doe", OrderStatus.Pending, DateTime.Now, new List<OrderProductDataModel>()).Validate(),
|
|||
|
Throws.TypeOf<ValidationException>());
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public void AllFieldsAreCorrectTest()
|
|||
|
{
|
|||
|
var id = Guid.NewGuid().ToString();
|
|||
|
var warehouseId = Guid.NewGuid().ToString();
|
|||
|
var workerId = Guid.NewGuid().ToString();
|
|||
|
var customerName = "John Doe";
|
|||
|
var status = OrderStatus.Pending;
|
|||
|
var orderDate = DateTime.Now;
|
|||
|
var products = CreateSubDataModel();
|
|||
|
|
|||
|
var order = CreateDataModel(id, warehouseId, workerId, customerName, status, orderDate, products);
|
|||
|
|
|||
|
Assert.That(() => order.Validate(), Throws.Nothing);
|
|||
|
Assert.Multiple(() =>
|
|||
|
{
|
|||
|
Assert.That(order.Id, Is.EqualTo(id));
|
|||
|
Assert.That(order.WarehouseId, Is.EqualTo(warehouseId));
|
|||
|
Assert.That(order.WorkerId, Is.EqualTo(workerId));
|
|||
|
Assert.That(order.CustomerName, Is.EqualTo(customerName));
|
|||
|
Assert.That(order.Status, Is.EqualTo(status));
|
|||
|
Assert.That(order.OrderDate, Is.EqualTo(orderDate).Within(TimeSpan.FromSeconds(1)));
|
|||
|
Assert.That(order.Products, Is.EquivalentTo(products));
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
private static OrderDataModel CreateDataModel(string? id, string? warehouseId, string? workerId, string? customerName, OrderStatus status, DateTime orderDate, List<OrderProductDataModel>? products) =>
|
|||
|
new(id, warehouseId, workerId, customerName, status, orderDate, products);
|
|||
|
|
|||
|
private static List<OrderProductDataModel> CreateSubDataModel() =>
|
|||
|
new() { new OrderProductDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1) };
|
|||
|
}
|