/// <summary>
        /// Create builder for template
        /// </summary>
        /// <param name="docxDocument">Template document</param>
        /// <param name="tagVisibilityOptions">List of tags for show and hide</param>
        public DocxDocumentBuilder(DocxDocument docxDocument, TagVisibilityOptions tagVisibilityOptions = null)
            : base(docxDocument.GetWordDocument())
        {
            this.docxDocument = docxDocument;
            this.tagVisibilityOptions = tagVisibilityOptions;

            MergeVanishedRuns();
        }
        public void TagGettingWhichNotExistsReturnsEmpty()
        {
            using (var document = new DocxDocument(Resources.WithMainContentTag))
            {
                var tags = DocumentTag.Get(document.GetWordDocument(), "NON_EXISTING");

                Assert.Empty(tags);
            }
        }
        public void PlaceholderGettingWhichNotExistsReturnsEmpty()
        {
            using (var document = new DocxDocument(Resources.WithMainContentTag))
            {
                var placeholders = DocumentPlaceholder.Get(document.GetWordDocument(), "NON_EXISTING");

                Assert.Empty(placeholders);
            }
        }
        public void ManyTagsGettingFromDocumentCorrect()
        {
            using (var document = new DocxDocument(Resources.WithManyTags))
            {
                var tags = DocumentTag.Get(document.GetWordDocument(), "SUB");

                Assert.NotNull(tags);
                Assert.Equal(3, tags.Count());
            }
        }
        public void ManyPlaceholdersGettingFromDocumentCorrect()
        {
            using (var document = new DocxDocument(Resources.WithManyPlaceholders))
            {
                var placeholders = DocumentPlaceholder.Get(document.GetWordDocument(), "INNER");

                Assert.NotNull(placeholders);
                Assert.Equal(3, placeholders.Count());
            }
        }
 private static ICollection<Paragraph> GetParagraphs(DocxDocument document)
 {
     return document.GetWordDocument().MainDocumentPart.Document.Descendants().OfType<Paragraph>().ToArray();
 }
 public void UnprotectRemovesWrightProtectionFromFile()
 {
     using (var @protected = new DocxDocument(Resources.Protected))
     using (var @unprotected = new DocxDocument(Resources.Unprotected))
     {
         @protected.Unprotect();
         Assert.Equal(@unprotected.GetWordDocument().MainDocumentPart.DocumentSettingsPart.Settings.OuterXml, @protected.GetWordDocument().MainDocumentPart.DocumentSettingsPart.Settings.OuterXml, StringComparer.InvariantCultureIgnoreCase);
     }
 }
        public void SetCustomPropertyToDocumentIfItAlreadyHasProperties()
        {
            using (var withTwoAttributes = new DocxDocument(Resources.DocumentWithTwoAttributes))
            using (var withAttribute = new DocxDocument(Resources.DocumentWithAttribute))
            {
                withAttribute.SetCustomProperty("customAttributes2", "Working2");

                DocumentFormat.OpenXml.CustomProperties.Properties propertiesWithTwoAttributes = withTwoAttributes.GetWordDocument().CustomFilePropertiesPart.Properties;
                DocumentFormat.OpenXml.CustomProperties.Properties propertiesWithAttribute = withAttribute.GetWordDocument().CustomFilePropertiesPart.Properties;

                Assert.Equal(propertiesWithTwoAttributes.First(x => x.LocalName == "property").OuterXml,
                             propertiesWithAttribute.First(x => x.LocalName == "property").OuterXml);
                Assert.Equal(propertiesWithTwoAttributes.Last(x => x.LocalName == "property").OuterXml,
                             propertiesWithAttribute.Last(x => x.LocalName == "property").OuterXml);
            }
        }
        public void SetCustomPropertyToDocument()
        {
            using (var withoutAttributes = new DocxDocument(Resources.DocumentWithoutAttributes))
            using (var withAttribute = new DocxDocument(Resources.DocumentWithAttribute))
            {
                withoutAttributes.SetCustomProperty("customAttributes", "Working");

                var withoutAttributesOuterXml = withoutAttributes.GetWordDocument().CustomFilePropertiesPart.Properties.Single(x => x.LocalName == "property").OuterXml;
                var withAttributeOuterXml = withAttribute.GetWordDocument().CustomFilePropertiesPart.Properties.Single(x => x.LocalName == "property").OuterXml;
                Assert.Equal(withAttributeOuterXml, withoutAttributesOuterXml);
            }
        }
        public void ProtectAddWrightProtectionToFile()
        {
            using (var @protected = new DocxDocument(Resources.Protected))
            using (var @unprotected = new DocxDocument(Resources.Unprotected))
            {
                @unprotected.Protect();

                Assert.Equal(@protected.GetWordDocument().MainDocumentPart.DocumentSettingsPart.Settings.OuterXml, @unprotected.GetWordDocument().MainDocumentPart.DocumentSettingsPart.Settings.OuterXml);
            }
        }