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)
33using System ;
44using System . Collections . Generic ;
55using System . IO ;
66using LfMergeBridge ;
7+ using LfMergeBridge . LfMergeModel ;
78using LibTriboroughBridgeChorusPlugin . Infrastructure ;
89using NUnit . Framework ;
910using 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: []\n New 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