public void Execute_WhenValidInputTo_ShouldRespondWithPdfContentType()
        {
            //---------------Arrange-------------------
            var input = new RenderWordInput {
                JsonModel = "{}", ReportName = "Test.docx", TemplateName = "Test"
            };
            var reportResult = new RenderedDocumentOutput {
                Base64String = "", ContentType = ContentTypes.Word
            };
            var pdfResult = new RenderedDocumentOutput {
                Base64String = "", ContentType = ContentTypes.Pdf
            };

            var presenter = new PropertyPresenter <IFileOutput, ErrorOutput>();

            var reportGateway = Create_Report_Gateway(reportResult);
            var pdfGateway    = Create_Pdf_Gateway(pdfResult);

            var wordUsecase = new RenderWordUseCase(reportGateway);
            var pdfUsecase  = new RenderWordToPdfUseCase(pdfGateway);
            var sut         = new RenderAsWordThenPdfUseCase(wordUsecase, pdfUsecase);

            //---------------Act-----------------------
            sut.Execute(input, presenter);
            //---------------Assert--------------------
            Assert.Equal("application/pdf", presenter.SuccessContent.ContentType);
        }
        private static IReportGateway Create_Report_Gateway(RenderedDocumentOutput gatewayResult)
        {
            var gateway = Substitute.For <IReportGateway>();

            gateway.CreateWordReport(Arg.Any <RenderWordInput>()).Returns(gatewayResult);
            return(gateway);
        }
        private RenderedDocumentOutput ReturnInvalidReportTemplatePathError(string templatePath)
        {
            var result = new RenderedDocumentOutput();

            result.ErrorMessages.Add($"Invalid Report Template [{templatePath}]");
            return(result);
        }
예제 #4
0
        private RenderedDocumentOutput ReturnErrors(PropertyPresenter <string, ErrorOutput> presenter)
        {
            var result = new RenderedDocumentOutput();

            result.ErrorMessages.AddRange(presenter.ErrorContent.Errors);
            return(result);
        }
예제 #5
0
        private static IPdfGateway Create_Report_Gateway(RenderedDocumentOutput gatewayResult)
        {
            var gateway = Substitute.For <IPdfGateway>();

            gateway.ConvertToPdf(Arg.Any <RenderPdfInput>()).Returns(gatewayResult);
            return(gateway);
        }
        private void Respond_With_File(RenderWordInput inputTo,
                                       IRespondWithSuccessOrError <IFileOutput, ErrorOutput> presenter,
                                       RenderedDocumentOutput result)
        {
            var reportMessage = new WordFileOutput(inputTo.ReportName, result.FetchDocumentAsByteArray());

            presenter.Respond(reportMessage);
        }
        private void Respond_With_Errors(IRespondWithSuccessOrError <IFileOutput, ErrorOutput> presenter,
                                         RenderedDocumentOutput output)
        {
            var errorOutput = new ErrorOutput();

            errorOutput.AddErrors(output.ErrorMessages);
            presenter.Respond(errorOutput);
        }
예제 #8
0
        public void HasErrors_WhenNoErrors_ShouldReturnFalse()
        {
            //---------------Arrange------------------
            //---------------Act----------------------
            var renderedDocumentOutput = new RenderedDocumentOutput();

            //---------------Assert-------------------
            Assert.False(renderedDocumentOutput.HasErrors());
        }
예제 #9
0
        public void FetchDocumetnAsByteArray_WhenNullBase64String_ShouldReturnEmptyByteArray()
        {
            //---------------Arrange------------------
            var renderedDocumentOutput = new RenderedDocumentOutput();

            //---------------Act----------------------
            //---------------Assert-------------------
            Assert.Empty(renderedDocumentOutput.FetchDocumentAsByteArray());
        }
예제 #10
0
        public void Ctor_ShouldInitializeErrorList()
        {
            //---------------Arrange------------------
            //---------------Act----------------------
            var renderedDocumentOutput = new RenderedDocumentOutput();

            //---------------Assert-------------------
            Assert.NotNull(renderedDocumentOutput.ErrorMessages);
        }
예제 #11
0
 private RenderedDocumentOutput ReturnPdf(string reportPath)
 {
     var filePath = reportPath.Replace(".xlsx", ".csv");
     var result = new RenderedDocumentOutput
     {
         Base64String = Convert.ToBase64String(File.ReadAllBytes(filePath)),
         ContentType = ContentTypes.Pdf
     };
     return result;
 }
