This commit is contained in:
Glliza 2025-02-13 16:04:45 +04:00
parent 7e40591321
commit 72b36bf3f0
4 changed files with 30 additions and 17 deletions

View File

@ -28,6 +28,9 @@ namespace PuferFishContracts.DataModels
if (FIO.IsEmpty()) if (FIO.IsEmpty())
throw new ValidationException("Field FIO is empty"); 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()) if (PhoneNumber.IsEmpty())
throw new ValidationException("Field PhoneNumber is empty"); throw new ValidationException("Field PhoneNumber is empty");

View File

@ -8,6 +8,7 @@ using PuferFishContracts.Exceptions;
using System.Xml; using System.Xml;
using PuferFishContracts.Infrastructure; using PuferFishContracts.Infrastructure;
using static System.Runtime.InteropServices.JavaScript.JSType; using static System.Runtime.InteropServices.JavaScript.JSType;
using System.Text.RegularExpressions;
namespace PuferFishContracts.DataModels; namespace PuferFishContracts.DataModels;
@ -23,16 +24,25 @@ public class WorkerDataModel(string id, string fio, string postId, DateTime birt
{ {
if (Id.IsEmpty()) if (Id.IsEmpty())
throw new ValidationException("Field Id is empty"); throw new ValidationException("Field Id is empty");
if (!Id.IsGuid()) if (!Id.IsGuid())
throw new ValidationException("The value in the field Id is not a unique identifier"); throw new ValidationException("The value in the field Id is not a unique identifier");
if (FIO.IsEmpty()) if (FIO.IsEmpty())
throw new ValidationException("Field FIO is empty"); 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()) if (PostId.IsEmpty())
throw new ValidationException("Field PostId is empty"); throw new ValidationException("Field PostId is empty");
if (!PostId.IsGuid()) if (!PostId.IsGuid())
throw new ValidationException("The value in the field PostId is not a unique identifier"); throw new ValidationException("The value in the field PostId is not a unique identifier");
if (BirthDate.Date > DateTime.Now.AddYears(-16).Date) if (BirthDate.Date > DateTime.Now.AddYears(-16).Date)
throw new ValidationException($"Minors cannot be hired (BirthDate = { BirthDate.ToShortDateString() })"); throw new ValidationException($"Minors cannot be hired (BirthDate = { BirthDate.ToShortDateString() })");
if (EmploymentDate.Date < BirthDate.Date) if (EmploymentDate.Date < BirthDate.Date)
throw new ValidationException("The date of employment cannot be less than the date of birth"); 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 if ((EmploymentDate - BirthDate).TotalDays / 365 < 16) //EmploymentDate.Year - BirthDate.Year

View File

@ -14,17 +14,17 @@ namespace PuferFishTests.DataModelsTests
[Test] [Test]
public void IdIsNullOrEmptyTest() public void IdIsNullOrEmptyTest()
{ {
var buyer = CreateDataModel(null, "fio", "number", 10); var buyer = CreateDataModel(null, "Фамилия Имя Отчество", "number", 10);
Assert.That(() => buyer.Validate(), Assert.That(() => buyer.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
buyer = CreateDataModel(string.Empty, "fio", "number", 10); buyer = CreateDataModel(string.Empty, "Фамилия Имя Отчество", "number", 10);
Assert.That(() => buyer.Validate(), Assert.That(() => buyer.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
} }
[Test] [Test]
public void IdIsNotGuidTest() public void IdIsNotGuidTest()
{ {
var buyer = CreateDataModel("id", "fio", "number", 10); var buyer = CreateDataModel("id", "Фамилия Имя Отчество", "number", 10);
Assert.That(() => buyer.Validate(), Assert.That(() => buyer.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
} }
@ -43,11 +43,11 @@ namespace PuferFishTests.DataModelsTests
[Test] [Test]
public void PhoneNumberIsNullOrEmptyTest() public void PhoneNumberIsNullOrEmptyTest()
{ {
var buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", null, var buyer = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество", null,
10); 10);
Assert.That(() => buyer.Validate(), Assert.That(() => buyer.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", buyer = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество",
string.Empty, 10); string.Empty, 10);
Assert.That(() => buyer.Validate(), Assert.That(() => buyer.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
@ -55,7 +55,7 @@ namespace PuferFishTests.DataModelsTests
[Test] [Test]
public void PhoneNumberIsIncorrectTest() public void PhoneNumberIsIncorrectTest()
{ {
var buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", "777", var buyer = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество", "777",
10); 10);
Assert.That(() => buyer.Validate(), Assert.That(() => buyer.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
@ -64,7 +64,7 @@ namespace PuferFishTests.DataModelsTests
public void AllFieldsIsCorrectTest() public void AllFieldsIsCorrectTest()
{ {
var buyerId = Guid.NewGuid().ToString(); var buyerId = Guid.NewGuid().ToString();
var fio = "Fio"; var fio = "Фамилия Имя Отчество";
var phoneNumber = "+7-777-777-77-77"; var phoneNumber = "+7-777-777-77-77";
var points = 11; var points = 11;
var buyer = CreateDataModel(buyerId, fio, phoneNumber, points); var buyer = CreateDataModel(buyerId, fio, phoneNumber, points);

View File

@ -15,11 +15,11 @@ internal class WorkerDataModelTests
[Test] [Test]
public void IdIsNullOrEmptyTest() 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); DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Assert.That(() => worker.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
worker = CreateDataModel(string.Empty, "fio", worker = CreateDataModel(string.Empty, "Фамилия Имя Отчество",
Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Assert.That(() => worker.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
@ -27,7 +27,7 @@ internal class WorkerDataModelTests
[Test] [Test]
public void IdIsNotGuidTest() 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); DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Assert.That(() => worker.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
@ -47,11 +47,11 @@ internal class WorkerDataModelTests
[Test] [Test]
public void PostIdIsNullOrEmptyTest() 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); DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Assert.That(() => worker.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", worker = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество",
string.Empty, DateTime.Now.AddYears(-18), DateTime.Now, false); string.Empty, DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Assert.That(() => worker.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
@ -59,7 +59,7 @@ internal class WorkerDataModelTests
[Test] [Test]
public void PostIdIsNotGuidTest() public void PostIdIsNotGuidTest()
{ {
var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", var worker = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество",
"postId", DateTime.Now.AddYears(-18), DateTime.Now, false); "postId", DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Assert.That(() => worker.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
@ -67,7 +67,7 @@ internal class WorkerDataModelTests
[Test] [Test]
public void BirthDateIsNotCorrectTest() 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, Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(1), DateTime.Now,
false); false);
Assert.That(() => worker.Validate(), Assert.That(() => worker.Validate(),
@ -76,12 +76,12 @@ internal class WorkerDataModelTests
[Test] [Test]
public void BirthDateAndEmploymentDateIsNotCorrectTest() 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(- Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-
18).AddDays(-1), false); 18).AddDays(-1), false);
Assert.That(() => worker.Validate(), Assert.That(() => worker.Validate(),
Throws.TypeOf<ValidationException>()); Throws.TypeOf<ValidationException>());
worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", worker = CreateDataModel(Guid.NewGuid().ToString(), "Фамилия Имя Отчество",
Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now.AddYears(- Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-
16), false); 16), false);
Assert.That(() => worker.Validate(), Assert.That(() => worker.Validate(),
@ -91,7 +91,7 @@ internal class WorkerDataModelTests
public void AllFieldsIsCorrectTest() public void AllFieldsIsCorrectTest()
{ {
var workerId = Guid.NewGuid().ToString(); var workerId = Guid.NewGuid().ToString();
var fio = "fio"; var fio = "Фамилия Имя Отчество";
var postId = Guid.NewGuid().ToString(); var postId = Guid.NewGuid().ToString();
var birthDate = DateTime.Now.AddYears(-16).AddDays(-1); var birthDate = DateTime.Now.AddYears(-16).AddDays(-1);
var employmentDate = DateTime.Now; var employmentDate = DateTime.Now;