using BitterlyAndExclamationMarkContracts.DataModels; using BitterlyAndExclamationMarkContracts.Exceptions; namespace BitterlyAndExclamationMarkTests.DataModelsTests; [TestFixture] internal class DishHistoryDataModelTests { [Test] public void DishIdIsNullOrEmptyTest() { var dish = CreateDataModel(null, 10); Assert.That(() => dish.Validate(), Throws.TypeOf()); dish = CreateDataModel(string.Empty, 10); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void DishIdIsNotGuidTest() { var dish = CreateDataModel("id", 10); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void OldPriceIsLessOrZeroTest() { var dish = CreateDataModel(Guid.NewGuid().ToString(), 0); Assert.That(() => dish.Validate(), Throws.TypeOf()); dish = CreateDataModel(Guid.NewGuid().ToString(), -10); Assert.That(() => dish.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var dishId = Guid.NewGuid().ToString(); var oldPrice = 10; var dishHistory = CreateDataModel(dishId, oldPrice); Assert.That(() => dishHistory.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(dishHistory.DishId, Is.EqualTo(dishId)); Assert.That(dishHistory.OldPrice, Is.EqualTo(oldPrice)); Assert.That(dishHistory.ChangeDate, Is.LessThan(DateTime.UtcNow)); Assert.That(dishHistory.ChangeDate, Is.GreaterThan(DateTime.UtcNow.AddMinutes(-1))); }); } private static DishHistoryDataModel CreateDataModel(string? dishId, double oldPrice) => new(dishId, oldPrice); }