using TwoFromTheCaseContracts.DataModels; using TwoFromTheCaseContracts.Exceptions; namespace TwoFromTheCaseTests.DataModelsTests; [TestFixture] class WorkHistoryDataModelTests { [Test] public void WorkIdIsNullOrEmptyTest() { var work = CreateDataModel(null, 10); Assert.That(() => work.Validate(), Throws.TypeOf()); work = CreateDataModel(string.Empty, 10); Assert.That(() => work.Validate(), Throws.TypeOf()); } [Test] public void WorkIdIsNotGuidTest() { var work = CreateDataModel("id", 10); Assert.That(() => work.Validate(), Throws.TypeOf()); } [Test] public void OldPriceIsLessOrZeroTest() { var work = CreateDataModel(Guid.NewGuid().ToString(), 0); Assert.That(() => work.Validate(), Throws.TypeOf()); work = CreateDataModel(Guid.NewGuid().ToString(), -10); Assert.That(() => work.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var workId = Guid.NewGuid().ToString(); var oldPrice = 10; var workHistory = CreateDataModel(workId, oldPrice); Assert.That(() => workHistory.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(workHistory.WorkId, Is.EqualTo(workId)); Assert.That(workHistory.OldPrice, Is.EqualTo(oldPrice)); Assert.That(workHistory.ChangeDate, Is.LessThan(DateTime.UtcNow)); Assert.That(workHistory.ChangeDate, Is.GreaterThan(DateTime.UtcNow.AddMinutes(-1))); }); } private static WorkHistoryDataModel CreateDataModel(string? workId, double oldPrice) => new(workId, oldPrice); }