Skip to content

Commit 19fffab

Browse files
authored
Update LfMergeBridge tests to new comments API (#416)
New API passes LfComment lists directly rather than serialized to JSON, so the tests need to do the same.
1 parent adaeec5 commit 19fffab

File tree

3 files changed

+184
-85
lines changed

3 files changed

+184
-85
lines changed

src/LfMergeBridgeTests/LanguageForgeGetChorusNotesActionHandlerTests.cs

Lines changed: 84 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
// Copyright (c) 2018 SIL International
1+
// Copyright (c) 2018 SIL International
22
// This software is licensed under the MIT License (http://opensource.org/licenses/MIT)
33
using System;
44
using System.Collections.Generic;
55
using System.IO;
66
using LfMergeBridge;
7+
using LfMergeBridge.LfMergeModel;
78
using LibTriboroughBridgeChorusPlugin.Infrastructure;
89
using NUnit.Framework;
910
using SIL.IO;
@@ -37,11 +38,12 @@ private static IBridgeActionTypeHandler GetLanguageForgeGetChorusNotesActionHand
3738
return sutActionHandler;
3839
}
3940

40-
private Dictionary<string, string> GetOptions(string projectDir)
41+
private Dictionary<string, string> GetOptions(string projectDir, List<LfComment> commentsFromLfMerge)
4142
{
4243
var options = new Dictionary<string, string>();
43-
options[LfMergeBridgeUtilities.serializedCommentsFromLfMerge] = _inputFile.Path;
4444
options["-p"] = projectDir;
45+
var extraInputData = new GetChorusNotesInput { LfComments = commentsFromLfMerge };
46+
LfMergeBridge.LfMergeBridge.ExtraInputData.Add(options, extraInputData);
4547
return options;
4648
}
4749

@@ -71,6 +73,36 @@ private static string ExpectedNewCommentsMessage(string status, string statusGui
7173
"New status changes on comments already in LF: []", status, statusGuid, DateTimeProvider.Current.Now.ToString("yyyy-MM-ddTHH:mm:sszzz")));
7274
}
7375

76+
private static GetChorusNotesResponse ExpectValidResponse(Dictionary<string, string> options)
77+
{
78+
var found = LfMergeBridge.LfMergeBridge.ExtraOutputData.TryGetValue(options, out var outputObject);
79+
Assert.IsTrue(found, "No output comments from LfMergeBridge");
80+
Assert.NotNull(outputObject);
81+
var response = outputObject as GetChorusNotesResponse;
82+
Assert.That(response, Is.Not.Null);
83+
return response;
84+
}
85+
86+
private static void ExpectStatusChanges(Dictionary<string, string> options, string status, string statusGuid)
87+
{
88+
var response = ExpectValidResponse(options);
89+
Assert.That(response.LfComments.Count, Is.EqualTo(0));
90+
Assert.That(response.LfReplies.Count, Is.EqualTo(0));
91+
Assert.That(response.LfStatusChanges.Count, Is.GreaterThan(0));
92+
var change = response.LfStatusChanges[0];
93+
Assert.That(change.Key, Is.EqualTo("e8a03b36-2c36-4647-b879-24dbcd5a9ac4"));
94+
Assert.That(change.Value.Item1, Is.EqualTo(status));
95+
Assert.That(change.Value.Item2, Is.EqualTo(statusGuid));
96+
}
97+
98+
private static void ExpectNoStatusChanges(Dictionary<string, string> options)
99+
{
100+
var response = ExpectValidResponse(options);
101+
Assert.That(response.LfComments.Count, Is.EqualTo(0));
102+
Assert.That(response.LfReplies.Count, Is.EqualTo(0));
103+
Assert.That(response.LfStatusChanges.Count, Is.EqualTo(0));
104+
}
105+
74106
[SetUp]
75107
public void Setup()
76108
{
@@ -105,19 +137,17 @@ public void NothingNew()
105137
date=""2018-01-31T17:43:30Z""
106138
guid=""c4f4df11-8dda-418e-8124-66406d67a2d1"">LF comment on F</message>");
107139
var projectDir = CreateTestProject(notesContent);
108-
_inputFile = NotesTestHelper.CreateMongoDataFileAsList(
109-
"\"Status\":\"open\",\"StatusGuid\":\"c4f4df11-8dda-418e-8124-66406d67a2d1\",");
140+
var lfComments = NotesTestHelper.CreateLfCommentsListById("open", "c4f4df11-8dda-418e-8124-66406d67a2d1");
110141

111142
string forClient = null;
112143
var sutActionHandler = GetLanguageForgeGetChorusNotesActionHandler();
113144

114145
// Execute
115-
sutActionHandler.StartWorking(new NullProgress(), GetOptions(projectDir), ref forClient);
146+
var options = GetOptions(projectDir, lfComments);
147+
sutActionHandler.StartWorking(new NullProgress(), options, ref forClient);
116148

117149
// Verify
118-
Assert.That(forClient, Is.EqualTo(ExpectedClientString(
119-
"New comments not yet in LF: []\nNew replies on comments already in LF: []\n" +
120-
"New status changes on comments already in LF: []")));
150+
ExpectNoStatusChanges(options);
121151
}
122152

