Готовая ЛР №1

This commit is contained in:
Павел Ладягин 2025-02-13 12:51:51 +04:00
parent fa7a9e990e
commit ffb5ac4e3c
11 changed files with 265 additions and 142 deletions

View File

@ -1,5 +1,4 @@
 using PimpMyRideContracts.Enums;
using PimpMyRideContracts.Enums;
using PimpMyRideContracts.Exceptions; using PimpMyRideContracts.Exceptions;
using PimpMyRideContracts.Extensions; using PimpMyRideContracts.Extensions;
using PimpMyRideContracts.Infrastructure; using PimpMyRideContracts.Infrastructure;

View File

@ -0,0 +1,35 @@
using PimpMyRideContracts.Enums;
using PimpMyRideContracts.Extensions;
using PimpMyRideContracts.Infrastructure;
using PimpMyRideContracts.Exceptions;
namespace PimpMyRideContracts.DataModels;
public class PostDataModel(string postId, string postName, PostType postType, double salary, bool isActual, DateTime changeDate) : IValidation
{
public string PostId { get; private set; } = postId;
public string PostName { get; private set; } = postName;
public PostType PostType { get; private set; } = postType;
public double Salary { get; private set; } = salary;
public bool IsActual { get; private set; } = isActual;
public DateTime ChangeDate { get; private set; } = changeDate;
public void Validate()
{
if (PostId.IsEmpty())
throw new ValidationException("Field Id is empty");
if (!PostId.IsGuid())
throw new ValidationException("The value in the field Id is not a unique identifier");
if (PostName.IsEmpty())
throw new ValidationException("Field PostName is empty");
if (PostType == PostType.None)
throw new ValidationException("Field PostType is empty");
if (Salary <= 0)
throw new ValidationException("Field Salary is empty");
}
}

View File

@ -0,0 +1,26 @@
using PimpMyRideContracts.Exceptions;
using PimpMyRideContracts.Extensions;
using PimpMyRideContracts.Infrastructure;
namespace PimpMyRideContracts.DataModels;
public class SalaryDataModell(string workerId, DateTime salaryDate, double workerSalary) : IValidation
{
public string WorkerId { get; private set; } = workerId;
public DateTime SalaryDate { get; private set; } = salaryDate;
public double Salary { get; private set; } = workerSalary;
public void Validate()
{
if (WorkerId.IsEmpty())
throw new ValidationException("Field WorkerId is empty");
if (!WorkerId.IsGuid())
throw new ValidationException("The value in the field WorkerId is not a unique identifier");
if (Salary <= 0)
throw new ValidationException("Field Salary is less than or equal to 0");
}
}

View File

