public void ProcessMessage_Approved_ReturnsLogAndExitResult(ContractParentStatus parentStatus, ContractStatus contractStatus, ContractAmendmentType amendmentType)
        {
            // Arrange
            var dummyContractEvent = GetContractEvent(parentStatus, contractStatus, amendmentType);
            var dummyContract      = default(Contract);

            Mock.Get(_mockContractServiceLogger)
            .Setup(l => l.LogInformation(It.IsAny <string>()));
            Mock.Get(_mockContractServiceLogger)
            .Setup(l => l.LogWarning(It.IsAny <string>()));

            Mock.Get(_mockContractApprovalService)
            .Setup(s => s.ApproveAsync(It.IsAny <ContractEvent>(), It.IsAny <Contract>()))
            .ReturnsAsync(true)
            .Verifiable();

            Mock.Get(_mockContractsDataService)
            .Setup(s => s.TryGetContractAsync(It.IsAny <string>(), It.IsAny <int>()))
            .ReturnsAsync(dummyContract)
            .Verifiable();

            var contractService = new ContractService(_mockContractServiceLogger, _mockContractsDataService, _mockContractApprovalService, _mockContractsWithdrawService, _mockContractCreationService);

            // Act
            contractService.ProcessMessage(dummyContractEvent).GetAwaiter().GetResult();

            // Assert
            Mock.Get(_mockContractsDataService)
            .Verify(s => s.TryGetContractAsync(It.IsAny <string>(), It.IsAny <int>()), Times.Once);
            Mock.Get(_mockContractApprovalService)
            .Verify(s => s.ApproveAsync(It.IsAny <ContractEvent>(), It.IsAny <Contract>()), Times.Never);
            Mock.Get(_mockContractServiceLogger).VerifyAll();
        }
        public void ProcessMessage_WhenWithdrawEventType_RequestsWithdrawl(ContractParentStatus parentStatus, ContractStatus contractStatus, ContractAmendmentType amendmentType)
        {
            // Arrange
            var dummyContractEvent = GetContractEvent(parentStatus, contractStatus, amendmentType);

            Mock.Get(_mockContractServiceLogger)
            .Setup(l => l.LogInformation(It.IsAny <string>()));

            Mock.Get(_mockContractsWithdrawService)
            .Setup(s => s.WithdrawAsync(It.IsAny <ContractEvent>()))
            .ReturnsAsync(true)
            .Verifiable();

            var contractService = new ContractService(_mockContractServiceLogger, _mockContractsDataService, _mockContractApprovalService, _mockContractsWithdrawService, _mockContractCreationService);

            // Act
            Func <Task> act = async() => await contractService.ProcessMessage(dummyContractEvent);

            // Assert
            act.Should().NotThrow();

            Mock.Get(_mockContractsWithdrawService)
            .Verify(s => s.WithdrawAsync(It.IsAny <ContractEvent>()), Times.Once);
            Mock.Get(_mockContractServiceLogger).VerifyAll();
            Mock.Get(_mockContractApprovalService).VerifyAll();
            Mock.Get(_mockContractsDataService).VerifyAll();
        }
        public void ProcessMessage_ThrowsException(ContractParentStatus parentStatus, ContractStatus contractStatus, ContractAmendmentType amendmentType)
        {
            // Arrange
            var dummyContractEvent = GetContractEvent(parentStatus, contractStatus, amendmentType);

            Mock.Get(_mockContractServiceLogger)
            .Setup(l => l.LogInformation(It.IsAny <string>()));

            Mock.Get(_mockContractApprovalService)
            .Setup(s => s.ApproveAsync(It.IsAny <ContractEvent>(), It.IsAny <Contract>()))
            .Returns(It.IsAny <Task <bool> >())
            .Verifiable();

            Mock.Get(_mockContractsWithdrawService)
            .Setup(s => s.WithdrawAsync(It.IsAny <ContractEvent>()))
            .Returns(It.IsAny <Task <bool> >())
            .Verifiable();

            // Act
            var         contractService = new ContractService(_mockContractServiceLogger, _mockContractsDataService, _mockContractApprovalService, _mockContractsWithdrawService, _mockContractCreationService);
            Func <Task> act             = async() => await contractService.ProcessMessage(dummyContractEvent);

            // Assert
            act.Should().Throw <NotImplementedException>();
            Mock.Get(_mockContractServiceLogger).VerifyAll();
        }
