2025-02-12 22:16:56 +04:00
|
|
|
using System;
|
|
|
|
using NUnit.Framework;
|
|
|
|
using CandyHouseBase.DataModels;
|
2025-02-13 16:13:21 +04:00
|
|
|
using CandyHouseBase.Enums;
|
2025-02-12 22:16:56 +04:00
|
|
|
using CandyHouseBase.Exceptions;
|
|
|
|
|
|
|
|
namespace CandyHouseTests.DataModelsTests
|
|
|
|
{
|
|
|
|
[TestFixture]
|
|
|
|
public class OrderDataModelTests
|
|
|
|
{
|
|
|
|
[Test]
|
2025-02-13 16:13:21 +04:00
|
|
|
public void CreateOrderDataModel_ValidData_ShouldCreateSuccessfully()
|
2025-02-12 22:16:56 +04:00
|
|
|
{
|
2025-02-13 16:13:21 +04:00
|
|
|
var id = Guid.NewGuid().ToString();
|
|
|
|
var customerName = "Alice";
|
|
|
|
var orderDate = DateTime.Now;
|
|
|
|
var totalAmount = 100.0m;
|
|
|
|
var discountAmount = 10.0m;
|
2025-02-26 23:49:16 +04:00
|
|
|
var productId = Guid.NewGuid().ToString();
|
2025-02-13 16:13:21 +04:00
|
|
|
var pekarId = Guid.NewGuid().ToString();
|
|
|
|
var statusType = StatusType.Pending;
|
|
|
|
|
2025-02-26 23:49:16 +04:00
|
|
|
var order = new OrderDataModel(id, customerName, orderDate, totalAmount, discountAmount, productId, pekarId,
|
|
|
|
statusType);
|
2025-02-13 16:13:21 +04:00
|
|
|
|
|
|
|
Assert.AreEqual(id, order.Id);
|
|
|
|
Assert.AreEqual(customerName, order.CustomerName);
|
|
|
|
Assert.AreEqual(orderDate, order.OrderDate);
|
|
|
|
Assert.AreEqual(totalAmount, order.TotalAmount);
|
|
|
|
Assert.AreEqual(discountAmount, order.DiscountAmount);
|
2025-02-26 23:49:16 +04:00
|
|
|
Assert.AreEqual(productId, order.ProductId);
|
2025-02-13 16:13:21 +04:00
|
|
|
Assert.AreEqual(pekarId, order.PekarId);
|
|
|
|
Assert.AreEqual(statusType, order.StatusType);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Validate_ValidData_ShouldNotThrowException()
|
|
|
|
{
|
|
|
|
var order = new OrderDataModel(
|
|
|
|
Guid.NewGuid().ToString(),
|
|
|
|
"Alice",
|
|
|
|
DateTime.Now,
|
|
|
|
100.0m,
|
|
|
|
10.0m,
|
|
|
|
Guid.NewGuid().ToString(),
|
|
|
|
Guid.NewGuid().ToString(),
|
|
|
|
StatusType.Pending
|
|
|
|
);
|
|
|
|
|
|
|
|
Assert.DoesNotThrow(() => order.Validate());
|
2025-02-12 22:16:56 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
2025-02-13 16:13:21 +04:00
|
|
|
public void Validate_InvalidId_ShouldThrowValidationException()
|
2025-02-12 22:16:56 +04:00
|
|
|
{
|
2025-02-13 16:13:21 +04:00
|
|
|
var order = new OrderDataModel(
|
|
|
|
"",
|
|
|
|
"Alice",
|
|
|
|
DateTime.Now,
|
|
|
|
100.0m,
|
|
|
|
10.0m,
|
|
|
|
Guid.NewGuid().ToString(),
|
|
|
|
Guid.NewGuid().ToString(),
|
|
|
|
StatusType.Pending
|
|
|
|
);
|
|
|
|
|
|
|
|
Assert.Throws<ValidationException>(() => order.Validate());
|
2025-02-12 22:16:56 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
2025-02-13 16:13:21 +04:00
|
|
|
public void Validate_InvalidCustomerName_ShouldThrowValidationException()
|
2025-02-12 22:16:56 +04:00
|
|
|
{
|
2025-02-13 16:13:21 +04:00
|
|
|
var order = new OrderDataModel(
|
|
|
|
Guid.NewGuid().ToString(),
|
|
|
|
"",
|
|
|
|
DateTime.Now,
|
|
|
|
100.0m,
|
|
|
|
10.0m,
|
|
|
|
Guid.NewGuid().ToString(),
|
|
|
|
Guid.NewGuid().ToString(),
|
|
|
|
StatusType.Pending
|
|
|
|
);
|
|
|
|
|
|
|
|
Assert.Throws<ValidationException>(() => order.Validate());
|
|
|
|
}
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void Validate_NegativeTotalAmount_ShouldThrowValidationException()
|
|
|
|
{
|
|
|
|
var order = new OrderDataModel(
|
|
|
|
Guid.NewGuid().ToString(),
|
|
|
|
"Alice",
|
|
|
|
DateTime.Now,
|
|
|
|
-50.0m,
|
|
|
|
10.0m,
|
|
|
|
Guid.NewGuid().ToString(),
|
|
|
|
Guid.NewGuid().ToString(),
|
|
|
|
StatusType.Pending
|
|
|
|
);
|
|
|
|
|
|
|
|
Assert.Throws<ValidationException>(() => order.Validate());
|
2025-02-12 22:16:56 +04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|