@ -4,12 +4,12 @@ using PimpMyRideContracts.Infrastructure;
namespace PimpMyRideContracts.DataModels; namespace PimpMyRideContracts.DataModels;
public class ServiceDataModel(string serviceId, string workerId, string carId, List<ServiceOperationDataModel> operations) : IValidation public class ServiceDataModel(string serviceId, string workerId, string carId, string operationId) : IValidation
{ {
public string ServiceId { get; private set; } = serviceId; public string ServiceId { get; private set; } = serviceId;
public string WorkerId { get; private set; } = workerId; public string WorkerId { get; private set; } = workerId;
public string CarId { get; private set; } = carId; public string CarId { get; private set; } = carId;
public List<ServiceOperationDataModel> Operations { get; private set; } = operations; public string OperationId { get; private set; } = operationId;
public void Validate() public void Validate()
{ {
@ -31,7 +31,10 @@ public class ServiceDataModel(string serviceId, string workerId, string carId, L
if (!CarId.IsGuid()) if (!CarId.IsGuid())
throw new ValidationException("The value in the field CarId is not a unique identifier"); throw new ValidationException("The value in the field CarId is not a unique identifier");
if ((Operations?.Count ?? 0) == 0) if (OperationId.IsEmpty())
throw new ValidationException("The service must include operations"); throw new ValidationException("Field OperationId is empty");
if (!OperationId.IsGuid())
throw new ValidationException("The value in the field OperationId is not a unique identifier");
} }
} }

View File

@ -1,26 +0,0 @@
using PimpMyRideContracts.Exceptions;
using PimpMyRideContracts.Extensions;
using PimpMyRideContracts.Infrastructure;
namespace PimpMyRideContracts.DataModels;
public class ServiceOperationDataModel(string serviceId, string operationId) : IValidation
{
public string ServiceId { get; private set; } = serviceId;
public string OperationId { get; private set; } = operationId;
public void Validate()
{
if(OperationId.IsEmpty())
throw new ValidationException("Field OperationId is empty");
if (!OperationId.IsGuid())
throw new ValidationException("The value in the field OperationId is not a unique identifier");
if(ServiceId.IsEmpty())
throw new ValidationException("Field ServiceId is empty");
if (!ServiceId.IsGuid())
throw new ValidationException("The value in the field ServiceId is not a unique identifier");
}
}

View File

@ -1,15 +1,14 @@
using PimpMyRideContracts.Enums; using PimpMyRideContracts.Exceptions;
using PimpMyRideContracts.Exceptions;
using PimpMyRideContracts.Extensions; using PimpMyRideContracts.Extensions;
using PimpMyRideContracts.Infrastructure; using PimpMyRideContracts.Infrastructure;
namespace PimpMyRideContracts.DataModels; namespace PimpMyRideContracts.DataModels;
public class WorkerDataModel(string workerId, string workerFIO, PostType postType, DateTime birthDate, DateTime employmentDate, bool isDeleted) : IValidation public class WorkerDataModel(string workerId, string postId, string workerFIO, DateTime birthDate, DateTime employmentDate, bool isDeleted) : IValidation
{ {
public string WorkerId { get; private set; } = workerId; public string WorkerId { get; private set; } = workerId;
public string WorkerFIO { get; private set; } = workerFIO; public string PostId { get; private set; } = postId;
public PostType PostType { get; private set; } = postType; public string WorkerFIO { get; private set; } = workerFIO;
public DateTime BirthDate { get; private set; } = birthDate; public DateTime BirthDate { get; private set; } = birthDate;
public DateTime EmploymentDate { get; private set; } = employmentDate; public DateTime EmploymentDate { get; private set; } = employmentDate;
public bool IsDeleted { get; private set; } = isDeleted; public bool IsDeleted { get; private set; } = isDeleted;
@ -22,12 +21,15 @@ public class WorkerDataModel(string workerId, string workerFIO, PostType postTyp
if (!WorkerId.IsGuid()) if (!WorkerId.IsGuid())
throw new ValidationException("The value in the field WorkerId is not a unique identifier"); throw new ValidationException("The value in the field WorkerId is not a unique identifier");
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 (WorkerFIO.IsEmpty()) if (WorkerFIO.IsEmpty())
throw new ValidationException("Field WorkerFIO is empty"); throw new ValidationException("Field WorkerFIO is empty");
if (PostType == PostType.None)
throw new ValidationException("Field PostType is empty");
if (BirthDate.Date > DateTime.Now.AddYears(-16).Date) if (BirthDate.Date > DateTime.Now.AddYears(-16).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");

View File

@ -0,0 +1,78 @@
using PimpMyRideContracts.DataModels;
using PimpMyRideContracts.Enums;
using PimpMyRideContracts.Exceptions;
namespace PimpMyRideTests.DataModelsTests;
[TestFixture]
internal class PostDataModelTest
{
[Test]
public void PostIdIsNullOrEmptyTest()
{
var post = CreateDataModel(null, "name", PostType.CarElectrician, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
post = CreateDataModel(string.Empty, "name", PostType.CarElectrician, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void PostIdIsNotGuidTest()
{
var post = CreateDataModel("id", "name", PostType.CarElectrician, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void PostNameIsEmptyTest()
{
var post = CreateDataModel(Guid.NewGuid().ToString(), null, PostType.CarElectrician, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
post = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, PostType.CarElectrician, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void PostTypeIsNoneTest()
{
var post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.None, 10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void SalaryIsLessOrZeroTest()
{
var post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.CarElectrician, 0, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.CarElectrician, -10, true, DateTime.UtcNow);
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void AllFieldsIsCorrectTest()
{
var postId = Guid.NewGuid().ToString();
var postName = "name";
var postType = PostType.CarElectrician;
var salary = 10;
var isActual = false;
var changeDate = DateTime.UtcNow.AddDays(-1);
var post = CreateDataModel(postId, postName, postType, salary, isActual, changeDate);
Assert.That(() => post.Validate(), Throws.Nothing);
Assert.Multiple(() =>
{
Assert.That(post.PostId, Is.EqualTo(postId));
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? postId, string? postName, PostType postType, double salary, bool isActual, DateTime changeDate) =>
new(postId, postName, postType, salary, isActual, changeDate);
}

View File

@ -0,0 +1,55 @@
using PimpMyRideContracts.DataModels;
using PimpMyRideContracts.Exceptions;
namespace PimpMyRideTests.DataModelsTests;
[TestFixture]
internal class SalaryDataModelTest
{
[Test]
public void WorkerIdIsEmptyTest()
{
var salary = CreateDataModel(null, DateTime.Now, 10);
Assert.That(() => salary.Validate(), Throws.TypeOf<ValidationException>());
salary = CreateDataModel(string.Empty, DateTime.Now, 10);
Assert.That(() => salary.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void WorkerIdIsNotGuidTest()
{
var salary = CreateDataModel("workerId", DateTime.Now, 10);
Assert.That(() => salary.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void SalaryIsLessOrZeroTest()
{
var salary = CreateDataModel(Guid.NewGuid().ToString(), DateTime.Now, 0);
Assert.That(() => salary.Validate(), Throws.TypeOf<ValidationException>());
salary = CreateDataModel(Guid.NewGuid().ToString(), DateTime.Now, -10);
Assert.That(() => salary.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void AllFieldsIsCorrectTest()
{
var workerId = Guid.NewGuid().ToString();
var salaryDate = DateTime.Now.AddDays(-3).AddMinutes(-5);
var salary = 10;
var workerSalary = CreateDataModel(workerId, salaryDate, salary);
Assert.That(() => workerSalary.Validate(), Throws.Nothing);
Assert.Multiple(() =>
{
Assert.That(workerSalary.WorkerId, Is.EqualTo(workerId));
Assert.That(workerSalary.SalaryDate, Is.EqualTo(salaryDate));
Assert.That(workerSalary.Salary, Is.EqualTo(salary));
});
}
private static SalaryDataModell CreateDataModel(string? workerId, DateTime salaryDate, double salary) =>
new(workerId, salaryDate, salary);
}

View File

@ -10,62 +10,68 @@ internal class ServiceDataModelTest
[Test] [Test]
public void ServiceIdIsNullOrEmptyTest() public void ServiceIdIsNullOrEmptyTest()
{ {
var service = CreateDataModel(null, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), CreateSubDataModel()); var service = CreateDataModel(null, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
service = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), CreateSubDataModel()); service = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
} }
[Test] [Test]
public void ServiceIdIsNotGuidTest() public void ServiceIdIsNotGuidTest()
{ {
var service = CreateDataModel("id", Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), CreateSubDataModel()); var service = CreateDataModel("id", Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
} }
[Test] [Test]
public void WorkerIdIsNullOrEmptyTest() public void WorkerIdIsNullOrEmptyTest()
{ {
var service = CreateDataModel(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString(), CreateSubDataModel()); var service = CreateDataModel(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
service = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, Guid.NewGuid().ToString(), CreateSubDataModel()); service = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
} }
[Test] [Test]
public void WorkerIdIsNotGuidTest() public void WorkerIdIsNotGuidTest()
{ {
var service = CreateDataModel(Guid.NewGuid().ToString(), "id", Guid.NewGuid().ToString(), CreateSubDataModel()); var service = CreateDataModel(Guid.NewGuid().ToString(), "id", Guid.NewGuid().ToString(), Guid.NewGuid().ToString());
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
} }
[Test] [Test]
public void CarIdIsNullOrEmptyTest() public void CarIdIsNullOrEmptyTest()
{ {
var service = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, CreateSubDataModel()); var service = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString());
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
service = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), string.Empty, CreateSubDataModel()); service = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), string.Empty, Guid.NewGuid().ToString());
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
} }
[Test] [Test]
public void CarIdIsNotGuidTest() public void CarIdIsNotGuidTest()
{ {
var service = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "id", CreateSubDataModel()); var service = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "id", Guid.NewGuid().ToString());
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
} }
[Test] [Test]
public void OperationsAreNullOrEmpty() public void OperationIdIsNullOrEmptyTest()
{ {
var service = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null); var service = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null);
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
service = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), []); service = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), string.Empty);
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void OperationIdIsNotGuidTest()
{
var service = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "operationId");
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
} }
@ -75,9 +81,9 @@ internal class ServiceDataModelTest
var serviceId = Guid.NewGuid().ToString(); var serviceId = Guid.NewGuid().ToString();
var workerId = Guid.NewGuid().ToString(); var workerId = Guid.NewGuid().ToString();
var carId = Guid.NewGuid().ToString(); var carId = Guid.NewGuid().ToString();
var operations = CreateSubDataModel(); var operationId = Guid.NewGuid().ToString();
var service = CreateDataModel(serviceId, workerId, carId, operations); var service = CreateDataModel(serviceId, workerId, carId, operationId);
Assert.That(() => service.Validate(), Throws.Nothing); Assert.That(() => service.Validate(), Throws.Nothing);
Assert.Multiple(() => Assert.Multiple(() =>
@ -85,13 +91,10 @@ internal class ServiceDataModelTest
Assert.That(service.ServiceId, Is.EqualTo(serviceId)); Assert.That(service.ServiceId, Is.EqualTo(serviceId));
Assert.That(service.WorkerId, Is.EqualTo(workerId)); Assert.That(service.WorkerId, Is.EqualTo(workerId));
Assert.That(service.CarId, Is.EqualTo(carId)); Assert.That(service.CarId, Is.EqualTo(carId));
Assert.That(service.Operations, Is.EqualTo(operations)); Assert.That(service.OperationId, Is.EqualTo(operationId));
}); });
} }
private static ServiceDataModel CreateDataModel(string? serviceId, string? workerId, string? carId, List<ServiceOperationDataModel>? operations) => private static ServiceDataModel CreateDataModel(string? serviceId, string? workerId, string? carId, string? operationId) =>
new(serviceId, workerId, carId, operations); new(serviceId, workerId, carId, operationId);
private static List<ServiceOperationDataModel> CreateSubDataModel() =>
[new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString())];
} }

