@@ -158,6 +158,52 @@ class TestPlagiarismPresenter extends Tester\TestCase
158158 Assert::true ($ batch ->getUploadCompletedAt () === null );
159159 }
160160
161+ public function testBatchSetCompletedAndMarkAssignments ()
162+ {
163+ PresenterTestHelper::loginDefaultAdmin ($ this ->container );
164+
165+ $ batch = current (array_filter ($ this ->presenter ->detectionBatches ->findAll (), function ($ b ) {
166+ return $ b ->getUploadCompletedAt () === null ;
167+ }));
168+ Assert::notNull ($ batch );
169+
170+ $ assignments = [];
171+ $ otherAssignments = [];
172+ foreach ($ this ->presenter ->assignments ->findAll () as $ assignment ) {
173+ if ($ assignment ->isExam ()) {
174+ $ otherAssignments [] = $ assignment ;
175+ } else {
176+ $ assignments [] = $ assignment ;
177+ }
178+ }
179+ Assert::count (2 , $ assignments );
180+ Assert::count (1 , $ otherAssignments );
181+
182+ $ payload = PresenterTestHelper::performPresenterRequest (
183+ $ this ->presenter ,
184+ 'V1:PlagiarismPresenter ' ,
185+ 'POST ' ,
186+ ['action ' => 'updateBatch ' , 'id ' => $ batch ->getId ()],
187+ [
188+ 'assignments ' => array_map (function ($ a ) {
189+ return $ a ->getId ();
190+ }, $ assignments )
191+ ]
192+ );
193+ Assert::equal ($ batch ->getId (), $ payload ->getId ());
194+ Assert::true ($ payload ->getUploadCompletedAt () === null );
195+
196+ foreach ($ assignments as $ assignment ) {
197+ $ this ->presenter ->assignments ->refresh ($ assignment );
198+ Assert::equal ($ batch ->getId (), $ assignment ->getPlagiarismBatch ()?->getId());
199+ }
200+
201+ foreach ($ otherAssignments as $ assignment ) {
202+ $ this ->presenter ->assignments ->refresh ($ assignment );
203+ Assert::null ($ assignment ->getPlagiarismBatch ());
204+ }
205+ }
206+
161207 public function testGetSimilarities ()
162208 {
163209 PresenterTestHelper::loginDefaultAdmin ($ this ->container );
@@ -237,16 +283,16 @@ class TestPlagiarismPresenter extends Tester\TestCase
237283 'fileEntry ' => $ similarity ->getFileEntry (),
238284 'fragments ' => [
239285 [
240- [ 'offset ' => 42 , 'length ' => 54 ],
241- [ 'offset ' => 42 , 'length ' => 54 ],
286+ ['offset ' => 42 , 'length ' => 54 ],
287+ ['offset ' => 42 , 'length ' => 54 ],
242288 ],
243289 [
244- [ 'offset ' => 420 , 'length ' => 540 ],
245- [ 'offset ' => 420 , 'length ' => 540 ],
290+ ['offset ' => 420 , 'length ' => 540 ],
291+ ['offset ' => 420 , 'length ' => 540 ],
246292 ],
247293 [
248- [ 'offset ' => 4200 , 'length ' => 1024 ],
249- [ 'offset ' => 4200 , 'length ' => 1024 ],
294+ ['offset ' => 4200 , 'length ' => 1024 ],
295+ ['offset ' => 4200 , 'length ' => 1024 ],
250296 ],
251297 ]
252298 ]],
@@ -476,8 +522,8 @@ class TestPlagiarismPresenter extends Tester\TestCase
476522 'fileEntry ' => $ similarity ->getFileEntry (),
477523 'fragments ' => [
478524 [
479- [ 'off ' => 42 , 'length ' => 54 ],
480- [ 'offset ' => 42 , 'len ' => 54 ],
525+ ['off ' => 42 , 'length ' => 54 ],
526+ ['offset ' => 42 , 'len ' => 54 ],
481527 ],
482528 ]
483529 ]],
0 commit comments