public void TestActualGenerationItemIfInRepeater()
        {
            MemoryStream output;

            using (var input = AssemblyResourceHelper.GetResourceStream(this, "FaultItemIf.docx"))
            {
                output = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "FaultItemIfData.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings()
                {
                    MissingDataMode = MissingDataMode.ThrowException
                });
            }

            var package = new DocxPackage(output);

            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;

            Console.WriteLine(documentPart);
            //Console.WriteLine(documentPart);
            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
            Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
        }
        public void TestActualGeneration()
        {
            var input = AssemblyResourceHelper.GetResourceStream(this, "DocxPackageTest.docx");

            using (input)
            {
                var          output      = new MemoryStream();
                var          generator   = new DocxGenerator();
                const string DynamicText = "My anaconda don't";
                generator.GenerateDocx(
                    input,
                    output,
                    new SomeEntityWrapper
                {
                    Test = new SomeEntity
                    {
                        Text = DynamicText
                    }
                });
                var package = new DocxPackage(output);
                package.Load();

                XDocument documentPartXml = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
                Assert.IsFalse(documentPartXml.Descendants(WordMl.SdtName).Any());
                Assert.IsNotNull(documentPartXml.Descendants(WordMl.TextRunName).Single(e => e.Value == DynamicText));
            }
        }
        public void TestActualGenerationItemRepeaterNestedDemoIRInParagraph()
        {
            MemoryStream output;

            using (var input = AssemblyResourceHelper.GetResourceStream(this, "ItemRepeaterNestedDemoIRParagraph.docx"))
            {
                output = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "ItemRepeaterNested2IRDemoData.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings()
                {
                    MissingDataMode = MissingDataMode.ThrowException
                });
            }

            var package = new DocxPackage(output);

            package.Load();

            var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;

            Console.WriteLine(documentPart.Descendants(WordMl.TableRowName).First(tr => tr.Descendants().Any(el => el.Value == "Certificate 1")));
            //Console.WriteLine(documentPart);
            Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
            Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
            Assert.IsFalse(documentPart.Descendants(WordMl.TableCellName).Elements(WordMl.ParagraphName).Any(el => el.Name.Equals(WordMl.TextRunName)));
        }
        public void TestActualGenerationItemHtmlContentInTable()
        {
            var input = AssemblyResourceHelper.GetResourceStream(this, "ItemHtmlContentInTable.docx");

            using (input)
            {
                var       output    = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "data.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings()
                {
                    MissingDataMode = MissingDataMode.Ignore
                });
                var package = new DocxPackage(output);
                package.Load();

                var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
                Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
                Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
            }
        }
        public void TestActualGenerationStaticTextAfterTag()
        {
            var input = AssemblyResourceHelper.GetResourceStream(this, "corruptedDocxx.docx");

            using (input)
            {
                var       output    = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "DemoData2.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data);

                var package = new DocxPackage(output);
                package.Load();
                var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
                Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
                Console.WriteLine(documentPart);
                Assert.IsTrue(documentPart.Root.Descendants(WordMl.TableCellName).All(element => element.Elements().All(el => el.Name != WordMl.TextRunName)));
            }
        }
        private void InitializeStubbedExecution()
        {
            this.docxPackageMock = new Mock <DocxPackage>();
            this.docxPackageMock.Setup(p => p.Load()).Verifiable();
            this.docxPackageMock.Setup(p => p.Save()).Verifiable();

            this.docxPackagePartMock = new Mock <DocxPackagePart>();
            var document = new XDocument();

            this.root = document.Root;

            this.docxPackagePartMock.SetupGet(p => p.PartXml).Returns(document);
            this.docxPackagePartMock.Setup(p => p.Save()).Verifiable();

            var packageParts = new List <DocxPackagePart> {
                this.docxPackagePartMock.Object
            };

            this.docxPackageMock.SetupGet(x => x.Parts).Returns(packageParts);

            var packageFactoryMock = new Mock <IDocxPackageFactory>();

            packageFactoryMock.Setup(f => f.Create(It.IsAny <Stream>())).Returns(this.docxPackageMock.Object);

            this.processorMock = new Mock <AbstractProcessor>();
            this.processorMock.Setup(p => p.Process()).Verifiable();
            this.processorMock.SetupSet(processor => processor.DataReader = It.IsAny <DataReader>()).Verifiable();
            var processorFactoryMock = new Mock <IProcessorFactory>();

            processorFactoryMock.Setup(f => f.Create()).Returns(this.processorMock.Object);

            this.parserMock = new Mock <ITagParser>();
            var parserFactoryMock = new Mock <IParserFactory>();

            parserFactoryMock.Setup(f => f.Create()).Returns(this.parserMock.Object);

            this.stringDataReaderMock   = new Mock <DataReader>();
            this.entityDataReaderMock   = new Mock <DataReader>();
            this.documentDataReaderMock = new Mock <DataReader>();
            var dataReaderFactoryMock = new Mock <IDataReaderFactory>();

            dataReaderFactoryMock.Setup(f => f.CreateReader(It.IsAny <string>())).Returns(this.stringDataReaderMock.Object);
            dataReaderFactoryMock.Setup(f => f.CreateReader(It.IsAny <A>())).Returns(this.entityDataReaderMock.Object);
            dataReaderFactoryMock.Setup(f => f.CreateReader(It.IsAny <XDocument>())).Returns(this.documentDataReaderMock.Object);

            this.docxGenerator = new DocxGenerator
            {
                DataReaderFactory = dataReaderFactoryMock.Object,
                PackageFactory    = packageFactoryMock.Object,
                ParserFactory     = parserFactoryMock.Object,
                ProcessorFactory  = processorFactoryMock.Object
            };

            this.templateStream = AssemblyResourceHelper.GetResourceStream(this, "DocxPackageTest.docx");
            this.outputStream   = new MemoryStream();
        }
        public void TestActualXDocumentGenerationHTMLLat1Content()
        {
            const string htmlContentText = @"
                &lt;html&gt;
		        &lt;head /&gt;
		        &lt;body&gt;
		        &lt;p&gt; Text is  &laquo;gfdgfdg &lt;/p&gt;
		        &lt;/body&gt;
		        &lt;/html&gt;
            ";
            var          input           = AssemblyResourceHelper.GetResourceStream(this, "HTMLLat1Content.docx");

            using (input)
            {
                var output    = new MemoryStream();
                var generator = new DocxGenerator();

                var data = new XDocument();
                data.Add(
                    new XElement("test", new XElement(
                                     "hypertext", htmlContentText
                                     )
                                 )
                    );

                generator.GenerateDocx(
                    input,
                    output,
                    data, new DocxGeneratorSettings()
                {
                    MissingDataMode = MissingDataMode.ThrowException
                });
                var package = new DocxPackage(output);
                package.Load();

                using (var fileStream = File.Create("C:\\xdochtmlcontent.docx"))
                {
                    output.Seek(0, SeekOrigin.Begin);
                    output.CopyTo(fileStream);
                }

                var documentPart = package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml;
                Console.WriteLine(documentPart);
                Assert.IsFalse(documentPart.Descendants(WordMl.SdtName).Any());
                Assert.IsFalse(documentPart.Descendants(WordMl.ParagraphName).Descendants().Any(el => el.Name == WordMl.ParagraphName));
            }
        }
        public void TestActualGenerationRepeaterInIf()
        {
            var input = AssemblyResourceHelper.GetResourceStream(this, "RepeaterInIf.docx");

            using (input)
            {
                var       output    = new MemoryStream();
                var       generator = new DocxGenerator();
                XDocument data;
                using (var dataStream = AssemblyResourceHelper.GetResourceStream(this, "dataRepeaterInIf.xml"))
                {
                    data = XDocument.Load(dataStream);
                }
                generator.GenerateDocx(
                    input,
                    output,
                    data);
                var package = new DocxPackage(output);
                package.Load();

                Assert.IsFalse(package.Parts.Single(p => p.PartUri.OriginalString.Contains("document.xml")).PartXml.Descendants(WordMl.SdtName).Any());
            }
        }