diff --git a/TwoFromTheCaseProject/TwoFromTheCaseContracts/DataModels/PremisesDataModel.cs b/TwoFromTheCaseProject/TwoFromTheCaseContracts/DataModels/PremisesDataModel.cs index 20406bd..8c6c777 100644 --- a/TwoFromTheCaseProject/TwoFromTheCaseContracts/DataModels/PremisesDataModel.cs +++ b/TwoFromTheCaseProject/TwoFromTheCaseContracts/DataModels/PremisesDataModel.cs @@ -5,12 +5,10 @@ using TwoFromTheCaseContracts.Infrastructure; namespace TwoFromTheCaseContracts.DataModels; -public class PremisesDataModel(string id, string premisesName, PremisesType premisesType, string customerId, bool isDeleted) : IValidation +public class PremisesDataModel(string id, PremisesType premisesType, string customerId, bool isDeleted) : IValidation { public string Id { get; private set; } = id; - public string PremisesName { get; private set; } = premisesName; - public PremisesType PremisesType { get; private set; } = premisesType; public string CustomerId { get; private set; } = customerId; @@ -25,9 +23,6 @@ public class PremisesDataModel(string id, string premisesName, PremisesType prem if (!Id.IsGuid()) throw new ValidationException("The value in the field Id is not a unique identifier"); - if (PremisesName.IsEmpty()) - throw new ValidationException("Field PremisesName is empty"); - if (PremisesType == PremisesType.None) throw new ValidationException("Field PremisesType is empty"); diff --git a/TwoFromTheCaseProject/TwoFromTheCaseContracts/DataModels/WorkDataModel.cs b/TwoFromTheCaseProject/TwoFromTheCaseContracts/DataModels/WorkDataModel.cs index 710814c..1dfe1cf 100644 --- a/TwoFromTheCaseProject/TwoFromTheCaseContracts/DataModels/WorkDataModel.cs +++ b/TwoFromTheCaseProject/TwoFromTheCaseContracts/DataModels/WorkDataModel.cs @@ -12,7 +12,7 @@ public class WorkDataModel(string id, string premisesId, double price, bool isCa public double Price { get; private set; } = price; - public DateTime SaleDate { get; private set; } = DateTime.UtcNow; + public DateTime StartDate { get; private set; } = DateTime.UtcNow; public bool IsCancel { get; private set; } = isCancel; @@ -36,6 +36,6 @@ public class WorkDataModel(string id, string premisesId, double price, bool isCa throw new ValidationException("Field Price is less than or equal to 0"); if ((Workers?.Count ?? 0) == 0) - throw new ValidationException("The sale must include workers"); + throw new ValidationException("The work must include workers"); } } diff --git a/TwoFromTheCaseProject/TwoFromTheCaseProject.sln b/TwoFromTheCaseProject/TwoFromTheCaseProject.sln index 7cff1bf..f9a06af 100644 --- a/TwoFromTheCaseProject/TwoFromTheCaseProject.sln +++ b/TwoFromTheCaseProject/TwoFromTheCaseProject.sln @@ -1,10 +1,12 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 -VisualStudioVersion = 17.13.35806.99 d17.13 +VisualStudioVersion = 17.13.35806.99 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TwoFromTheCaseContracts", "TwoFromTheCaseContracts\TwoFromTheCaseContracts.csproj", "{4F6F308C-3ADC-4A4F-BCD2-92EA750312FF}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TwoFromTheCaseTests", "TwoFromTheCaseTests\TwoFromTheCaseTests.csproj", "{8467D640-0190-4BFB-82F0-004D2DF18471}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,6 +17,10 @@ Global {4F6F308C-3ADC-4A4F-BCD2-92EA750312FF}.Debug|Any CPU.Build.0 = Debug|Any CPU {4F6F308C-3ADC-4A4F-BCD2-92EA750312FF}.Release|Any CPU.ActiveCfg = Release|Any CPU {4F6F308C-3ADC-4A4F-BCD2-92EA750312FF}.Release|Any CPU.Build.0 = Release|Any CPU + {8467D640-0190-4BFB-82F0-004D2DF18471}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8467D640-0190-4BFB-82F0-004D2DF18471}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8467D640-0190-4BFB-82F0-004D2DF18471}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8467D640-0190-4BFB-82F0-004D2DF18471}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/CustomerDataModelTests.cs b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/CustomerDataModelTests.cs new file mode 100644 index 0000000..2b8d493 --- /dev/null +++ b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/CustomerDataModelTests.cs @@ -0,0 +1,68 @@ +using TwoFromTheCaseContracts.DataModels; +using TwoFromTheCaseContracts.Exceptions; + +namespace TwoFromTheCaseTests.DataModelsTests; + +[TestFixture] +class CustomerDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + var customer = CreateDataModel(null, "name", "number"); + Assert.That(() => customer.Validate(), Throws.TypeOf()); + customer = CreateDataModel(string.Empty, "name", "number"); + Assert.That(() => customer.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var customer = CreateDataModel("id", "name", "number"); + Assert.That(() => customer.Validate(), Throws.TypeOf()); + } + + [Test] + public void FIOIsNullOrEmptyTest() + { + var customer = CreateDataModel(Guid.NewGuid().ToString(), null, "number"); + Assert.That(() => customer.Validate(), Throws.TypeOf()); + customer = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, "number"); + Assert.That(() => customer.Validate(), Throws.TypeOf()); + } + + [Test] + public void PhoneNumberIsNullOrEmptyTest() + { + var customer = CreateDataModel(Guid.NewGuid().ToString(), "name", null); + Assert.That(() => customer.Validate(), Throws.TypeOf()); + customer = CreateDataModel(Guid.NewGuid().ToString(), "name", string.Empty); + Assert.That(() => customer.Validate(), Throws.TypeOf()); + } + + [Test] + public void PhoneNumberIsIncorrectTest() + { + var customer = CreateDataModel(Guid.NewGuid().ToString(), "name", "777"); + Assert.That(() => customer.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var customerId = Guid.NewGuid().ToString(); + var name = "Name"; + var phoneNumber = "+77777777777"; + var customer = CreateDataModel(customerId, name, phoneNumber); + Assert.That(() => customer.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(customer.Id, Is.EqualTo(customerId)); + Assert.That(customer.Name, Is.EqualTo(name)); + Assert.That(customer.PhoneNumber, Is.EqualTo(phoneNumber)); + }); + } + + private static CustomerDataModel CreateDataModel(string? id, string? name, string? phoneNumber) => + new(id, name, phoneNumber); +} diff --git a/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/PostDataModelTests.cs b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/PostDataModelTests.cs new file mode 100644 index 0000000..de71867 --- /dev/null +++ b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/PostDataModelTests.cs @@ -0,0 +1,93 @@ +using TwoFromTheCaseContracts.DataModels; +using TwoFromTheCaseContracts.Enums; +using TwoFromTheCaseContracts.Exceptions; + +namespace TwoFromTheCaseTests.DataModelsTests; + +[TestFixture] +class PostDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + var post = CreateDataModel(null, Guid.NewGuid().ToString(), "name", PostType.Plasterer, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + post = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), "name", PostType.Plasterer, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var post = CreateDataModel("id", Guid.NewGuid().ToString(), "name", PostType.Plasterer, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + } + + [Test] + public void PostIdIsNullEmptyTest() + { + var post = CreateDataModel(Guid.NewGuid().ToString(), null, "name", PostType.Plasterer, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + post = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, "name", PostType.Plasterer, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + } + + [Test] + public void PostIdIsNotGuidTest() + { + var post = CreateDataModel(Guid.NewGuid().ToString(), "postId", "name", PostType.Plasterer, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + } + + [Test] + public void PostNameIsEmptyTest() + { + var manufacturer = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, PostType.Plasterer, 10, true, DateTime.UtcNow); + Assert.That(() => manufacturer.Validate(), Throws.TypeOf()); + manufacturer = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), string.Empty, PostType.Plasterer, 10, true, DateTime.UtcNow); + Assert.That(() => manufacturer.Validate(), Throws.TypeOf()); + } + + [Test] + public void PostTypeIsNoneTest() + { + var post = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "name", PostType.None, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + } + + [Test] + public void SalaryIsLessOrZeroTest() + { + var post = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "name", PostType.Plasterer, 0, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + post = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "name", PostType.Plasterer, -10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var postId = Guid.NewGuid().ToString(); + var postPostId = Guid.NewGuid().ToString(); + var postName = "name"; + var postType = PostType.Plasterer; + var salary = 10; + var isActual = false; + var changeDate = DateTime.UtcNow.AddDays(-1); + var post = CreateDataModel(postId, postPostId, postName, postType, salary, isActual, changeDate); + Assert.That(() => post.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(post.Id, Is.EqualTo(postId)); + Assert.That(post.PostId, Is.EqualTo(postPostId)); + Assert.That(post.PostName, Is.EqualTo(postName)); + Assert.That(post.PostType, Is.EqualTo(postType)); + Assert.That(post.Salary, Is.EqualTo(salary)); + Assert.That(post.IsActual, Is.EqualTo(isActual)); + Assert.That(post.ChangeDate, Is.EqualTo(changeDate)); + }); + } + + private static PostDataModel CreateDataModel(string? id, string? postId, string? postName, PostType postType, double salary, bool isActual, DateTime changeDate) => + new(id, postId, postName, postType, salary, isActual, changeDate); +} diff --git a/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/PremisesDataModelTests.cs b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/PremisesDataModelTests.cs new file mode 100644 index 0000000..6aca81f --- /dev/null +++ b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/PremisesDataModelTests.cs @@ -0,0 +1,69 @@ +using TwoFromTheCaseContracts.DataModels; +using TwoFromTheCaseContracts.Enums; +using TwoFromTheCaseContracts.Exceptions; + +namespace TwoFromTheCaseTests.DataModelsTests; + +[TestFixture] +class PremisesDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + var premises = CreateDataModel(null, PremisesType.Residential, Guid.NewGuid().ToString(), false); + Assert.That(() => premises.Validate(), Throws.TypeOf()); + premises = CreateDataModel(string.Empty, PremisesType.Residential, Guid.NewGuid().ToString(), false); + Assert.That(() => premises.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var premises = CreateDataModel("id", PremisesType.Residential, Guid.NewGuid().ToString(), false); + Assert.That(() => premises.Validate(), Throws.TypeOf()); + } + + [Test] + public void PremisesTypeIsNoneTest() + { + var premises = CreateDataModel(Guid.NewGuid().ToString(), PremisesType.None, Guid.NewGuid().ToString(), false); + Assert.That(() => premises.Validate(), Throws.TypeOf()); + } + + [Test] + public void CustomerIdIsNullOrEmptyTest() + { + var premises = CreateDataModel(Guid.NewGuid().ToString(), PremisesType.Residential, null, false); + Assert.That(() => premises.Validate(), Throws.TypeOf()); + premises = CreateDataModel(Guid.NewGuid().ToString(), PremisesType.Residential, string.Empty, false); + Assert.That(() => premises.Validate(), Throws.TypeOf()); + } + + [Test] + public void CustomerIdIsNotGuidTest() + { + var premises = CreateDataModel(Guid.NewGuid().ToString(), PremisesType.Residential, "customerId", false); + Assert.That(() => premises.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var premisesId = Guid.NewGuid().ToString(); + var premisesType = PremisesType.Residential; + var premisesCustomerId = Guid.NewGuid().ToString(); + var premisesIsDelete = false; + var premises = CreateDataModel(premisesId, premisesType, premisesCustomerId, premisesIsDelete); + Assert.That(() => premises.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(premises.Id, Is.EqualTo(premisesId)); + Assert.That(premises.PremisesType, Is.EqualTo(premisesType)); + Assert.That(premises.CustomerId, Is.EqualTo(premisesCustomerId)); + Assert.That(premises.IsDeleted, Is.EqualTo(premisesIsDelete)); + }); + } + + private static PremisesDataModel CreateDataModel(string? id, PremisesType premisesType, string? customerId, bool isDeleted) => + new(id, premisesType, customerId, isDeleted); +} diff --git a/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/SalaryDataModelTests.cs b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/SalaryDataModelTests.cs new file mode 100644 index 0000000..02b53eb --- /dev/null +++ b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/SalaryDataModelTests.cs @@ -0,0 +1,52 @@ +using TwoFromTheCaseContracts.DataModels; +using TwoFromTheCaseContracts.Exceptions; + +namespace TwoFromTheCaseTests.DataModelsTests; + +[TestFixture] +class SalaryDataModelTests +{ + [Test] + public void WorkerIdIsEmptyTest() + { + var salary = CreateDataModel(null, DateTime.Now, 10); + Assert.That(() => salary.Validate(), Throws.TypeOf()); + salary = CreateDataModel(string.Empty, DateTime.Now, 10); + Assert.That(() => salary.Validate(), Throws.TypeOf()); + } + + [Test] + public void WorkerIdIsNotGuidTest() + { + var salary = CreateDataModel("workerId", DateTime.Now, 10); + Assert.That(() => salary.Validate(), Throws.TypeOf()); + } + + [Test] + public void PriceIsLessOrZeroTest() + { + var salary = CreateDataModel(Guid.NewGuid().ToString(), DateTime.Now, 0); + Assert.That(() => salary.Validate(), Throws.TypeOf()); + salary = CreateDataModel(Guid.NewGuid().ToString(), DateTime.Now, -10); + Assert.That(() => salary.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var workerId = Guid.NewGuid().ToString(); + var salaryDate = DateTime.Now.AddDays(-3).AddMinutes(-5); + var workerSalary = 10; + var salary = CreateDataModel(workerId, salaryDate, workerSalary); + Assert.That(() => salary.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(salary.WorkerId, Is.EqualTo(workerId)); + Assert.That(salary.SalaryDate, Is.EqualTo(salaryDate)); + Assert.That(salary.Salary, Is.EqualTo(workerSalary)); + }); + } + + private static SalaryDataModel CreateDataModel(string? workerId, DateTime salaryDate, double workerSalary) => + new(workerId, salaryDate, workerSalary); +} diff --git a/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/WorkDataModelTests.cs b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/WorkDataModelTests.cs new file mode 100644 index 0000000..d8d02a9 --- /dev/null +++ b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/WorkDataModelTests.cs @@ -0,0 +1,90 @@ +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())]; +} diff --git a/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/WorkHistoryDataModelTests.cs b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/WorkHistoryDataModelTests.cs new file mode 100644 index 0000000..a155850 --- /dev/null +++ b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/WorkHistoryDataModelTests.cs @@ -0,0 +1,52 @@ +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); +} diff --git a/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/WorkerDataModelTests.cs b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/WorkerDataModelTests.cs new file mode 100644 index 0000000..6870629 --- /dev/null +++ b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/WorkerDataModelTests.cs @@ -0,0 +1,90 @@ +using TwoFromTheCaseContracts.DataModels; +using TwoFromTheCaseContracts.Exceptions; + +namespace TwoFromTheCaseTests.DataModelsTests; + +[TestFixture] +class WorkerDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + var worker = CreateDataModel(null, "fio", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + worker = CreateDataModel(string.Empty, "fio", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var worker = CreateDataModel("id", "fio", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void FIOIsNullOrEmptyTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + worker = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void PostIdIsNullOrEmptyTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", null, DateTime.Now.AddYears(-18), DateTime.Now, false); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", string.Empty, DateTime.Now.AddYears(-18), DateTime.Now, false); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void PostIdIsNotGuidTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", "postId", DateTime.Now.AddYears(-18), DateTime.Now, false); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void BirthDateIsNotCorrectTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(1), DateTime.Now, false); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void BirthDateAndEmploymentDateIsNotCorrectTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-18).AddDays(-1), false); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-16), false); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var workerId = Guid.NewGuid().ToString(); + var fio = "fio"; + var postId = Guid.NewGuid().ToString(); + var birthDate = DateTime.Now.AddYears(-16).AddDays(-1); + var employmentDate = DateTime.Now; + var isDelete = false; + var worker = CreateDataModel(workerId, fio, postId, birthDate, employmentDate, isDelete); + Assert.That(() => worker.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(worker.Id, Is.EqualTo(workerId)); + Assert.That(worker.FIO, Is.EqualTo(fio)); + Assert.That(worker.PostId, Is.EqualTo(postId)); + Assert.That(worker.BirthDate, Is.EqualTo(birthDate)); + Assert.That(worker.EmploymentDate, Is.EqualTo(employmentDate)); + Assert.That(worker.IsDeleted, Is.EqualTo(isDelete)); + }); + } + + private static WorkerDataModel CreateDataModel(string? id, string? fio, string? postId, DateTime birthDate, DateTime employmentDate, bool isDeleted) => + new(id, fio, postId, birthDate, employmentDate, isDeleted); +} diff --git a/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/WorkerWorkDataModelTests.cs b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/WorkerWorkDataModelTests.cs new file mode 100644 index 0000000..5fc2dc4 --- /dev/null +++ b/TwoFromTheCaseProject/TwoFromTheCaseTests/DataModelsTests/WorkerWorkDataModelTests.cs @@ -0,0 +1,57 @@ +using TwoFromTheCaseContracts.DataModels; +using TwoFromTheCaseContracts.Exceptions; + +namespace TwoFromTheCaseTests.DataModelsTests; + +[TestFixture] +class WorkerWorkDataModelTests +{ + [Test] + public void WorkerIdIsNullOrEmptyTest() + { + var workerWork = CreateDataModel(null, Guid.NewGuid().ToString()); + Assert.That(() => workerWork.Validate(), Throws.TypeOf()); + workerWork = CreateDataModel(string.Empty, Guid.NewGuid().ToString()); + Assert.That(() => workerWork.Validate(), Throws.TypeOf()); + } + + [Test] + public void WorkerIdIsNotGuidTest() + { + var workerWork = CreateDataModel("workerId", Guid.NewGuid().ToString()); + Assert.That(() => workerWork.Validate(), Throws.TypeOf()); + } + + [Test] + public void WorkIdIsNullOrEmptyTest() + { + var workerWork = CreateDataModel(Guid.NewGuid().ToString(), null); + Assert.That(() => workerWork.Validate(), Throws.TypeOf()); + workerWork = CreateDataModel(string.Empty, Guid.NewGuid().ToString()); + Assert.That(() => workerWork.Validate(), Throws.TypeOf()); + } + + [Test] + public void WorkIdIsNotGuidTest() + { + var workerWork = CreateDataModel(Guid.NewGuid().ToString(), "workId"); + Assert.That(() => workerWork.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var workerId = Guid.NewGuid().ToString(); + var workId = Guid.NewGuid().ToString(); + var workerWork = CreateDataModel(workerId, workId); + Assert.That(() => workerWork.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(workerWork.WorkerId, Is.EqualTo(workerId)); + Assert.That(workerWork.WorkId, Is.EqualTo(workId)); + }); + } + + private static WorkerWorkDataModel CreateDataModel(string? workerId, string? workId) => + new(workerId, workId); +} diff --git a/TwoFromTheCaseProject/TwoFromTheCaseTests/TwoFromTheCaseTests.csproj b/TwoFromTheCaseProject/TwoFromTheCaseTests/TwoFromTheCaseTests.csproj new file mode 100644 index 0000000..d025433 --- /dev/null +++ b/TwoFromTheCaseProject/TwoFromTheCaseTests/TwoFromTheCaseTests.csproj @@ -0,0 +1,27 @@ + + + + net9.0 + latest + enable + enable + false + + + + + + + + + + + + + + + + + + +