public async Task GetNotesChangelistAsync_UpdateNotes() { var env = new TestEnvironment(); env.SetParatextProjectRoles(true); await env.InitMapperAsync(true, true); env.AddData("syncuser01", "syncuser03", null, "syncuser03"); using (IConnection conn = await env.RealtimeService.ConnectAsync()) { const string oldNotesText = @" <notes version=""1.1""> <thread id=""ANSWER_answer01""> <selection verseRef=""MAT 1:1"" startPos=""0"" selectedText="""" /> <comment user=""PT User 1"" extUser=""user02"" date=""2019-01-01T08:00:00.0000000+00:00""> <content> <p><span style=""bold"">Test question?</span></p> <p>Old test answer 1.</p> </content> </comment> </thread> <thread id=""ANSWER_answer02""> <selection verseRef=""MAT 1:1"" startPos=""0"" selectedText="""" /> <comment user=""PT User 3"" extUser=""user04"" date=""2019-01-02T08:00:00.0000000+00:00""> <content> <p><span style=""bold"">Test question?</span></p> <p><span style=""italic"">This is some scripture. (MAT 1:2-3)</span></p> <p>Test answer 2.</p> </content> </comment> <comment user=""PT User 3"" extUser=""user02"" date=""2019-01-02T09:00:00.0000000+00:00""> <content>Old test comment 2.</content> </comment> </thread> </notes>"; XElement notesElem = await env.Mapper.GetNotesChangelistAsync(XElement.Parse(oldNotesText), await env.GetQuestionDocsAsync(conn)); const string expectedNotesText = @" <notes version=""1.1""> <thread id=""ANSWER_answer01""> <selection verseRef=""MAT 1:1"" startPos=""0"" selectedText="""" /> <comment user=""PT User 1"" extUser=""user02"" date=""2019-01-01T08:00:00.0000000+00:00""> <content> <p><span style=""bold"">Test question?</span></p> <p>Test answer 1.</p> </content> </comment> <comment user=""PT User 3"" date=""2019-01-01T09:00:00.0000000+00:00""> <content>Test comment 1.</content> </comment> </thread> <thread id=""ANSWER_answer02""> <selection verseRef=""MAT 1:1"" startPos=""0"" selectedText="""" /> <comment user=""PT User 3"" extUser=""user02"" date=""2019-01-02T09:00:00.0000000+00:00""> <content>Test comment 2.</content> </comment> </thread> </notes>"; Assert.That(XNode.DeepEquals(notesElem, XElement.Parse(expectedNotesText)), Is.True); Assert.That(env.Mapper.NewSyncUsers, Is.Empty); } }
public async Task GetNotesChangelistAsync_AddAudioNotes() { var env = new TestEnvironment(); env.SetParatextProjectRoles(true); await env.InitMapperAsync(false, true); env.AddData(null, null, null, null, true); using (IConnection conn = await env.RealtimeService.ConnectAsync()) { const string oldNotesText = @" <notes version=""1.1""> <thread id=""ANSWER_answer03""> <selection verseRef=""MAT 1:2"" startPos=""0"" selectedText="""" /> <comment user=""PT User 1"" extUser=""user02"" date=""2019-01-03T08:00:00.0000000+00:00""> <content> <p><span style=""bold"">- xForge audio-only question -</span></p> <p>Test answer 3.</p> </content> </comment> </thread> </notes>"; XElement notesElem = await env.Mapper.GetNotesChangelistAsync(XElement.Parse(oldNotesText), await env.GetQuestionDocsAsync(conn)); const string expectedNotesText = @" <notes version=""1.1""> <thread id=""ANSWER_answer01""> <selection verseRef=""MAT 1:1"" startPos=""0"" selectedText="""" /> <comment user=""PT User 1"" extUser=""user02"" date=""2019-01-01T08:00:00.0000000+00:00""> <content> <p><span style=""bold"">- xForge audio-only question -</span></p> <p>- xForge audio-only response -</p> </content> </comment> <comment user=""PT User 3"" date=""2019-01-01T09:00:00.0000000+00:00""> <content>Test comment 1.</content> </comment> </thread> <thread id=""ANSWER_answer02""> <selection verseRef=""MAT 1:1"" startPos=""0"" selectedText="""" /> <comment user=""PT User 1"" extUser=""user04"" date=""2019-01-02T08:00:00.0000000+00:00""> <content> <p><span style=""bold"">- xForge audio-only question -</span></p> <p><span style=""italic"">This is some scripture. (MAT 1:2-3)</span></p> <p>Test answer 2.</p> </content> </comment> <comment user=""PT User 1"" extUser=""user02"" date=""2019-01-02T09:00:00.0000000+00:00""> <content>Test comment 2.</content> </comment> </thread> <thread id=""ANSWER_answer03""> <selection verseRef=""MAT 1:2"" startPos=""0"" selectedText="""" /> <comment user=""PT User 1"" extUser=""user02"" date=""2019-01-03T08:00:00.0000000+00:00"" deleted=""true""> <content> <p><span style=""bold"">- xForge audio-only question -</span></p> <p>Test answer 3.</p> </content> </comment> </thread> </notes>"; Assert.That(XNode.DeepEquals(notesElem, XElement.Parse(expectedNotesText)), Is.True); Assert.That(env.Mapper.NewSyncUsers.Select(su => su.ParatextUsername), Is.EquivalentTo(new[] { "PT User 1", "PT User 3" })); } }
public async Task GetNotesChangelistAsync_ParatextUserNotOnProject_AddNotes() { var env = new TestEnvironment(); env.SetParatextProjectRoles(false); await env.InitMapperAsync(false, true); env.AddData(null, null, null, null); using (IConnection conn = await env.RealtimeService.ConnectAsync()) { const string oldNotesText = @" <notes version=""1.1""> <thread id=""ANSWER_answer03""> <selection verseRef=""MAT 1:2"" startPos=""0"" selectedText="""" /> <comment user=""PT User 1"" extUser=""user02"" date=""2019-01-03T08:00:00.0000000+00:00""> <content> <p><span style=""bold"">Test question?</span></p> <p>Test answer 3.</p> </content> </comment> </thread> </notes>"; XElement notesElem = await env.Mapper.GetNotesChangelistAsync(XElement.Parse(oldNotesText), await env.GetQuestionDocsAsync(conn)); // User 3 is a PT user but does not have a role on this particular PT project, according to the PT // Registry. So we will attribute their comment to user 1, who does have a role on this project // according to the PT registry. Otherwise we would get errors when uploading a note attributed to user // 3's PT username since they do not have appropriate access to write a note. Also, NewSyncUsers will // not contain user 3. const string expectedNotesText = @" <notes version=""1.1""> <thread id=""ANSWER_answer01""> <selection verseRef=""MAT 1:1"" startPos=""0"" selectedText="""" /> <comment user=""PT User 1"" extUser=""user02"" date=""2019-01-01T08:00:00.0000000+00:00""> <content> <p><span style=""bold"">Test question?</span></p> <p>Test answer 1.</p> </content> </comment> <comment user=""PT User 1"" extUser=""user03"" date=""2019-01-01T09:00:00.0000000+00:00""> <content>Test comment 1.</content> </comment> </thread> <thread id=""ANSWER_answer02""> <selection verseRef=""MAT 1:1"" startPos=""0"" selectedText="""" /> <comment user=""PT User 1"" extUser=""user04"" date=""2019-01-02T08:00:00.0000000+00:00""> <content> <p><span style=""bold"">Test question?</span></p> <p><span style=""italic"">This is some scripture. (MAT 1:2-3)</span></p> <p>Test answer 2.</p> </content> </comment> <comment user=""PT User 1"" extUser=""user02"" date=""2019-01-02T09:00:00.0000000+00:00""> <content>Test comment 2.</content> </comment> </thread> <thread id=""ANSWER_answer03""> <selection verseRef=""MAT 1:2"" startPos=""0"" selectedText="""" /> <comment user=""PT User 1"" extUser=""user02"" date=""2019-01-03T08:00:00.0000000+00:00"" deleted=""true""> <content> <p><span style=""bold"">Test question?</span></p> <p>Test answer 3.</p> </content> </comment> </thread> </notes>"; Assert.That(XNode.DeepEquals(notesElem, XElement.Parse(expectedNotesText)), Is.True); Assert.That(env.Mapper.NewSyncUsers.Select(su => su.ParatextUsername), Is.EquivalentTo(new[] { "PT User 1" })); } }