public void AdjustConflictHtml_ReplacesDatabaseCurrent() { const string input = @"<root>silfw://localhost/link?app=flex&database=current&server=&tool=default&guid=7b3a3472-7730-474e-b3d2-06779fd751e8&tag=&label=Uni</root>"; var strategy = new ViewNotesActionHandler { ProjectName = "MyProject" }; var result = strategy.AdjustConflictHtml(input); Assert.That(result, Is.EqualTo(@"<root>silfw://localhost/link?app=flex&database=MyProject&server=&tool=default&guid=7b3a3472-7730-474e-b3d2-06779fd751e8&tag=&label=Uni</root>")); }
public void AdjustConflictHtml_ReplacesWsRuns() { // Input contains: // Two strings that will be replaced (verifies we can do more than one substitution correctly) // One for which input file is missing. // One for which replacement is unchanged (verifies we don't get into infinite replace loop). // One where the wsID is further wrapped in conflict-marker span // Special case for Zxxx var input = @"<root>some irrelevant <span class='ws'>en-Zxxx-x-audio</span> stuff <span class='ws'><span style='background: Yellow'>en-fonipa</span></span> more <span class='ws'>en</span>irrelevant <span class='ws'>en-trash</span> stuff.<span class='ws'>es-fonipa</span></root>".Replace("'", "\""); var ldmlContent1 = @"<?xml version='1.0' encoding='utf-8'?> <ldml> <special xmlns:palaso='urn://palaso.org/ldmlExtensions/v1'> <palaso:languageName value='English' /> </special> <special xmlns:fw='urn://fieldworks.sil.org/ldmlExtensions/v1'> <fw:regionName value='Australia' /> <fw:scriptName value='Cherokee' /> <fw:variantName value='International Phonetic Alphabet' /> </special> </ldml>".Replace("'", "\""); var ldmlContent2 = @"<?xml version='1.0' encoding='utf-8'?> <ldml> <special xmlns:palaso='urn://palaso.org/ldmlExtensions/v1'> <palaso:languageName value='en' /> </special> </ldml>".Replace("'", "\""); var ldmlContent3 = @"<?xml version='1.0' encoding='utf-8'?> <ldml> <special xmlns:palaso='urn://palaso.org/ldmlExtensions/v1'> <palaso:languageName value='Spn (IPA)' /> </special> </ldml>".Replace("'", "\""); var ldmlContent4 = @"<?xml version='1.0' encoding='utf-8'?> <ldml> <special xmlns:palaso='urn://palaso.org/ldmlExtensions/v1'> <palaso:languageName value='English' /> </special> <special xmlns:fw='urn://fieldworks.sil.org/ldmlExtensions/v1'> <fw:scriptName value='Code for unwritten documents' /> <fw:variantName value='Audio' /> </special> </ldml>".Replace("'", "\""); // Create matching dummy writing system files. var projFolder = Path.Combine(Path.GetTempPath(), "AdjustConflictTestFolder"); if (Directory.Exists(projFolder)) Directory.Delete(projFolder, true); var wsFolder = Path.Combine(projFolder, "WritingSystemStore"); Directory.CreateDirectory(wsFolder); File.WriteAllText(Path.Combine(wsFolder, "en-fonipa.ldml"), ldmlContent1); File.WriteAllText(Path.Combine(wsFolder, "en.ldml"), ldmlContent2); File.WriteAllText(Path.Combine(wsFolder, "es-fonipa.ldml"), ldmlContent3); File.WriteAllText(Path.Combine(wsFolder, "en-Zxxx-x-audio.ldml"), ldmlContent4); var strategy = new ViewNotesActionHandler(); { strategy.ProjectDir = projFolder; } var result = strategy.AdjustConflictHtml(input); Directory.Delete(projFolder, true); Assert.That(result, Is.EqualTo((@"<root>some irrelevant <span class='ws'>English (Audio)</span> stuff <span class='ws'><span style='" + SharedConstants.ConflictInsertStyle + @"'>English (Cherokee, Australia, International Phonetic Alphabet)</span></span> more <span class='ws'>en</span>irrelevant <span class='ws'>en-trash</span> stuff.<span class='ws'>Spn (IPA)</span></root>").Replace("'", "\""))); }
public void AdjustConflictHtml_FixesChecksums() { var input = (@"<body> <div class='property'>Root: <div class='property'>Child: SomeText </div> <div class='checksum'>SomeAtomic: abcdefg</div> <div class='checksum'>SomeCol: <span style='" + SharedConstants.ConflictInsertStyle + @"'>abcdefgh</span></div> <div class='checksum'>SomeSeq: <span style='" + SharedConstants.ConflictDeleteStyle + @"'>qwxyz</span></div> </div> <div class='property'>anotherParent: <div class='checksum'>SomeAtomic: abcdefg</div> <div class='checksum'>SomeCol: <span style='" + SharedConstants.ConflictInsertStyle + @"'>abcdefgh</span></div> <div class='checksum'>SomeSeq: <span style='" + SharedConstants.ConflictDeleteStyle + @"'>qwxyz</span></div> </div> <div class='property'>yetAnother:<div class='checksum'>SomeAtomic: abcdefg</div> <div class='checksum'>SomeCol: abcdefgh</div> <div class='checksum'>SomeSeq: qwxyz</div> </div> </body>").Replace("'", "\""); var strategy = new ViewNotesActionHandler(); var result = strategy.AdjustConflictHtml(input); var desired = (@"<body> <div class='property'>Root: <div class='property'>Child: SomeText </div> <div class='checksum'>There were changes to related objects in SomeCol, SomeSeq</div> </div> <div class='property'>anotherParent: <div class='checksum'>There were changes to related objects in SomeCol, SomeSeq</div> </div> <div class='property'>yetAnother: </div> </body>").Replace("'", "\""); #if MONO result = result.Replace("\r\n", "\n"); desired = desired.Replace("\r\n", "\n"); #else result = result.Replace("\n", "\r\n").Replace("\r\r\n", "\r\n"); desired = desired.Replace("\n", "\r\n").Replace("\r\r\n", "\r\n"); #endif Assert.That(result, Is.EqualTo(desired)); }