public async Task UpdateLastEmailReminderSentAsync_WithDefaultParameters_Returns404Response()
        {
            // Arrange
            var content = new UpdateLastEmailReminderSentRequest()
            {
                Id              = 99,
                ContractNumber  = "Levy-0002",
                ContractVersion = 1
            };

            // Act
            var response = await _testClient.PatchAsync("/api/contractReminder", GetStringContent(content));

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.NotFound);
        }
        public void UpdateLastEmailReminderSentAndLastUpdatedAtAsync_MockHttp()
        {
            // Arrange
            UpdateLastEmailReminderSentRequest request = new UpdateLastEmailReminderSentRequest()
            {
                Id = 1, ContractVersion = 1, ContractNumber = "Test1"
            };

            Mock.Get(_contractsDataLogger)
            .Setup(p => p.LogInformation(It.IsAny <string>(), It.IsAny <object[]>()));

            _mockHttpMessageHandler.Expect(TestBaseAddress + $"/api/contractReminder").Respond(HttpStatusCode.OK);

            ContractsDataService contractsDataService = CreateContractsDataService();

            //Act
            Func <Task> act = async() => await contractsDataService.UpdateContractReminderAsync(request);

            // Assert
            act.Should().NotThrow();
            _mockHttpMessageHandler.VerifyNoOutstandingExpectation();
            VerifyAllMocks();
        }
        public void UpdateLastEmailReminderSentAndLastUpdatedAtAsync_Mock404Http()
        {
            // Arrange
            UpdateLastEmailReminderSentRequest request = new UpdateLastEmailReminderSentRequest()
            {
                Id = 1, ContractVersion = 1, ContractNumber = "Test1"
            };

            Mock.Get(_contractsDataLogger)
            .Setup(p => p.LogInformation(It.IsAny <string>(), It.IsAny <object[]>()));

            Mock.Get(_contractsDataLogger)
            .Setup(p => p.LogError(It.IsAny <Exception>(), It.IsAny <string>()));

            ContractsDataService contractsDataService = CreateContractsDataService();

            //Act
            Func <Task> act = async() => await contractsDataService.UpdateContractReminderAsync(request);

            // Assert
            act.Should().Throw <ApiGeneralException>().Where(e => e.ResponseStatusCode == HttpStatusCode.NotFound);
            _mockHttpMessageHandler.VerifyNoOutstandingExpectation();
            VerifyAllMocks();
        }
Пример #4
0
 /// <inheritdoc/>
 public async Task UpdateContractReminderAsync(UpdateLastEmailReminderSentRequest request)
 {
     _logger.LogInformation($"Updating LastEmailReminderSent and LastUpdatedAt.");
     await Patch($"/api/contractReminder", request);
 }
        public async Task UpdateLastEmailReminderSentAndLastUpdatedAtAsync_ReturnsExpectedResult_Test()
        {
            //Arrange
            SetMapperHelper();
            string       baseUrl        = $"https://localhost:5001";
            const string contractNumber = "main-000";
            const string title          = "Test Title";
            int          x = 0;

            var working = new List <DataModels.Contract>
            {
                new DataModels.Contract {
                    Id = 1, Title = title, ContractNumber = string.Empty, ContractVersion = 1, Ukprn = 12345678, LastEmailReminderSent = null
                }
            };

            var request = new UpdateLastEmailReminderSentRequest()
            {
                Id = 1, ContractNumber = "main-0001", ContractVersion = 1
            };

            foreach (var item in working)
            {
                item.ContractNumber        = $"{contractNumber}{x}";
                item.Ukprn                += x;
                item.LastEmailReminderSent = null;
                x += 1;
            }

            ILoggerAdapter <ContractService>    logger     = new LoggerAdapter <ContractService>(new Logger <ContractService>(new LoggerFactory()));
            ILoggerAdapter <ContractRepository> loggerRepo = new LoggerAdapter <ContractRepository>(new Logger <ContractRepository>(new LoggerFactory()));

            MockAuditService();

            var inMemPdsDbContext = HelperExtensions.GetInMemoryPdsDbContext();
            var repo         = new Repository <DataModels.Contract>(inMemPdsDbContext);
            var work         = new SingleUnitOfWorkForRepositories(inMemPdsDbContext);
            var contractRepo = new ContractRepository(repo, work, loggerRepo);
            var uriService   = new UriService(baseUrl);
            var asposeDocumentManagementContractService = GetDocumentService();
            var contractValidationService = GetContractValidationService();
            var mediator = BuildMediator();
            var contractDocumentService = BuildContractDocumentService();
            var service = new ContractService(contractRepo, _mapper, uriService, logger, _mockAuditService.Object, _semaphoreOnEntity, asposeDocumentManagementContractService, contractValidationService, mediator, contractDocumentService);

            foreach (var item in working)
            {
                await repo.AddAsync(item);
            }

            await work.CommitAsync();

            //Act
            var beforeUpdate = await contractRepo.GetAsync(request.Id);

            // assigning to a new variable before this is an in memory db so the
            // LastEmailReminderSent was being populated.
            var actualBeforeUpdate = new DataModels.Contract()
            {
                Id                    = beforeUpdate.Id,
                Title                 = beforeUpdate.Title,
                ContractNumber        = beforeUpdate.ContractNumber,
                ContractVersion       = beforeUpdate.ContractVersion,
                Ukprn                 = beforeUpdate.Ukprn,
                LastEmailReminderSent = beforeUpdate.LastEmailReminderSent
            };

            var contract = await service.UpdateLastEmailReminderSentAndLastUpdatedAtAsync(request);

            var afterUpdate = await contractRepo.GetAsync(request.Id);

            //Assert
            contract.Should().NotBeNull();
            actualBeforeUpdate.LastEmailReminderSent.Should().BeNull();
            afterUpdate.LastEmailReminderSent.Should().NotBeNull();
            afterUpdate.LastUpdatedAt.Should().BeExactly(afterUpdate.LastEmailReminderSent.Value.TimeOfDay);
        }
        /// <inheritdoc/>
        public async Task <Contract> UpdateLastEmailReminderSentAndLastUpdatedAtAsync(UpdateLastEmailReminderSentRequest request)
        {
            var contract = await _repository.UpdateLastEmailReminderSentAndLastUpdatedAtAsync(request.Id);

            return(_mapper.Map <Models.Contract>(contract));
        }