using SPiluSZharuContracts.DataModels; using SPiluSZharuContracts.Exceptions; namespace SPiluSZharuTests.DataModelsTests; [TestFixture] internal class RestaurantDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var restaurant = CreateDataModel(null, "name"); Assert.That(() => restaurant.Validate(), Throws.TypeOf()); restaurant = CreateDataModel(string.Empty, "name"); Assert.That(() => restaurant.Validate(), Throws.TypeOf()); } [Test] public void RestaurantIdIsNotGuidTest() { var restaurant = CreateDataModel("id", "name"); Assert.That(() => restaurant.Validate(), Throws.TypeOf()); } [Test] public void RestaurantNameIsNullOrEmptyTest() { var restaurant = CreateDataModel(Guid.NewGuid().ToString(), null); Assert.That(() => restaurant.Validate(), Throws.TypeOf()); restaurant = CreateDataModel(Guid.NewGuid().ToString(), string.Empty); Assert.That(() => restaurant.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var restaurantId = Guid.NewGuid().ToString(); var restaurantName = "name"; var prevRestaurantName = "prevRestaurantName"; var prevPrevRestaurantName = "prevPrevRestaurantName"; var restaurant = CreateDataModel(restaurantId, restaurantName, prevRestaurantName, prevPrevRestaurantName); Assert.That(() => restaurant.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(restaurant.Id, Is.EqualTo(restaurantId)); Assert.That(restaurant.RestaurantName, Is.EqualTo(restaurantName)); Assert.That(restaurant.PrevRestaurantName, Is.EqualTo(prevRestaurantName)); Assert.That(restaurant.PrevPrevRestaurantName, Is.EqualTo(prevPrevRestaurantName)); }); } private static RestaurantDataModel CreateDataModel(string? Id, string? restaurantName, string? prevRestaurantName = null, string? prevPrevRestaurantName = null) => new(Id, restaurantName, prevRestaurantName, prevPrevRestaurantName); }