123153
/// <summary>
@@ -141,18 +171,17 @@ public void StatusChangeOnLD(string statusGuid)
141171
guid=""c9bd2519-b92a-4e65-a879-00e0c8a57e1d"">
142172
</message>");
143173
var projectDir = CreateTestProject(notesContent);
144-
_inputFile = NotesTestHelper.CreateMongoDataFileAsList(string.Format(
145-
"\"Status\":\"open\",\"StatusGuid\":\"{0}\",", statusGuid));
174+
var lfComments = NotesTestHelper.CreateLfCommentsListById("open", statusGuid);
146175

147176
string forClient = null;
148177
var sutActionHandler = GetLanguageForgeGetChorusNotesActionHandler();
149178

150179
// Execute
151-
sutActionHandler.StartWorking(new NullProgress(), GetOptions(projectDir), ref forClient);
180+
var options = GetOptions(projectDir, lfComments);
181+
sutActionHandler.StartWorking(new NullProgress(), options, ref forClient);
152182

153183
// Verify
154-
Assert.That(forClient, Is.EqualTo(ExpectedStatusChangesMessage(
155-
"resolved", "c9bd2519-b92a-4e65-a879-00e0c8a57e1d")));
184+
ExpectStatusChanges(options, "resolved", "c9bd2519-b92a-4e65-a879-00e0c8a57e1d");
156185
}
157186

158187
/// <summary>
@@ -182,17 +211,17 @@ public void StatusChangeOnLD_Reopen()
182211
guid=""51b1ba75-b28a-4dac-9bb4-7f1e2f14563a"">
183212
</message>");
184213
var projectDir = CreateTestProject(notesContent);
185-
_inputFile = NotesTestHelper.CreateMongoDataFileAsList("\"Status\":\"closed\",\"StatusGuid\":\"c9bd2519-b92a-4e65-a879-00e0c8a57e1d\",");
214+
var lfComments = NotesTestHelper.CreateLfCommentsListById("closed", "c9bd2519-b92a-4e65-a879-00e0c8a57e1d");
186215

187216
string forClient = null;
188217
var sutActionHandler = GetLanguageForgeGetChorusNotesActionHandler();
189218

190219
// Execute
191-
sutActionHandler.StartWorking(new NullProgress(), GetOptions(projectDir), ref forClient);
220+
var options = GetOptions(projectDir, lfComments);
221+
sutActionHandler.StartWorking(new NullProgress(), options, ref forClient);
192222

193223
// Verify
194-
Assert.That(forClient, Is.EqualTo(ExpectedStatusChangesMessage(
195-
"open", "51b1ba75-b28a-4dac-9bb4-7f1e2f14563a")));
224+
ExpectStatusChanges(options, "open", "51b1ba75-b28a-4dac-9bb4-7f1e2f14563a");
196225
}
197226

198227
/// <summary>
@@ -214,17 +243,17 @@ public void StatusChangeOnLF()
214243
status=""closed""
215244
date=""2018-02-01T12:13:14Z""
216245
guid=""1687b882-97c9-4ca0-9bc3-2a0511715400""></message>"));
217-
_inputFile = NotesTestHelper.CreateMongoDataFileAsList("\"Status\":\"resolved\",\"StatusGuid\":\"c4f4df11-8dda-418e-8124-66406d67a2d1\",");
246+
var lfComments = NotesTestHelper.CreateLfCommentsListById("resolved", "c4f4df11-8dda-418e-8124-66406d67a2d1");
218247

219248
string forClient = null;
220249
var sutActionHandler = GetLanguageForgeGetChorusNotesActionHandler();
221250

222251
// Execute
223-
sutActionHandler.StartWorking(new NullProgress(), GetOptions(projectDir), ref forClient);
252+
var options = GetOptions(projectDir, lfComments);
253+
sutActionHandler.StartWorking(new NullProgress(), options, ref forClient);
224254

225255
// Verify
226-
Assert.That(forClient, Is.EqualTo(ExpectedStatusChangesMessage(
227-
"resolved", "1687b882-97c9-4ca0-9bc3-2a0511715400")));
256+
ExpectStatusChanges(options, "resolved", "1687b882-97c9-4ca0-9bc3-2a0511715400");
228257
}
229258

