diff --git a/PuferFishContracts/PuferFishContracts/DataModels/BuyerDataModel.cs b/PuferFishContracts/PuferFishContracts/DataModels/BuyerDataModel.cs index 3b61284..6f328fa 100644 --- a/PuferFishContracts/PuferFishContracts/DataModels/BuyerDataModel.cs +++ b/PuferFishContracts/PuferFishContracts/DataModels/BuyerDataModel.cs @@ -28,6 +28,9 @@ namespace PuferFishContracts.DataModels if (FIO.IsEmpty()) throw new ValidationException("Field FIO is empty"); + if (!Regex.IsMatch(FIO, @"\b[А-ЯЁ][а-яё]*\b \b[А-ЯЁ][а-яё]*\b \b[А-ЯЁ][а-яё]*\b")) + throw new ValidationException("Field FIO is not a FIO"); + if (PhoneNumber.IsEmpty()) throw new ValidationException("Field PhoneNumber is empty"); diff --git a/PuferFishContracts/PuferFishContracts/DataModels/WorkerDataModel.cs b/PuferFishContracts/PuferFishContracts/DataModels/WorkerDataModel.cs index 639515f..e1ea449 100644 --- a/PuferFishContracts/PuferFishContracts/DataModels/WorkerDataModel.cs +++ b/PuferFishContracts/PuferFishContracts/DataModels/WorkerDataModel.cs @@ -8,6 +8,7 @@ using PuferFishContracts.Exceptions; using System.Xml; using PuferFishContracts.Infrastructure; using static System.Runtime.InteropServices.JavaScript.JSType; +using System.Text.RegularExpressions; namespace PuferFishContracts.DataModels; @@ -23,16 +24,25 @@ public class WorkerDataModel(string id, string fio, string postId, DateTime birt { if (Id.IsEmpty()) throw new ValidationException("Field Id is empty"); + if (!Id.IsGuid()) throw new ValidationException("The value in the field Id is not a unique identifier"); + if (FIO.IsEmpty()) throw new ValidationException("Field FIO is empty"); + + if (!Regex.IsMatch(FIO, @"\b[А-ЯЁ][а-яё]*\b \b[А-ЯЁ][а-яё]*\b \b[А-ЯЁ][а-яё]*\b")) + throw new ValidationException("Field FIO is not a FIO"); + if (PostId.IsEmpty()) throw new ValidationException("Field PostId is empty"); + if (!PostId.IsGuid()) throw new ValidationException("The value in the field PostId is not a unique identifier"); + if (BirthDate.Date > DateTime.Now.AddYears(-16).Date) throw new ValidationException($"Minors cannot be hired (BirthDate = { BirthDate.ToShortDateString() })"); + if (EmploymentDate.Date < BirthDate.Date) throw new ValidationException("The date of employment cannot be less than the date of birth"); if ((EmploymentDate - BirthDate).TotalDays / 365 < 16) //EmploymentDate.Year - BirthDate.Year diff --git a/PuferFishContracts/PuferFishTests/DataModelsTests/BuyerDataModelTests.cs b/PuferFishContracts/PuferFishTests/DataModelsTests/BuyerDataModelTests.cs index ab09bba..fedfb77 100644 --- a/PuferFishContracts/PuferFishTests/DataModelsTests/BuyerDataModelTests.cs +++ b/PuferFishContracts/PuferFishTests/DataModelsTests/BuyerDataModelTests.cs @@ -14,17 +14,17 @@ namespace PuferFishTests.DataModelsTests [Test] public void IdIsNullOrEmptyTest() { - var buyer = CreateDataModel(null, "fio", "number", 10); + var buyer = CreateDataModel(null, "Фамилия Имя Отчество", "number", 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); - buyer = CreateDataModel(string.Empty, "fio", "number", 10); + buyer = CreateDataModel(string.Empty, "Фамилия Имя Отчество", "number", 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { - var buyer = CreateDataModel("id", "fio", "number", 10); + var buyer = CreateDataModel("id", "Фамилия Имя Отчество", "number", 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); } @@ -43,11 +43,11 @@ namespace PuferFishTests.DataModelsTests [Test] public void PhoneNumberIsNullOrEmptyTest() { - var buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", null, + var buyer = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество", null, 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); - buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", + buyer = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество", string.Empty, 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); @@ -55,7 +55,7 @@ namespace PuferFishTests.DataModelsTests [Test] public void PhoneNumberIsIncorrectTest() { - var buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", "777", + var buyer = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество", "777", 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); @@ -64,7 +64,7 @@ namespace PuferFishTests.DataModelsTests public void AllFieldsIsCorrectTest() { var buyerId = Guid.NewGuid().ToString(); - var fio = "Fio"; + var fio = "Фамилия Имя Отчество"; var phoneNumber = "+7-777-777-77-77"; var points = 11; var buyer = CreateDataModel(buyerId, fio, phoneNumber, points); diff --git a/PuferFishContracts/PuferFishTests/DataModelsTests/WorkerDataModelTests.cs b/PuferFishContracts/PuferFishTests/DataModelsTests/WorkerDataModelTests.cs index 3524e04..1562aed 100644 --- a/PuferFishContracts/PuferFishTests/DataModelsTests/WorkerDataModelTests.cs +++ b/PuferFishContracts/PuferFishTests/DataModelsTests/WorkerDataModelTests.cs @@ -15,11 +15,11 @@ internal class WorkerDataModelTests [Test] public void IdIsNullOrEmptyTest() { - var worker = CreateDataModel(null, "fio", Guid.NewGuid().ToString(), + var worker = CreateDataModel(null, "Фамилия Имя Отчество", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); - worker = CreateDataModel(string.Empty, "fio", + worker = CreateDataModel(string.Empty, "Фамилия Имя Отчество", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); @@ -27,7 +27,7 @@ internal class WorkerDataModelTests [Test] public void IdIsNotGuidTest() { - var worker = CreateDataModel("id", "fio", Guid.NewGuid().ToString(), + var worker = CreateDataModel("id", "Фамилия Имя Отчество", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); @@ -47,11 +47,11 @@ internal class WorkerDataModelTests [Test] public void PostIdIsNullOrEmptyTest() { - var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", null, + var worker = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество", null, DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); - worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", + worker = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество", string.Empty, DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); @@ -59,7 +59,7 @@ internal class WorkerDataModelTests [Test] public void PostIdIsNotGuidTest() { - var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", + var worker = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество", "postId", DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); @@ -67,7 +67,7 @@ internal class WorkerDataModelTests [Test] public void BirthDateIsNotCorrectTest() { - var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", + var worker = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(1), DateTime.Now, false); Assert.That(() => worker.Validate(), @@ -76,12 +76,12 @@ internal class WorkerDataModelTests [Test] public void BirthDateAndEmploymentDateIsNotCorrectTest() { - var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", + var worker = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество", 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", + worker = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now.AddYears(- 16), false); Assert.That(() => worker.Validate(), @@ -91,7 +91,7 @@ internal class WorkerDataModelTests public void AllFieldsIsCorrectTest() { var workerId = Guid.NewGuid().ToString(); - var fio = "fio"; + var fio = "Фамилия Имя Отчество"; var postId = Guid.NewGuid().ToString(); var birthDate = DateTime.Now.AddYears(-16).AddDays(-1); var employmentDate = DateTime.Now;