using BitterlyAndExclamationMarkContracts.DataModels; using BitterlyAndExclamationMarkContracts.Enums; using BitterlyAndExclamationMarkContracts.Exceptions; namespace BitterlyAndExclamationMarkTests.DataModelsTests; [TestFixture] internal class OrderDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var order = CreateDataModel(null, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => order.Validate(), Throws.TypeOf()); order = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => order.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var order = CreateDataModel("id", Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => order.Validate(), Throws.TypeOf()); } [Test] public void WorkerIdIsNullOrEmptyTest() { var order = CreateDataModel(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => order.Validate(), Throws.TypeOf()); order = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => order.Validate(), Throws.TypeOf()); } [Test] public void WorkerIdIsNotGuidTest() { var order = CreateDataModel(Guid.NewGuid().ToString(), "workerId", Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => order.Validate(), Throws.TypeOf()); } [Test] public void BuyerIdIsNotGuidTest() { var order = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "buyerId", 10, false, CreateSubDataModel()); Assert.That(() => order.Validate(), Throws.TypeOf()); } [Test] public void SumIsLessOrZeroTest() { var order = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(),Guid.NewGuid().ToString(), 0, false, CreateSubDataModel()); Assert.That(() => order.Validate(), Throws.TypeOf()); order = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10, false, CreateSubDataModel()); Assert.That(() => order.Validate(), Throws.TypeOf()); } [Test] public void DishsIsNullOrEmptyTest() { var order = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, null); Assert.That(() => order.Validate(), Throws.TypeOf()); order = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []); Assert.That(() => order.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var orderId = Guid.NewGuid().ToString(); var workerId = Guid.NewGuid().ToString(); var buyerId = Guid.NewGuid().ToString(); var sum = 10; var isCancel = true; var dishes = CreateSubDataModel(); var order = CreateDataModel(orderId, workerId, buyerId, sum, isCancel, dishes); Assert.That(() => order.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(order.Id, Is.EqualTo(orderId)); Assert.That(order.WorkerId, Is.EqualTo(workerId)); Assert.That(order.BuyerId, Is.EqualTo(buyerId)); Assert.That(order.Sum, Is.EqualTo(sum)); Assert.That(order.IsCancel, Is.EqualTo(isCancel)); Assert.That(order.Dishes, Is.EquivalentTo(dishes)); }); } private static OrderDataModel CreateDataModel(string? id, string? workerId, string? buyerId, double sum, bool isCancel, List? dishes) => new(id, workerId, buyerId, sum, isCancel, dishes); private static List CreateSubDataModel() => [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1)]; }