230259
/// <summary>
@@ -252,17 +281,17 @@ public void StatusChangeOnLF_Reopen()
252281
status=""open""
253282
date=""2018-02-01T12:13:14Z""
254283
guid=""1687b882-97c9-4ca0-9bc3-2a0511715400""></message>"));
255-
_inputFile = NotesTestHelper.CreateMongoDataFileAsList("\"Status\":\"open\",\"StatusGuid\":\"449489a4-8e0e-4b98-a75d-b6263f4a4e6a\",");
284+
var lfComments = NotesTestHelper.CreateLfCommentsListById("open", "449489a4-8e0e-4b98-a75d-b6263f4a4e6a");
256285

257286
string forClient = null;
258287
var sutActionHandler = GetLanguageForgeGetChorusNotesActionHandler();
259288

260289
// Execute
261-
sutActionHandler.StartWorking(new NullProgress(), GetOptions(projectDir), ref forClient);
290+
var options = GetOptions(projectDir, lfComments);
291+
sutActionHandler.StartWorking(new NullProgress(), options, ref forClient);
262292

263293
// Verify
264-
Assert.That(forClient, Is.EqualTo(ExpectedStatusChangesMessage(
265-
"open", "1687b882-97c9-4ca0-9bc3-2a0511715400")));
294+
ExpectStatusChanges(options, "open", "1687b882-97c9-4ca0-9bc3-2a0511715400");
266295
}
267296

268297
/// <summary>
@@ -281,17 +310,42 @@ public void NewCommentOnLF()
281310
date=""{0}""
282311
guid=""c4f4df11-8dda-418e-8124-66406d67a2d1"">LF comment on F</message>",
283312
DateTimeProvider.Current.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ"))));
284-
_inputFile = NotesTestHelper.CreateMongoDataFileAsList("\"Status\":\"open\",", false);
313+
var lfComments = NotesTestHelper.CreateLfCommentsListById("open", "", false);
285314

286315
string forClient = null;
287316
var sutActionHandler = GetLanguageForgeGetChorusNotesActionHandler();
288317

289318
// Execute
290-
sutActionHandler.StartWorking(new NullProgress(), GetOptions(projectDir), ref forClient);
319+
var options = GetOptions(projectDir, lfComments);
320+
sutActionHandler.StartWorking(new NullProgress(), options, ref forClient);
291321

292322
// Verify
293-
Assert.That(forClient, Is.EqualTo(ExpectedNewCommentsMessage(
294-
"open", "c4f4df11-8dda-418e-8124-66406d67a2d1")));
323+
var response = ExpectValidResponse(options);
324+
Assert.That(response.LfComments.Count, Is.EqualTo(1));
325+
Assert.That(response.LfReplies.Count, Is.EqualTo(0));
326+
Assert.That(response.LfStatusChanges.Count, Is.EqualTo(0));
327+
328+
var comment = response.LfComments[0];
329+
Assert.That(comment.Guid, Is.EqualTo(new Guid("e8a03b36-2c36-4647-b879-24dbcd5a9ac4")));
330+
331+
Assert.That(comment.AuthorNameAlternate, Is.EqualTo("Language Forge"));
332+
Assert.That(comment.Content, Is.EqualTo("LF comment on F"));
333+
Assert.That(comment.ContextGuid, Is.Null);
334+
Assert.That(comment.DateCreated, Is.EqualTo(DateTimeProvider.Current.Now));
335+
Assert.That(comment.DateModified, Is.EqualTo(DateTimeProvider.Current.Now));
336+
Assert.That(comment.IsDeleted, Is.False);
337+
Assert.That(comment.Replies, Is.Empty);
338+
Assert.That(comment.Status, Is.EqualTo("open"));
339+
Assert.That(comment.StatusGuid, Is.EqualTo(new Guid("c4f4df11-8dda-418e-8124-66406d67a2d1")));
340+
341+
Assert.That(comment.Regarding.Field, Is.Null);
342+
Assert.That(comment.Regarding.FieldNameForDisplay, Is.Null);
343+
Assert.That(comment.Regarding.FieldValue, Is.Null);
344+
Assert.That(comment.Regarding.InputSystem, Is.Null);
345+
Assert.That(comment.Regarding.InputSystemAbbreviation, Is.Null);
346+
Assert.That(comment.Regarding.Meaning, Is.EqualTo(""));
347+
Assert.That(comment.Regarding.Word, Is.EqualTo("F"));
348+
Assert.That(comment.Regarding.TargetGuid, Is.EqualTo("1e7a8774-da73-49de-83bf-a613c12bb281"));
295349
}
296350
}
297351
}

0 commit comments

Comments
 (0)