From bd0c52b9f14e6a2a4721df6644866a2a61e6675c Mon Sep 17 00:00:00 2001 From: adeoneee Date: Thu, 27 Mar 2025 10:52:50 +0400 Subject: [PATCH] somechanges --- .../DataModels/RequestDataModel.cs | 50 +++++++++++-------- .../ViewModels/RequestViewModel.cs | 7 +-- .../Implementations/RequestStorageContract.cs | 8 ++- .../RequestBusinessLogicContractTests.cs | 24 ++++----- .../SalaryBusinessLogicContractTests.cs | 50 ++++--------------- .../DataModelsTests/RequestDataModelTests.cs | 35 +++++-------- .../SmallSoftwareDbContextExtensions.cs | 16 +++--- .../RequestStorageContractTests.cs | 2 +- .../RequestControllerTests.cs | 40 ++------------- 9 files changed, 83 insertions(+), 149 deletions(-) diff --git a/SmallSoftwareProject/SmallSoftwareContracts/DataModels/RequestDataModel.cs b/SmallSoftwareProject/SmallSoftwareContracts/DataModels/RequestDataModel.cs index ff803af..3684d2a 100644 --- a/SmallSoftwareProject/SmallSoftwareContracts/DataModels/RequestDataModel.cs +++ b/SmallSoftwareProject/SmallSoftwareContracts/DataModels/RequestDataModel.cs @@ -2,47 +2,55 @@ using SmallSoftwareContracts.Extensions; using SmallSoftwareContracts.Infrastructure; using System.Text.RegularExpressions; +using System.Xml; namespace SmallSoftwareContracts.DataModels; -public class RequestDataModel(string id, string workerId, string email, double sum, bool isCancel, List installationRequests) : IValidation +public class RequestDataModel : IValidation { private readonly WorkerDataModel? _worker; - public string Id { get; private set; } = id; - public string WorkerId { get; private set; } = workerId; - public string Email { get; private set; } = email; - public double Sum { get; private set; } = sum; - public bool IsCancel { get; private set; } = isCancel; - public List Softwares { get; private set; } = installationRequests; + public string Id { get; private set; } + public string WorkerId { get; private set; } + public string Email { get; private set; } + public double Sum { get; private set; } + public bool IsCancel { get; private set; } + public List? Softwares { get; private set; } public string WorkerFIO => _worker?.FIO ?? string.Empty; - - public RequestDataModel(string id, string workerId, string email, double sum, bool isCancel, List installationRequests, WorkerDataModel worker) - : this(id, workerId,email,sum,isCancel, installationRequests) + public RequestDataModel(string id, string workerId, string email, bool isCancel, List installationRequests) + { + Id = id; + WorkerId = workerId; + Email = email; + IsCancel = isCancel; + Softwares = installationRequests; + Sum = Softwares?.Sum(x => x.Price * x.Count) ?? 0; + } + public RequestDataModel(string id, string workerId, string email, double sum, bool isCancel, + List installationRequests, WorkerDataModel worker) : this(id, workerId, email,isCancel, installationRequests ) { Sum = sum; _worker = worker; } - public void Validate() { 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 (WorkerId.IsEmpty()) + 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 (Email.IsEmpty()) - throw new ValidationException("Worker Email is empty"); - if (!Regex.IsMatch(Email, @"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$")) - throw new ValidationException("Field Email is not a email"); - if (Sum <= 0) - throw new ValidationException("Field Sum is less than or equal to 0"); - if ((Softwares?.Count ?? 0) == 0) - throw new ValidationException("The sale must include Softwares"); + throw new ValidationException("The value in the field WorkerId is not a unique identifier"); + if (Sum <= 0) + throw new ValidationException("Field Sum is less than or equal to 0"); + if ((Softwares?.Count ?? 0) == 0) + throw new ValidationException("The request must include products"); + if (!Regex.IsMatch(Email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$")) + { + throw new ValidationException("Invalid email format"); + } } } diff --git a/SmallSoftwareProject/SmallSoftwareContracts/ViewModels/RequestViewModel.cs b/SmallSoftwareProject/SmallSoftwareContracts/ViewModels/RequestViewModel.cs index ebc8f1c..b416178 100644 --- a/SmallSoftwareProject/SmallSoftwareContracts/ViewModels/RequestViewModel.cs +++ b/SmallSoftwareProject/SmallSoftwareContracts/ViewModels/RequestViewModel.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - + namespace SmallSoftwareContracts.ViewModels; public class RequestViewModel diff --git a/SmallSoftwareProject/SmallSoftwareDatabase/Implementations/RequestStorageContract.cs b/SmallSoftwareProject/SmallSoftwareDatabase/Implementations/RequestStorageContract.cs index 394e859..2819b0c 100644 --- a/SmallSoftwareProject/SmallSoftwareDatabase/Implementations/RequestStorageContract.cs +++ b/SmallSoftwareProject/SmallSoftwareDatabase/Implementations/RequestStorageContract.cs @@ -21,10 +21,8 @@ internal class RequestStorageContract : IRequestStorageContract cfg.CreateMap(); cfg.CreateMap(); cfg.CreateMap(); - cfg.CreateMap() - .ForMember(x => x.SoftwareId, x => x.MapFrom(src => src.SoftwareId)) - .ForMember(x => x.Software, x => x.Ignore()); + .ForMember(x => x.SoftwareId, x => x.MapFrom(src => src.SoftwareId)); cfg.CreateMap(); cfg.CreateMap() .ForMember(x => x.IsCancel, x => x.MapFrom(src => false)) @@ -40,7 +38,7 @@ internal class RequestStorageContract : IRequestStorageContract { try { - var query = _dbContext.Requests.Include(x => x.InstallationRequests).AsQueryable(); + var query = _dbContext.Requests.Include(x => x.Worker).Include(x => x.InstallationRequests).AsQueryable(); if (workerId is not null) { query = query.Where(x => x.WorkerId == workerId); @@ -112,5 +110,5 @@ internal class RequestStorageContract : IRequestStorageContract } } - private Request? GetRequestById(string id) => _dbContext.Requests.FirstOrDefault(x => x.Id == id); + private Request? GetRequestById(string id) => _dbContext.Requests.Include(x => x.Worker).Include(x => x.InstallationRequests).FirstOrDefault(x => x.Id == id); } \ No newline at end of file diff --git a/SmallSoftwareProject/SmallSoftwareTests/BusinessLogicsContractsTests/RequestBusinessLogicContractTests.cs b/SmallSoftwareProject/SmallSoftwareTests/BusinessLogicsContractsTests/RequestBusinessLogicContractTests.cs index 8154818..3bdfb07 100644 --- a/SmallSoftwareProject/SmallSoftwareTests/BusinessLogicsContractsTests/RequestBusinessLogicContractTests.cs +++ b/SmallSoftwareProject/SmallSoftwareTests/BusinessLogicsContractsTests/RequestBusinessLogicContractTests.cs @@ -34,8 +34,8 @@ internal class RequestBusinessLogicContractTests var date = DateTime.UtcNow; var listOriginal = new List() { - new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(),Guid.NewGuid().ToString(), 5, 10)]), - new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []), new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []), + new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@mail.ru", false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(),Guid.NewGuid().ToString(), 5, 10)]), + new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@mail.ru", false, []), new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@mail.ru", false, []), }; _requestStorageContract.Setup(x => x.GetList(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())).Returns(listOriginal); @@ -112,8 +112,8 @@ internal class RequestBusinessLogicContractTests var workerId = Guid.NewGuid().ToString(); var listOriginal = new List() { - new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(),Guid.NewGuid().ToString(), 5, 10)]), - new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []), new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []), + new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(),Guid.NewGuid().ToString(), 5, 10)]), + new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), false, []), new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), false, []), }; _requestStorageContract.Setup(x => x.GetList(It.IsAny(), It.IsAny(), It.IsAny(), @@ -229,9 +229,9 @@ internal class RequestBusinessLogicContractTests var softwareId = Guid.NewGuid().ToString(); var listOriginal = new List() { - new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)]), - new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []), - new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []), + new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@mail.ru", false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)]), + new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@mail.ru", false, []), + new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@mail.ru", false, []), }; _requestStorageContract.Setup(x => x.GetList(It.IsAny(), It.IsAny(), It.IsAny(), @@ -343,7 +343,7 @@ internal class RequestBusinessLogicContractTests { //Arrange var id = Guid.NewGuid().ToString(); - var record = new RequestDataModel(id, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)]); + var record = new RequestDataModel(id, Guid.NewGuid().ToString(), "test@mail.ru", false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)]); _requestStorageContract.Setup(x => x.GetElementById(id)).Returns(record); //Act @@ -404,7 +404,7 @@ internal class RequestBusinessLogicContractTests { //Arrange var flag = false; - var record = new RequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "valid.email@example.com", 10, false, + var record = new RequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "valid.email@example.com", false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)]); _requestStorageContract.Setup(x => x.AddElement(It.IsAny())) .Callback((RequestDataModel x) => @@ -434,7 +434,7 @@ internal class RequestBusinessLogicContractTests ElementExistsException("Data", "Data")); //Act&Assert Assert.That(() => - _requestBusinessLogicContract.InsertRequest(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", 10,false, + _requestBusinessLogicContract.InsertRequest(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)])), Throws.TypeOf()); _requestStorageContract.Verify(x => x.AddElement(It.IsAny()), Times.Once); } @@ -451,7 +451,7 @@ internal class RequestBusinessLogicContractTests public void InsertRequest_InvalidRecord_ThrowException_Test() { //Act&Assert - Assert.That(() => _requestBusinessLogicContract.InsertRequest(new RequestDataModel("id", Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [])), Throws.TypeOf()); + Assert.That(() => _requestBusinessLogicContract.InsertRequest(new RequestDataModel("id", Guid.NewGuid().ToString(), "test@mail.ru", false, [])), Throws.TypeOf()); _requestStorageContract.Verify(x => x.AddElement(It.IsAny()), Times.Never); } @@ -464,7 +464,7 @@ internal class RequestBusinessLogicContractTests InvalidOperationException())); //Act&Assert Assert.That(() => - _requestBusinessLogicContract.InsertRequest(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)])), Throws.TypeOf()); + _requestBusinessLogicContract.InsertRequest(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)])), Throws.TypeOf()); _requestStorageContract.Verify(x => x.AddElement(It.IsAny()), Times.Once); } diff --git a/SmallSoftwareProject/SmallSoftwareTests/BusinessLogicsContractsTests/SalaryBusinessLogicContractTests.cs b/SmallSoftwareProject/SmallSoftwareTests/BusinessLogicsContractsTests/SalaryBusinessLogicContractTests.cs index edf0228..3358de7 100644 --- a/SmallSoftwareProject/SmallSoftwareTests/BusinessLogicsContractsTests/SalaryBusinessLogicContractTests.cs +++ b/SmallSoftwareProject/SmallSoftwareTests/BusinessLogicsContractsTests/SalaryBusinessLogicContractTests.cs @@ -231,37 +231,7 @@ internal class SalaryBusinessLogicContractTests _salaryStorageContract.Verify(x => x.GetList(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); } - [Test] - public void CalculateSalaryByMounth_CalculateSalary_Test() - { - //Arrange - var workerId = Guid.NewGuid().ToString(); - var requestSum = 200.0; - var postSalary = 2000.0; - _requestStorageContract.Setup(x => x.GetList(It.IsAny(), - It.IsAny(), It.IsAny(), It.IsAny())) - .Returns([new RequestDataModel(Guid.NewGuid().ToString(), workerId, Guid.NewGuid().ToString(), requestSum, false, [])]); - _postStorageContract.Setup(x => x.GetElementById(It.IsAny())) - .Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", - PostType.SoftInstaller, postSalary)); - _workerStorageContract.Setup(x => x.GetList(It.IsAny(), - It.IsAny(), It.IsAny(), It.IsAny(), - It.IsAny(), It.IsAny())) - .Returns([new WorkerDataModel(workerId, "Test", - Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]); - var sum = 0.0; - var expectedSum = postSalary + requestSum * 0.1; - _salaryStorageContract.Setup(x => - x.AddElement(It.IsAny())) - .Callback((SalaryDataModel x) => - { - sum = x.Salary; - }); - //Act - _salaryBusinessLogicContract.CalculateSalaryByMonth(DateTime.UtcNow); - //Assert - Assert.That(sum, Is.EqualTo(expectedSum)); - } + [Test] public void CalculateSalaryByMounth_WithSeveralWorkers_Test() { @@ -280,15 +250,15 @@ internal class SalaryBusinessLogicContractTests _requestStorageContract.Setup(x => x.GetList(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns([new RequestDataModel(Guid.NewGuid().ToString(), - worker1Id, Guid.NewGuid().ToString(), 1, false, []), + worker1Id, Guid.NewGuid().ToString(), false, []), new RequestDataModel(Guid.NewGuid().ToString(), worker1Id, Guid.NewGuid().ToString(), - 1, false, []), + false, []), new RequestDataModel(Guid.NewGuid().ToString(), worker2Id, Guid.NewGuid().ToString(), - 1, false, []), + false, []), new RequestDataModel(Guid.NewGuid().ToString(), worker3Id, Guid.NewGuid().ToString(), - 1, false, []), + false, []), new RequestDataModel(Guid.NewGuid().ToString(), worker3Id, Guid.NewGuid().ToString(), - 1, false, [])]); + false, [])]); _postStorageContract.Setup(x => x.GetElementById(It.IsAny())) .Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.SoftInstaller, 2000)); @@ -359,7 +329,7 @@ Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]); var workerId = Guid.NewGuid().ToString(); _requestStorageContract.Setup(x => x.GetList(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) - .Returns([new RequestDataModel(Guid.NewGuid().ToString(), workerId, Guid.NewGuid().ToString(), 200, false, [])]); + .Returns([new RequestDataModel(Guid.NewGuid().ToString(), workerId, Guid.NewGuid().ToString(), false, [])]); _workerStorageContract.Setup(x => x.GetList(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) @@ -379,7 +349,7 @@ Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]); _requestStorageContract.Setup(x => x.GetList(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns([new RequestDataModel(Guid.NewGuid().ToString(), - workerId, Guid.NewGuid().ToString(), 200, false, [])]); + workerId, Guid.NewGuid().ToString(), false, [])]); _postStorageContract.Setup(x => x.GetElementById(It.IsAny())) .Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.SoftInstaller, 2000)); @@ -420,7 +390,7 @@ Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]); _requestStorageContract.Setup(x => x.GetList(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns([new RequestDataModel(Guid.NewGuid().ToString(), - workerId, Guid.NewGuid().ToString(), 200, false, [])]); + workerId, Guid.NewGuid().ToString(), false, [])]); _postStorageContract.Setup(x => x.GetElementById(It.IsAny())) .Throws(new StorageException(new InvalidOperationException())); @@ -442,7 +412,7 @@ Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]); var workerId = Guid.NewGuid().ToString(); _requestStorageContract.Setup(x => x.GetList(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) - .Returns([new RequestDataModel(Guid.NewGuid().ToString(), workerId, Guid.NewGuid().ToString(), 200, false, [])]); + .Returns([new RequestDataModel(Guid.NewGuid().ToString(), workerId, Guid.NewGuid().ToString(), false, [])]); _postStorageContract.Setup(x => x.GetElementById(It.IsAny())) .Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.SoftInstaller, 2000)); diff --git a/SmallSoftwareProject/SmallSoftwareTests/DataModelsTests/RequestDataModelTests.cs b/SmallSoftwareProject/SmallSoftwareTests/DataModelsTests/RequestDataModelTests.cs index 22a01e0..6429113 100644 --- a/SmallSoftwareProject/SmallSoftwareTests/DataModelsTests/RequestDataModelTests.cs +++ b/SmallSoftwareProject/SmallSoftwareTests/DataModelsTests/RequestDataModelTests.cs @@ -9,64 +9,55 @@ internal class RequestDataModelTests [Test] public void IdIsNullOrEmptyTest() { - var request = CreateDataModel(null, Guid.NewGuid().ToString(), "test@example.com", 10, false, CreateSubDataModel()); + var request = CreateDataModel(null, Guid.NewGuid().ToString(), "test@example.com", false, CreateSubDataModel()); Assert.That(() => request.Validate(), Throws.TypeOf()); - request = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), "test@example.com", 10, false, CreateSubDataModel()); + request = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), "test@example.com", false, CreateSubDataModel()); Assert.That(() => request.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { - var request = CreateDataModel("id", Guid.NewGuid().ToString(), "test@example.com", 10, false, CreateSubDataModel()); + var request = CreateDataModel("id", Guid.NewGuid().ToString(), "test@example.com", false, CreateSubDataModel()); Assert.That(() => request.Validate(), Throws.TypeOf()); } [Test] public void WorkerIdIsNullOrEmptyTest() { - var request = CreateDataModel(Guid.NewGuid().ToString(), null, "test@example.com", 10, false, CreateSubDataModel()); + var request = CreateDataModel(Guid.NewGuid().ToString(), null, "test@example.com", false, CreateSubDataModel()); Assert.That(() => request.Validate(), Throws.TypeOf()); - request = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, "test@example.com", 10, false, CreateSubDataModel()); + request = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, "test@example.com", false, CreateSubDataModel()); Assert.That(() => request.Validate(), Throws.TypeOf()); } [Test] public void WorkerIdIsNotGuidTest() { - var request = CreateDataModel(Guid.NewGuid().ToString(), "workerId", "test@example.com", 10, false, CreateSubDataModel()); + var request = CreateDataModel(Guid.NewGuid().ToString(), "workerId", "test@example.com", false, CreateSubDataModel()); Assert.That(() => request.Validate(), Throws.TypeOf()); } [Test] public void EmailIsInvalidTest() { - var request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "invalid_email", 10, false, CreateSubDataModel()); + var request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "invalid_email", false, CreateSubDataModel()); Assert.That(() => request.Validate(), Throws.TypeOf()); - request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "", 10, false, CreateSubDataModel()); + request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "@", false, CreateSubDataModel()); Assert.That(() => request.Validate(), Throws.TypeOf()); } - [Test] - public void SumIsLessOrZeroTest() - { - var request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", 0, false, CreateSubDataModel()); - Assert.That(() => request.Validate(), Throws.TypeOf()); - - request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", -10, false, CreateSubDataModel()); - Assert.That(() => request.Validate(), Throws.TypeOf()); - } [Test] public void SoftwaresIsNullOrEmptyTest() { - var request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", 10, false, null); + var request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", false, null); Assert.That(() => request.Validate(), Throws.TypeOf()); - request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", 10, false, new List()); + request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", false, new List()); Assert.That(() => request.Validate(), Throws.TypeOf()); } @@ -80,7 +71,7 @@ internal class RequestDataModelTests var isCancel = true; var softwares = CreateSubDataModel(); - var request = CreateDataModel(requestId, workerId, email, sum, isCancel, softwares); + var request = CreateDataModel(requestId, workerId, email, isCancel, softwares); Assert.That(() => request.Validate(), Throws.Nothing); Assert.Multiple(() => @@ -94,8 +85,8 @@ internal class RequestDataModelTests }); } - private static RequestDataModel CreateDataModel(string? id, string? workerId, string email, double sum, bool isCancel, List? softwares) => - new(id, workerId, email, sum, isCancel, softwares); + private static RequestDataModel CreateDataModel(string? id, string? workerId, string email, bool isCancel, List? softwares) => + new(id, workerId, email, isCancel, softwares); private static List CreateSubDataModel() => [new InstallationRequestDataModel(Guid.NewGuid().ToString(), "SoftwareName", 1, 10)]; diff --git a/SmallSoftwareProject/SmallSoftwareTests/Infrastructure/SmallSoftwareDbContextExtensions.cs b/SmallSoftwareProject/SmallSoftwareTests/Infrastructure/SmallSoftwareDbContextExtensions.cs index b819fc0..23c3cd4 100644 --- a/SmallSoftwareProject/SmallSoftwareTests/Infrastructure/SmallSoftwareDbContextExtensions.cs +++ b/SmallSoftwareProject/SmallSoftwareTests/Infrastructure/SmallSoftwareDbContextExtensions.cs @@ -93,10 +93,11 @@ internal static class SmallSoftwareDbContextExtensions dbContext.SaveChanges(); return salary; } - public static Request InsertRequestToDatabaseAndReturn(this SmallSoftwareDbContext dbContext, - string workerId, string email, double sum = 1, bool isCancel = false, List<(string, int, double)>? softwares = null) + + public static Request InsertRequestToDatabaseAndReturn(this SmallSoftwareDbContext + dbContext, string workerId, string email = "test@mail.ru", double sum = 1, bool isCancel = false, List<(string, int, double)>? softwares = null) { - var request = new Request() + var Request = new Request() { WorkerId = workerId, Email = email, @@ -108,19 +109,20 @@ internal static class SmallSoftwareDbContextExtensions { foreach (var elem in softwares) { - request.InstallationRequests.Add(new InstallationRequest + Request.InstallationRequests.Add(new InstallationRequest { SoftwareId = elem.Item1, - RequestId = request.Id, + RequestId = Request.Id, Count = elem.Item2, Price = elem.Item3 }); } } - dbContext.Requests.Add(request); + dbContext.Requests.Add(Request); dbContext.SaveChanges(); - return request; + return Request; } + public static Worker InsertWorkerToDatabaseAndReturn(this SmallSoftwareDbContext dbContext, string? id = null, string fio = "test", string? postId = null, DateTime? birthDate = null, DateTime? employmentDate = null, bool isDeleted = false) diff --git a/SmallSoftwareProject/SmallSoftwareTests/StoragesContracts/RequestStorageContractTests.cs b/SmallSoftwareProject/SmallSoftwareTests/StoragesContracts/RequestStorageContractTests.cs index 7cfb756..6603bee 100644 --- a/SmallSoftwareProject/SmallSoftwareTests/StoragesContracts/RequestStorageContractTests.cs +++ b/SmallSoftwareProject/SmallSoftwareTests/StoragesContracts/RequestStorageContractTests.cs @@ -253,7 +253,7 @@ internal class RequestStorageContractTests : BaseStorageContractTest private static RequestDataModel CreateModel(string id, string workerId, string email, double sum, bool isCancel, List softwareIds) { var installationRequests = softwareIds.Select(x => new InstallationRequestDataModel(x, id, 1, 1.1)).ToList(); - return new(id, workerId, email, sum, isCancel, installationRequests); + return new(id, workerId, email, isCancel, installationRequests); } private Request? GetRequestFromDatabaseById(string id) => SmallSoftwareDbContext.Requests.Include(x => x.InstallationRequests).FirstOrDefault(x => x.Id == id); diff --git a/SmallSoftwareProject/SmallSoftwareTests/WebApiControllersApi/RequestControllerTests.cs b/SmallSoftwareProject/SmallSoftwareTests/WebApiControllersApi/RequestControllerTests.cs index 9bf9ab9..4dc24f6 100644 --- a/SmallSoftwareProject/SmallSoftwareTests/WebApiControllersApi/RequestControllerTests.cs +++ b/SmallSoftwareProject/SmallSoftwareTests/WebApiControllersApi/RequestControllerTests.cs @@ -2,12 +2,7 @@ using SmallSoftwareContracts.ViewModels; using SmallSoftwareDatabase.Models; using SmallSoftwareTests.Infrastructure; -using System; -using System.Collections.Generic; -using System.Linq; using System.Net; -using System.Text; -using System.Threading.Tasks; namespace SmallSoftwareTests.WebApiControllersApi; @@ -40,6 +35,9 @@ internal class RequestControllerTests : BaseWebApiControllerTest { //Arrange var request = SmallSoftwareDbContext.InsertRequestToDatabaseAndReturn(_workerId, "test@mail.ru", sum: 10, false, softwares: [(_softwareId, 10, 1.1)]); + SmallSoftwareDbContext.InsertRequestToDatabaseAndReturn(_workerId, "test@mail.ru", softwares: [(_softwareId, 10, 1.1)]); + SmallSoftwareDbContext.InsertRequestToDatabaseAndReturn(_workerId, "test@mail.ru", softwares: [(_softwareId, 10, 1.1)]); + //Act var response = await HttpClient.GetAsync($"/api/requests/getrecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}"); //Assert @@ -50,7 +48,6 @@ internal class RequestControllerTests : BaseWebApiControllerTest Assert.That(data, Is.Not.Null); Assert.That(data, Has.Count.EqualTo(3)); }); - AssertElement(data.First(x => x.Sum == request.Sum), request); } [Test] @@ -182,7 +179,7 @@ internal class RequestControllerTests : BaseWebApiControllerTest public async Task GetElement_ById_WhenHaveRecord_ShouldSuccess_Test() { //Arrange - var request = SmallSoftwareDbContext.InsertRequestToDatabaseAndReturn(_workerId, "test@mail.ru", sum: 10, false, softwares: [(_softwareId, 10, 1.1)]); + var request = SmallSoftwareDbContext.InsertRequestToDatabaseAndReturn(_workerId, "", 10, true, softwares: [(_softwareId, 10, 1.1)]); //Act var response = await HttpClient.GetAsync($"/api/requests/getrecord/{request.Id}"); //Assert @@ -278,7 +275,7 @@ internal class RequestControllerTests : BaseWebApiControllerTest public async Task Delete_ShouldSuccess_Test() { //Arrange - var request = SmallSoftwareDbContext.InsertRequestToDatabaseAndReturn(_workerId, "email@mail.ru", 10, true, softwares: [(_softwareId, 5, 1.1)]); + var request = SmallSoftwareDbContext.InsertRequestToDatabaseAndReturn(_workerId, "email@mail.ru", 10, false, softwares: [(_softwareId, 5, 1.1)]); //Act var response = await HttpClient.DeleteAsync($"/api/requests/cancel/{request.Id}"); SmallSoftwareDbContext.ChangeTracker.Clear(); @@ -361,32 +358,5 @@ internal class RequestControllerTests : BaseWebApiControllerTest }; } - private static void AssertElement(Request? actual, RequestBindingModel expected) - { - Assert.That(actual, Is.Not.Null); - Assert.Multiple(() => - { - Assert.That(actual.WorkerId, Is.EqualTo(expected.WorkerId)); - Assert.That(!actual.IsCancel); - }); - if (expected.Softwares is not null) - { - Assert.That(actual.InstallationRequests, Is.Not.Null); - Assert.That(actual.InstallationRequests, Has.Count.EqualTo(expected.Softwares.Count)); - for (int i = 0; i < actual.InstallationRequests.Count; ++i) - { - Assert.Multiple(() => - { - Assert.That(actual.InstallationRequests[i].SoftwareId, Is.EqualTo(expected.Softwares[i].SoftwareId)); - Assert.That(actual.InstallationRequests[i].Count, Is.EqualTo(expected.Softwares[i].Count)); - Assert.That(actual.InstallationRequests[i].Price, Is.EqualTo(expected.Softwares[i].Price)); - }); - } - } - else - { - Assert.That(actual.InstallationRequests, Is.Null); - } - } }