2025-02-13 16:13:21 +04:00

104 lines
3.2 KiB
C#

using System;
using NUnit.Framework;
using CandyHouseBase.DataModels;
using CandyHouseBase.Enums;
using CandyHouseBase.Exceptions;
namespace CandyHouseTests.DataModelsTests
{
[TestFixture]
public class OrderDataModelTests
{
[Test]
public void CreateOrderDataModel_ValidData_ShouldCreateSuccessfully()
{
var id = Guid.NewGuid().ToString();
var customerName = "Alice";
var orderDate = DateTime.Now;
var totalAmount = 100.0m;
var discountAmount = 10.0m;
var orderId = Guid.NewGuid().ToString();
var pekarId = Guid.NewGuid().ToString();
var statusType = StatusType.Pending;
var order = new OrderDataModel(id, customerName, orderDate, totalAmount, discountAmount, orderId, pekarId, statusType);
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);
Assert.AreEqual(orderId, order.OrderId);
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());
}
[Test]
public void Validate_InvalidId_ShouldThrowValidationException()
{
var order = new OrderDataModel(
"",
"Alice",
DateTime.Now,
100.0m,
10.0m,
Guid.NewGuid().ToString(),
Guid.NewGuid().ToString(),
StatusType.Pending
);
Assert.Throws<ValidationException>(() => order.Validate());
}
[Test]
public void Validate_InvalidCustomerName_ShouldThrowValidationException()
{
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());
}
}
}