예제 #12
0
        public void HasErrors_Errors_ShouldReturnTrue()
        {
            //---------------Arrange------------------
            var renderedDocumentOutput = new RenderedDocumentOutput();

            //---------------Act----------------------
            renderedDocumentOutput.ErrorMessages.Add("error 1");
            //---------------Assert-------------------
            Assert.True(renderedDocumentOutput.HasErrors());
        }
예제 #13
0
        private RenderedDocumentOutput ReturnPdf(string reportPath)
        {
            var pdfPath = reportPath.Replace(".docx", ".pdf");
            var result  = new RenderedDocumentOutput
            {
                Base64String = Convert.ToBase64String(File.ReadAllBytes(pdfPath)),
                ContentType  = ContentTypes.Pdf
            };

            return(result);
        }
예제 #14
0
        public void FetchDocumetnAsByteArray_WhenValidBase64String_ShouldReturnByteArray()
        {
            //---------------Arrange------------------
            var renderedDocumentOutput = new RenderedDocumentOutput
            {
                //---------------Act----------------------
                Base64String = "R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
            };

            //---------------Assert-------------------
            Assert.NotEmpty(renderedDocumentOutput.FetchDocumentAsByteArray());
        }
예제 #15
0
        public void Execute_WhenValidInputTo_ShouldRespondWithPdfContentType()
        {
            //---------------Arrange-------------------
            var gatewayResult = new RenderedDocumentOutput {
                Base64String = "eA=="
            };
            var pdfGateway = Create_Report_Gateway(gatewayResult);

            var input = new RenderPdfInput {
                Base64DocxReport = "cHVzc3k=", FileName = "report.docx"
            };
            var presenter = new PropertyPresenter <IFileOutput, ErrorOutput>();

            var usecase = new RenderWordToPdfUseCase(pdfGateway);

            //---------------Act----------------------
            usecase.Execute(input, presenter);
            //---------------Assert-----------------------
            Assert.Equal("application/pdf", presenter.SuccessContent.ContentType);
        }
예제 #16
0
        public void Execute_WhenRenderErrors_ShouldRespondWithErrors()
        {
            //---------------Arrange-------------------
            var gatewayResult = new RenderedDocumentOutput {
                ErrorMessages = new List <string> {
                    "error"
                }
            };
            var pdfGateway = Create_Report_Gateway(gatewayResult);

            var input = new RenderPdfInput {
                Base64DocxReport = "cHVzc3k=", FileName = "report.docx"
            };
            var presenter = new PropertyPresenter <IFileOutput, ErrorOutput>();

            var usecase = new RenderWordToPdfUseCase(pdfGateway);

            //---------------Act----------------------
            usecase.Execute(input, presenter);
            //---------------Assert-----------------------
            Assert.True(presenter.IsErrorResponse());
        }
        public void Execute_WhenValidInputTo_ShouldRespondWithWordContentType()
        {
            //---------------Arrange-------------------
            var gatewayResult = new RenderedDocumentOutput {
                Base64String = "eA=="
            };
            var gateway = Create_Report_Gateway(gatewayResult);

            var input = new RenderWordInput {
                JsonModel = "", ReportName = "Test.docx", TemplateName = "Test"
            };
            var presenter = new PropertyPresenter <IFileOutput, ErrorOutput>();

            var usecase = new RenderWordUseCase(gateway);

            //---------------Act----------------------
            usecase.Execute(input, presenter);
            //---------------Assert-----------------------
            var expected = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";

            Assert.Equal(expected, presenter.SuccessContent.ContentType);
        }
        public void Execute_WhenRenderErrors_ShouldRespondWithErrors()
        {
            //---------------Arrange-------------------
            var gatewayResult = new RenderedDocumentOutput {
                ErrorMessages = new List <string> {
                    "error"
                }
            };
            var gateway = Create_Report_Gateway(gatewayResult);

            var input = new RenderWordInput {
                JsonModel = "", ReportName = "Test.docx", TemplateName = "Test"
            };
            var presenter = new PropertyPresenter <IFileOutput, ErrorOutput>();

            var usecase = new RenderWordUseCase(gateway);

            //---------------Act----------------------
            usecase.Execute(input, presenter);
            //---------------Assert-----------------------
            Assert.True(presenter.IsErrorResponse());
        }
 private bool Render_Errors(RenderedDocumentOutput output)
 {
     return(output.HasErrors());
 }
 private void Respond_With_Pdf(RenderPdfInput inputTo,
                               IRespondWithSuccessOrError <IFileOutput, ErrorOutput> presenter,
                               RenderedDocumentOutput output)
 {
     presenter.Respond(new PdfFileOutput(inputTo.FileName, output.FetchDocumentAsByteArray()));
 }