public void WC002_Consolidate_Bulk_Test(string testId, string name1, string name2) { var sourceDir = new DirectoryInfo("../../../../TestFiles/"); var source1Docx = new FileInfo(Path.Combine(sourceDir.FullName, name1)); var source2Docx = new FileInfo(Path.Combine(sourceDir.FullName, name2)); var rootTempDir = TestUtil.TempDir; var thisTestTempDir = new DirectoryInfo(Path.Combine(rootTempDir.FullName, testId)); if (thisTestTempDir.Exists) { Assert.True(false, "Duplicate test id: " + testId); } else { thisTestTempDir.Create(); } var source1CopiedToDestDocx = new FileInfo(Path.Combine(thisTestTempDir.FullName, source1Docx.Name)); var source2CopiedToDestDocx = new FileInfo(Path.Combine(thisTestTempDir.FullName, source2Docx.Name)); if (!source1CopiedToDestDocx.Exists) { var wml1 = new WmlDocument(source1Docx.FullName); var wml2 = WordprocessingMLUtil.BreakLinkToTemplate(wml1); wml2.SaveAs(source1CopiedToDestDocx.FullName); } if (!source2CopiedToDestDocx.Exists) { var wml1 = new WmlDocument(source2Docx.FullName); var wml2 = WordprocessingMLUtil.BreakLinkToTemplate(wml1); wml2.SaveAs(source2CopiedToDestDocx.FullName); } var before = source1CopiedToDestDocx.Name.Replace(".docx", ""); var after = source2CopiedToDestDocx.Name.Replace(".docx", ""); var docxWithRevisionsFi = new FileInfo(Path.Combine(thisTestTempDir.FullName, before + "-COMPARE-" + after + ".docx")); var docxConsolidatedFi = new FileInfo(Path.Combine(thisTestTempDir.FullName, before + "-CONSOLIDATED-" + after + ".docx")); var source1Wml = new WmlDocument(source1CopiedToDestDocx.FullName); var source2Wml = new WmlDocument(source2CopiedToDestDocx.FullName); var settings = new WmlComparerSettings(); var comparedWml = OpenXmlPowerTools.WmlComparer.WmlComparer.Compare(source1Wml, source2Wml, settings); WordprocessingMLUtil.BreakLinkToTemplate(comparedWml).SaveAs(docxWithRevisionsFi.FullName); var revisedDocInfo = new List <WmlRevisedDocumentInfo>() { new WmlRevisedDocumentInfo() { RevisedDocument = source2Wml, Color = Color.LightBlue, Revisor = "Revised by Eric White", } }; var consolidatedWml = OpenXmlPowerTools.WmlComparer.WmlComparer.Consolidate( source1Wml, revisedDocInfo, settings); WordprocessingMLUtil.BreakLinkToTemplate(consolidatedWml).SaveAs(docxConsolidatedFi.FullName); var validationErrors = ""; using (var ms = new MemoryStream()) { ms.Write(consolidatedWml.DocumentByteArray, 0, consolidatedWml.DocumentByteArray.Length); using var wDoc = WordprocessingDocument.Open(ms, true); var validator = new OpenXmlValidator(); var errors = validator.Validate(wDoc).Where(e => !ExpectedErrors.Contains(e.Description)); if (errors.Any()) { var ind = " "; var sb = new StringBuilder(); foreach (var err in errors) { sb.Append("Error" + Environment.NewLine); sb.Append(ind + "ErrorType: " + err.ErrorType.ToString() + Environment.NewLine); sb.Append(ind + "Description: " + err.Description + Environment.NewLine); sb.Append(ind + "Part: " + err.Part.Uri.ToString() + Environment.NewLine); sb.Append(ind + "XPath: " + err.Path.XPath + Environment.NewLine); } validationErrors = sb.ToString(); } } if (!string.IsNullOrEmpty(validationErrors)) { Assert.True(false, validationErrors); } }
public void WC001_Consolidate(string testId, string originalName, string revisedDocumentsXml) { var sourceDir = new DirectoryInfo("../../../../TestFiles/"); var originalDocx = new FileInfo(Path.Combine(sourceDir.FullName, originalName)); var rootTempDir = TestUtil.TempDir; var thisTestTempDir = new DirectoryInfo(Path.Combine(rootTempDir.FullName, testId)); if (thisTestTempDir.Exists) { Assert.True(false, "Duplicate test id: " + testId); } else { thisTestTempDir.Create(); } var originalCopiedToDestDocx = new FileInfo(Path.Combine(thisTestTempDir.FullName, originalDocx.Name)); if (!originalCopiedToDestDocx.Exists) { var wml1 = new WmlDocument(originalDocx.FullName); var wml2 = WordprocessingMLUtil.BreakLinkToTemplate(wml1); wml2.SaveAs(originalCopiedToDestDocx.FullName); } var revisedDocumentsXElement = XElement.Parse(revisedDocumentsXml); var revisedDocumentsArray = revisedDocumentsXElement .Elements() .Select(z => { var revisedDocx = new FileInfo(Path.Combine(sourceDir.FullName, z.Element("DocName").Value)); var revisedCopiedToDestDocx = new FileInfo(Path.Combine(thisTestTempDir.FullName, revisedDocx.Name)); var wml1 = new WmlDocument(revisedDocx.FullName); var wml2 = WordprocessingMLUtil.BreakLinkToTemplate(wml1); wml2.SaveAs(revisedCopiedToDestDocx.FullName); return(new WmlRevisedDocumentInfo() { RevisedDocument = new WmlDocument(revisedCopiedToDestDocx.FullName), Color = ColorParser.FromName(z.Element("Color")?.Value), Revisor = z.Element("Revisor")?.Value, }); }) .ToList(); var consolidatedDocxName = originalCopiedToDestDocx.Name.Replace(".docx", "-Consolidated.docx"); var consolidatedDocumentFi = new FileInfo(Path.Combine(thisTestTempDir.FullName, consolidatedDocxName)); var source1Wml = new WmlDocument(originalCopiedToDestDocx.FullName); var settings = new WmlComparerSettings { DebugTempFileDi = thisTestTempDir }; var consolidatedWml = OpenXmlPowerTools.WmlComparer.WmlComparer.Consolidate( source1Wml, revisedDocumentsArray, settings); var wml3 = WordprocessingMLUtil.BreakLinkToTemplate(consolidatedWml); wml3.SaveAs(consolidatedDocumentFi.FullName); var validationErrors = ""; using (var ms = new MemoryStream()) { ms.Write(consolidatedWml.DocumentByteArray, 0, consolidatedWml.DocumentByteArray.Length); using var wDoc = WordprocessingDocument.Open(ms, true); var validator = new OpenXmlValidator(); var errors = validator.Validate(wDoc).Where(e => !ExpectedErrors.Contains(e.Description)); if (errors.Any()) { var ind = " "; var sb = new StringBuilder(); foreach (var err in errors) { sb.Append("Error" + Environment.NewLine); sb.Append(ind + "ErrorType: " + err.ErrorType.ToString() + Environment.NewLine); sb.Append(ind + "Description: " + err.Description + Environment.NewLine); sb.Append(ind + "Part: " + err.Part.Uri.ToString() + Environment.NewLine); sb.Append(ind + "XPath: " + err.Path.XPath + Environment.NewLine); } validationErrors = sb.ToString(); } } /************************************************************************************************************************/ if (validationErrors != "") { Assert.True(false, validationErrors); } }