Пример #4
0
 private ContractEvent GetContractEvent(ContractParentStatus parentStatus, ContractStatus contractStatus, ContractAmendmentType amendmentType)
 {
     return(new ContractEvent()
     {
         ParentStatus = parentStatus,
         Status = contractStatus,
         AmendmentType = amendmentType,
         ContractNumber = "ABC-0000",
         ContractVersion = 1,
         ContractEventXml = "sample-blob-file.xml"
     });
 }
Пример #5
0
        public void ManualApprove_ExpectedResult_Test(ContractParentStatus parentStatus, ContractStatus contractStatus, ContractAmendmentType amendmentType)
        {
            // Arrange
            MockContractsDataService_ConfirmApprovalAsync();
            MockContractsDataService_ManualApprovalAsync();

            var contractEvent = GetContractEvent(parentStatus, contractStatus, amendmentType);
            var contract      = GetClientContract();

            contract.Status = ClientData.Enumerations.ContractStatus.PublishedToProvider;
            var service = new ContractApprovalService(_mockContractApprovalServiceLogger, _mockContractsDataService);

            // Act
            service.ApproveAsync(contractEvent, contract).GetAwaiter().GetResult();

            // Assert
            Mock.Get(_mockContractApprovalServiceLogger).VerifyAll();
        }
Пример #6
0
        public void Withdraw_ExpectedResult_Test(ContractParentStatus parentStatus, ContractStatus contractStatus, ContractAmendmentType amendmentType)
        {
            //Arrange
            MockContractsDataService_WithdrawAsync();
            var contractEvent = GetContractEvent(parentStatus, contractStatus, amendmentType);
            var contract      = GetClientContract();

            contract.Status = ClientData.Enumerations.ContractStatus.ApprovedWaitingConfirmation;
            var service = new ContractWithdrawService(_mockContractWithdrawServiceLogger, _mockContractsDataService);

            //Act
            service.WithdrawAsync(contractEvent).GetAwaiter().GetResult();

            //Assert
            Mock.Get(_mockContractsDataService)
            .Verify(d => d.WithdrawAsync(It.IsAny <ClientData.Models.WithdrawalRequest>()), Times.Once);
            Mock.Get(_mockContractWithdrawServiceLogger).VerifyAll();
        }
        public async Task Deserilize_PartialXML_ValidateParentContractEnum_ReturnsExpectedResult(string parentStatus, ContractParentStatus expectedParentStatus)
        {
            // Arrange
            string xml      = LoadPartialXMLFile();
            var    document = new XmlDocument();

            document.LoadXml(xml);

            var ns = new XmlNamespaceManager(new NameTable());

            ns.AddNamespace("c", Deserializer_v1103._contractEvent_Namespace);

            document.SelectSingleNode("/content/c:contract/c:contracts/c:contract/c:contractStatus/c:parentStatus", ns).InnerText = parentStatus;

            ILoggerAdapter_SetupLogInformation();
            IContractValidationService_Setup_ValidateContractStatus();
            IContractValidationService_Setup_ValidateFundingType();
            IContractValidationService_Setup_ValidateXmlWithSchema(document);

            var expected = GeneratePocoForESIF9999(document);

            expected.First().ContractEvent.ParentStatus = expectedParentStatus;

            var sut = GetDeserializer();

            // Act
            var actual = await sut.DeserializeAsync(xml);

            // Assert
            actual.Should().BeEquivalentTo(expected, "Because the input XML has all required fields.");
            Verify_All();
        }