using TwoFromTheCaseContracts.DataModels; using TwoFromTheCaseContracts.Exceptions; namespace TwoFromTheCaseTests.DataModelsTests; [TestFixture] class WorkDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var work = CreateDataModel(null, Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => work.Validate(), Throws.TypeOf()); work = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => work.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var work = CreateDataModel("id", Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => work.Validate(), Throws.TypeOf()); } [Test] public void WorkerIdIsNullOrEmptyTest() { var work = CreateDataModel(Guid.NewGuid().ToString(), null, 10, false, CreateSubDataModel()); Assert.That(() => work.Validate(), Throws.TypeOf()); work = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 10, false, CreateSubDataModel()); Assert.That(() => work.Validate(), Throws.TypeOf()); } [Test] public void WorkerIdIsNotGuidTest() { var work = CreateDataModel(Guid.NewGuid().ToString(), "workerId", 10, false, CreateSubDataModel()); Assert.That(() => work.Validate(), Throws.TypeOf()); } [Test] public void PremisesIdIsNotGuidTest() { var work = CreateDataModel(Guid.NewGuid().ToString(), "premisesId", 10, false, CreateSubDataModel()); Assert.That(() => work.Validate(), Throws.TypeOf()); } [Test] public void PriceIsLessOrZeroTest() { var work = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0, false, CreateSubDataModel()); Assert.That(() => work.Validate(), Throws.TypeOf()); work = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10, false, CreateSubDataModel()); Assert.That(() => work.Validate(), Throws.TypeOf()); } [Test] public void WorkersIsNullOrEmptyTest() { var work = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, null); Assert.That(() => work.Validate(), Throws.TypeOf()); work = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []); Assert.That(() => work.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var workId = Guid.NewGuid().ToString(); var premisesId = Guid.NewGuid().ToString(); var price = 10; var isCancel = true; var workers = CreateSubDataModel(); var work = CreateDataModel(workId, premisesId, price, isCancel, workers); Assert.That(() => work.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(work.Id, Is.EqualTo(workId)); Assert.That(work.PremisesId, Is.EqualTo(premisesId)); Assert.That(work.Price, Is.EqualTo(price)); Assert.That(work.IsCancel, Is.EqualTo(isCancel)); Assert.That(work.Workers, Is.EquivalentTo(workers)); }); } private static WorkDataModel CreateDataModel(string? id, string? premisesId, double price, bool isCancel, List? workers) => new(id, premisesId, price, isCancel, workers); private static List CreateSubDataModel() => [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString())]; }