public void Test_PrintController_QueueCancelPendingPrint_MultipleEndorsements_Successful(string printJobName, string activityTypeCode)
        {
            // arrange
            var mockPrintJobService = new Mock <IPrintJobService>();
            var mockLogger          = new Mock <IMessageLogger>();

            mockPrintJobService
            .Setup(p => p.PostPrintJobRequest("A123456", "00", "3", printJobName, "addlData", "58f31946b12b441892cd798973aab87e"))
            .Returns(Task.FromResult <string>("result"));
            mockPrintJobService
            .Setup(p => p.GetPolicyTransactions("A123456", "58f31946b12b441892cd798973aab87e"))
            .Returns(Task.FromResult <string>(this.transactionStatusMultipleEndorsements.ToString()));
            var printController = new PrintController(mockPrintJobService.Object, mockLogger.Object);
            var messageState    = new BillingMessageState
            {
                ActivityTypeCode          = activityTypeCode,
                PolicyNumber              = "A123456",
                PolicyVersion             = "00",
                TransactionSequenceNumber = 1,
                AdditionalData            = "addlData"
            };

            // act
            string result = printController.QueueCancelPendingPrint(messageState).Result;

            // assert
            mockPrintJobService.VerifyAll();
            mockLogger.VerifyAll();

            result.ShouldNotBeNull();
            result.ShouldEqual("result");
        }
        public void Test_PrintController_QueueCancelPendingPrint_InvalidXml()
        {
            // arrange
            bool caughtException     = false;
            var  mockPrintJobService = new Mock <IPrintJobService>();
            var  mockLogger          = new Mock <IMessageLogger>();

            mockPrintJobService
            .Setup(p => p.GetPolicyTransactions("A123456", "58f31946b12b441892cd798973aab87e"))
            .Returns(Task.FromResult <string>("invalid xml"));
            var printController = new PrintController(mockPrintJobService.Object, mockLogger.Object);
            var messageState    = new BillingMessageState
            {
                PolicyNumber              = "A123456",
                PolicyVersion             = "00",
                TransactionSequenceNumber = 1,
                AdditionalData            = "addlData"
            };

            // act
            try
            {
                string result = printController.QueueCancelPendingPrint(messageState).Result;
            }
            catch (XmlException)
            {
                caughtException = true;
            }

            // assert
            caughtException.ShouldBeTrue();
            mockPrintJobService.VerifyAll();
            mockLogger.VerifyAll();
        }
        internal Task <string> QueueCancelPendingPrint(BillingMessageState instance)
        {
            var transactionSequenceNumber = this.GetPolicyTransactionSequenceNumber(instance.PolicyNumber, instance.PolicyVersion);

            var printJobName = string.Empty;

            if (instance.ActivityTypeCode == Constants.TransactionType.PENDINGCANCEL)
            {
                printJobName = Constants.PrintJobNames.CANCELPENDING;
            }

            if (instance.ActivityTypeCode == Constants.BillingActivityTypeCodes.RESCINDPCN)
            {
                printJobName = Constants.PrintJobNames.RESCINDCANCELPENDING;
            }

            return(this.printJobService.PostPrintJobRequest(instance.PolicyNumber, instance.PolicyVersion, transactionSequenceNumber, printJobName, instance.AdditionalData, this.ApimSubscriptionKey));
        }