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 productId = Guid.NewGuid().ToString(); var pekarId = Guid.NewGuid().ToString(); var statusType = StatusType.Pending; var order = new OrderDataModel(id, customerName, orderDate, totalAmount, discountAmount, productId, 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(productId, order.ProductId); 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(() => 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(() => 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(() => order.Validate()); } } }