View File

@ -1,61 +0,0 @@
using PimpMyRideContracts.Exceptions;
using PimpMyRideContracts.DataModels;
namespace PimpMyRideTests.DataModelsTests;
[TestFixture]
internal class ServiceOperationDataModelTest
{
[Test]
public void ServiceIdIsNullOrEmptyTest()
{
var service = CreateDataModel(null, Guid.NewGuid().ToString());
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
service = CreateDataModel(string.Empty, Guid.NewGuid().ToString());
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void ServiceIdIsNotGuidTest()
{
var service = CreateDataModel("id", Guid.NewGuid().ToString());
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void OperationIdIsNullOrEmptyTest()
{
var service = CreateDataModel(Guid.NewGuid().ToString(), null);
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
service = CreateDataModel(Guid.NewGuid().ToString(), string.Empty);
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void OperationIdIsNotGuidTest()
{
var service = CreateDataModel(Guid.NewGuid().ToString(), "id");
Assert.That(() => service.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void AllFieldsIsCorrectTest()
{
var serviceId = Guid.NewGuid().ToString();
var operationId = Guid.NewGuid().ToString();
var service = CreateDataModel(serviceId, operationId);
Assert.That(() => service.Validate(), Throws.Nothing);
Assert.Multiple(() =>
{
Assert.That(service.ServiceId, Is.EqualTo(serviceId));
Assert.That(service.OperationId, Is.EqualTo(operationId));
});
}
private static ServiceOperationDataModel CreateDataModel(string? serviceId, string? operationId) =>
new(serviceId, operationId);
}

View File

@ -1,6 +1,5 @@
using PimpMyRideContracts.Exceptions; using PimpMyRideContracts.Exceptions;
using PimpMyRideContracts.DataModels; using PimpMyRideContracts.DataModels;
using PimpMyRideContracts.Enums;
namespace PimpMyRideTests.DataModelsTests; namespace PimpMyRideTests.DataModelsTests;
@ -10,51 +9,61 @@ internal class WorkerDataModelTest
[Test] [Test]
public void WorkerIdIsNullOrEmptyTest() public void WorkerIdIsNullOrEmptyTest()
{ {
var worker = CreateDataModel(null, "FIO", PostType.CarElectrician, DateTime.Now.AddYears(-18), DateTime.Now, false); var worker = CreateDataModel(null, Guid.NewGuid().ToString(), "FIO", DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
worker = CreateDataModel(string.Empty, "FIO", PostType.CarElectrician, DateTime.Now.AddYears(-18), DateTime.Now, false); worker = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), "FIO", DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
} }
[Test] [Test]
public void WorkerIdIsNotGuidTest() public void WorkerIdIsNotGuidTest()
{ {
var worker = CreateDataModel("id", "FIO", PostType.CarElectrician, DateTime.Now.AddYears(-18), DateTime.Now, false); var worker = CreateDataModel("id", Guid.NewGuid().ToString(), "FIO", DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void PostIdIsNullOrEmptyTest()
{
var worker = CreateDataModel(Guid.NewGuid().ToString(), null, "FIO", DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
worker = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, "FIO", DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void PostIdIsNotGuidTest()
{
var worker = CreateDataModel(Guid.NewGuid().ToString(), "postId", "FIO", DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
} }
[Test] [Test]
public void WorkerFIOIsNullOrEmptyTest() public void WorkerFIOIsNullOrEmptyTest()
{ {
var worker = CreateDataModel(Guid.NewGuid().ToString(), null, PostType.CarElectrician, DateTime.Now.AddYears(-18), DateTime.Now, false); var worker = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
worker = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, PostType.CarElectrician, DateTime.Now.AddYears(-18), DateTime.Now, false); worker = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), string.Empty, DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void PostTypeIsNoneTest()
{
var worker = CreateDataModel(Guid.NewGuid().ToString(), "FIO", PostType.None, DateTime.Now.AddYears(-18), DateTime.Now, false);
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
} }
[Test] [Test]
public void BirthDateIsNotCorrectTest() public void BirthDateIsNotCorrectTest()
{ {
var worker = CreateDataModel(Guid.NewGuid().ToString(), "FIO", PostType.CarElectrician, DateTime.Now.AddYears(-16).AddDays(1), DateTime.Now, false); var worker = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "FIO", DateTime.Now.AddYears(-16).AddDays(1), DateTime.Now, false);
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
} }
[Test] [Test]
public void BirthDateAndEmployementDateAreNotCorrectTest() public void BirthDateAndEmployementDateAreNotCorrectTest()
{ {
var worker = CreateDataModel(Guid.NewGuid().ToString(), "FIO", PostType.CarElectrician, DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-18).AddDays(-1), false); var worker = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "FIO", DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-18).AddDays(-1), false);
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
worker = CreateDataModel(Guid.NewGuid().ToString(), "FIO", PostType.CarElectrician, DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-16), false); worker = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "FIO", DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-16), false);
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>()); Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
} }
@ -62,26 +71,26 @@ internal class WorkerDataModelTest
public void AllFieldsIsCorrectTest() public void AllFieldsIsCorrectTest()
{ {
var workerId = Guid.NewGuid().ToString(); var workerId = Guid.NewGuid().ToString();
var postId = Guid.NewGuid().ToString();
var workerFIO = "FIO"; var workerFIO = "FIO";
var postType = PostType.BodyRepairSpecialist;
var birthDate = DateTime.Now.AddYears(-16).AddDays(-1); var birthDate = DateTime.Now.AddYears(-16).AddDays(-1);
var employementDate = DateTime.Now; var employementDate = DateTime.Now;
var isDeleted = false; var isDeleted = false;
var worker = CreateDataModel(workerId, workerFIO, postType, birthDate, employementDate, isDeleted); var worker = CreateDataModel(workerId, postId, workerFIO, birthDate, employementDate, isDeleted);
Assert.That(() => worker.Validate(), Throws.Nothing); Assert.That(() => worker.Validate(), Throws.Nothing);
Assert.Multiple(() => Assert.Multiple(() =>
{ {
Assert.That(worker.WorkerId, Is.EqualTo(workerId)); Assert.That(worker.WorkerId, Is.EqualTo(workerId));
Assert.That(worker.PostId, Is.EqualTo(postId));
Assert.That(worker.WorkerFIO, Is.EqualTo(workerFIO)); Assert.That(worker.WorkerFIO, Is.EqualTo(workerFIO));
Assert.That(worker.PostType, Is.EqualTo(postType));
Assert.That(worker.BirthDate, Is.EqualTo(birthDate)); Assert.That(worker.BirthDate, Is.EqualTo(birthDate));
Assert.That(worker.EmploymentDate, Is.EqualTo(employementDate)); Assert.That(worker.EmploymentDate, Is.EqualTo(employementDate));
Assert.That(worker.IsDeleted, Is.EqualTo(isDeleted)); Assert.That(worker.IsDeleted, Is.EqualTo(isDeleted));
}); });
} }
private static WorkerDataModel CreateDataModel(string? workerId, string? workerFIO, PostType postType, DateTime birthDate, DateTime employmentDate, bool isDeleted) => private static WorkerDataModel CreateDataModel(string? workerId, string? postId, string? workerFIO, DateTime birthDate, DateTime employmentDate, bool isDeleted) =>
new(workerId, workerFIO, postType, birthDate, employmentDate, isDeleted); new(workerId, postId, workerFIO, birthDate, employmentDate, isDeleted);
} }