using BitterlyAndExclamationMarkContracts.Enums; using BitterlyAndExclamationMarkContracts.Exceptions; namespace BitterlyAndExclamationMarkTests.DataModelsTests; [TestFixture] internal class DishDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var dish = CreateDataModel(null, "name", DishType.Soups, Ingredients.Meat, 10, false); Assert.That(() => dish.Validate(),Throws.TypeOf()); dish = CreateDataModel(string.Empty, "name", DishType.Soups, Ingredients.Meat, 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var dish = CreateDataModel("id", "name", DishType.Soups, Ingredients.Meat, 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void DishNameIsEmptyTest() { var dish = CreateDataModel(Guid.NewGuid().ToString(), null, DishType.Soups, Ingredients.Meat, 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); dish = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, DishType.Soups, Ingredients.Meat, 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void DishTypeIsNoneTest() { var dish = CreateDataModel(Guid.NewGuid().ToString(), null, DishType.None, Ingredients.Meat, 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void IngredientsIsNoneTest() { var dish = CreateDataModel(Guid.NewGuid().ToString(), null, DishType.None, Ingredients.Meat, 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void PriceIsLessOrZeroTest() { var dish = CreateDataModel(Guid.NewGuid().ToString(), "name", DishType.Soups, Ingredients.Meat, 0, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); dish = CreateDataModel(Guid.NewGuid().ToString(), "name", DishType.Soups, Ingredients.Meat, - 10, false); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var dishId = Guid.NewGuid().ToString(); var dishName = "name"; var dishType = DishType.Soups; var ingredients = Ingredients.Meat; var dishPrice = 10; var dishIsDelete = false; var dish = CreateDataModel(dishId, dishName, dishType, ingredients, 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, Ingredients ingredients, double price, bool isDeleted) => new(id, dishName, dishType, ingredients, price, isDeleted); }