using AndDietCokeContracts.Exceptions; using AndDietCokeContracts.Enums; using AndDietCokeContracts.DataModels; using NUnit.Framework; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static NUnit.Framework.Internal.OSPlatform; namespace AndDietCokeTests.DataModelsTests; [TestFixture] internal class DishDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var dish = CreateDataModel(null, "name", DishType.Drink, 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); dish = CreateDataModel(string.Empty, "name", DishType.Drink, 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var dish = CreateDataModel("id", "name", DishType.Drink, 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void DishNameIsEmptyTest() { var dish = CreateDataModel(Guid.NewGuid().ToString(), null, DishType.Drink, 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); dish = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, DishType.Drink, 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void DishTypeIsNoneTest() { var dish = CreateDataModel(Guid.NewGuid().ToString(), null, DishType.None, 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void PriceIsLessOrZeroTest() { var dish = CreateDataModel(Guid.NewGuid().ToString(), "name", DishType.Drink, 0, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); dish = CreateDataModel(Guid.NewGuid().ToString(), "name", DishType.Drink, -10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var dishId = Guid.NewGuid().ToString(); var dishName = "name"; var dishType = DishType.Drink; var dishPrice = 10; var dishIsDelete = false; var dish = CreateDataModel(dishId, dishName, dishType, dishPrice, dishIsDelete); Assert.That(() => dish.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(dish.Id, Is.EqualTo(dishId)); Assert.That(dish.DishName, Is.EqualTo(dishName)); Assert.That(dish.DishType, Is.EqualTo(dishType)); Assert.That(dish.Price, Is.EqualTo(dishPrice)); Assert.That(dish.IsDeleted, Is.EqualTo(dishIsDelete)); }); } private static DishDataModel CreateDataModel(string? id, string? dishName, DishType dishType, double price, bool isDeleted) => new(id, dishName, dishType, price, isDeleted); }