@@ -145,8 +145,8 @@ class TestAssignmentsPresenter extends Tester\TestCase
145145 $ this ->presenter ->solutionEvaluations = $ mockEvaluations ;
146146
147147 $ isPublic = true ;
148- $ localizedTexts = [
149- [ " locale " => "locA " , " text " => " descA " , " name " => " nameA " ]
148+ $ localizedStudentHints = [
149+ " en " => "Use the force! " ,
150150 ];
151151 $ firstDeadline = (new DateTime ())->getTimestamp ();
152152 $ maxPointsBeforeFirstDeadline = 123 ;
@@ -171,7 +171,7 @@ class TestAssignmentsPresenter extends Tester\TestCase
171171 [
172172 'isPublic ' => $ isPublic ,
173173 'version ' => 1 ,
174- 'localizedTexts ' => $ localizedTexts ,
174+ 'localizedStudentHints ' => $ localizedStudentHints ,
175175 'firstDeadline ' => $ firstDeadline ,
176176 'maxPointsBeforeFirstDeadline ' => $ maxPointsBeforeFirstDeadline ,
177177 'submissionsCountLimit ' => $ submissionsCountLimit ,
@@ -218,10 +218,10 @@ class TestAssignmentsPresenter extends Tester\TestCase
218218
219219 // check localized texts
220220 Assert::count (1 , $ updatedAssignment ["localizedTexts " ]);
221- $ localized = current ($ localizedTexts );
221+ $ localized = current ($ localizedStudentHints );
222222 $ updatedLocalized = $ updatedAssignment ["localizedTexts " ][0 ];
223- Assert::equal ($ updatedLocalized [ " locale " ] , $ localized ["locale " ]);
224- Assert::equal ($ updatedLocalized [ " text " ] , $ localized [ " text " ]);
223+ Assert::equal (" en " , $ updatedLocalized ["locale " ]);
224+ Assert::equal ($ localized , $ updatedLocalized [ " studentHint " ]);
225225 }
226226
227227 public function testUpdateDetailWithoutNotifications ()
@@ -249,9 +249,7 @@ class TestAssignmentsPresenter extends Tester\TestCase
249249 'isPublic ' => true ,
250250 'version ' => 1 ,
251251 'sendNotification ' => false ,
252- 'localizedTexts ' => [
253- ["locale " => "locA " , "text " => "descA " , "name " => "nameA " ]
254- ],
252+ 'localizedStudentHints ' => ["en " => "Use the force! " ],
255253 'firstDeadline ' => (new DateTime ())->getTimestamp (),
256254 'maxPointsBeforeFirstDeadline ' => 42 ,
257255 'submissionsCountLimit ' => 10 ,
@@ -303,9 +301,7 @@ class TestAssignmentsPresenter extends Tester\TestCase
303301 $ this ->presenter ->solutionEvaluations = $ mockEvaluations ;
304302
305303 $ isPublic = true ;
306- $ localizedTexts = [
307- ["locale " => "locA " , "text " => "descA " , "name " => "nameA " ]
308- ];
304+ $ localizedStudentHints = ["en " => "Use the force! " ];
309305 $ firstDeadline = (new DateTime ())->getTimestamp () + 100 ;
310306 $ maxPointsBeforeFirstDeadline = 123 ;
311307 $ submissionsCountLimit = 32 ;
@@ -330,7 +326,7 @@ class TestAssignmentsPresenter extends Tester\TestCase
330326 'isPublic ' => $ isPublic ,
331327 'version ' => 1 ,
332328 'sendNotification ' => true ,
333- 'localizedTexts ' => $ localizedTexts ,
329+ 'localizedStudentHints ' => $ localizedStudentHints ,
334330 'firstDeadline ' => $ firstDeadline ,
335331 'maxPointsBeforeFirstDeadline ' => $ maxPointsBeforeFirstDeadline ,
336332 'submissionsCountLimit ' => $ submissionsCountLimit ,
@@ -377,10 +373,10 @@ class TestAssignmentsPresenter extends Tester\TestCase
377373
378374 // check localized texts
379375 Assert::count (1 , $ updatedAssignment ["localizedTexts " ]);
380- $ localized = current ($ localizedTexts );
376+ $ localized = current ($ localizedStudentHints );
381377 $ updatedLocalized = $ updatedAssignment ["localizedTexts " ][0 ];
382- Assert::equal ($ updatedLocalized [ " locale " ] , $ localized ["locale " ]);
383- Assert::equal ($ updatedLocalized [ " text " ] , $ localized [ " text " ]);
378+ Assert::equal (" en " , $ updatedLocalized ["locale " ]);
379+ Assert::equal ($ localized , $ updatedLocalized [ " studentHint " ]);
384380 }
385381
386382 public function testAddStudentHints ()
@@ -399,9 +395,7 @@ class TestAssignmentsPresenter extends Tester\TestCase
399395 [
400396 'isPublic ' => true ,
401397 'version ' => 1 ,
402- 'localizedTexts ' => [
403- ["locale " => "locA " , "text " => "descA " , "name " => "nameA " , "studentHint " => "Try hard " ]
404- ],
398+ 'localizedStudentHints ' => ["en " => "Try hard " ],
405399 'firstDeadline ' => (new DateTime ())->getTimestamp (),
406400 'maxPointsBeforeFirstDeadline ' => 123 ,
407401 'submissionsCountLimit ' => 32 ,
@@ -424,7 +418,7 @@ class TestAssignmentsPresenter extends Tester\TestCase
424418 $ response = $ this ->presenter ->run ($ request );
425419 $ updatedAssignment = PresenterTestHelper::extractPayload ($ response );
426420 Assert::count (1 , $ updatedAssignment ["localizedTexts " ]);
427- Assert::equal ("locA " , $ updatedAssignment ["localizedTexts " ][0 ]["locale " ]);
421+ Assert::equal ("en " , $ updatedAssignment ["localizedTexts " ][0 ]["locale " ]);
428422 Assert::equal ("Try hard " , $ updatedAssignment ["localizedTexts " ][0 ]["studentHint " ]);
429423 Assert::true ($ updatedAssignment ["maxPointsDeadlineInterpolation " ]);
430424 }
@@ -446,9 +440,7 @@ class TestAssignmentsPresenter extends Tester\TestCase
446440 [
447441 'isPublic ' => true ,
448442 'version ' => 1 ,
449- 'localizedTexts ' => [
450- ["locale " => "locA " , "text " => "descA " , "name " => "nameA " ]
451- ],
443+ 'localizedStudentHints ' => ["en " => "Use the force! " ],
452444 'firstDeadline ' => (new DateTime ())->getTimestamp (),
453445 'maxPointsBeforeFirstDeadline ' => 123 ,
454446 'submissionsCountLimit ' => 32 ,
@@ -491,9 +483,7 @@ class TestAssignmentsPresenter extends Tester\TestCase
491483 [
492484 'isPublic ' => true ,
493485 'version ' => 1 ,
494- 'localizedTexts ' => [
495- ["locale " => "locA " , "text " => "descA " , "name " => "nameA " ]
496- ],
486+ 'localizedStudentHints ' => ["en " => "Use the force! " ],
497487 'firstDeadline ' => (new DateTime ())->getTimestamp (),
498488 'maxPointsBeforeFirstDeadline ' => 123 ,
499489 'submissionsCountLimit ' => 32 ,
@@ -540,9 +530,7 @@ class TestAssignmentsPresenter extends Tester\TestCase
540530 [
541531 'isPublic ' => true ,
542532 'version ' => 1 ,
543- 'localizedTexts ' => [
544- ["locale " => "locA " , "text " => "descA " , "name " => "nameA " ]
545- ],
533+ 'localizedStudentHints ' => ["en " => "Use the force! " ],
546534 'firstDeadline ' => (new DateTime ())->getTimestamp (),
547535 'maxPointsBeforeFirstDeadline ' => 123 ,
548536 'submissionsCountLimit ' => 32 ,
@@ -587,9 +575,7 @@ class TestAssignmentsPresenter extends Tester\TestCase
587575 [
588576 'isPublic ' => true ,
589577 'version ' => 1 ,
590- 'localizedTexts ' => [
591- ["locale " => "locA " , "text " => "descA " , "name " => "nameA " ]
592- ],
578+ 'localizedStudentHints ' => ["en " => "Use the force! " ],
593579 'firstDeadline ' => (new DateTime ())->getTimestamp (),
594580 'maxPointsBeforeFirstDeadline ' => 123 ,
595581 'submissionsCountLimit ' => 32 ,
@@ -614,6 +600,42 @@ class TestAssignmentsPresenter extends Tester\TestCase
614600 Assert::false ($ assignment ->isExam ());
615601 }
616602
603+ public function testUpdateLocalizedTexts ()
604+ {
605+ PresenterTestHelper::loginDefaultAdmin ($ this ->container );
606+
607+ $ assignments = $ this ->assignments ->findAll ();
608+ /** @var Assignment $assignment */
609+ $ assignment = array_pop ($ assignments );
610+
611+ $ request = new Nette \Application \Request (
612+ 'V1:Assignments ' ,
613+ 'POST ' ,
614+ ['action ' => 'updateLocalizedTexts ' , 'id ' => $ assignment ->getId ()],
615+ [
616+ 'version ' => 1 ,
617+ 'localizedTexts ' => [
618+ ["locale " => "en " , "name " => "Overwritten name " , "text " => "Overwritten text " ],
619+ ["locale " => "nw " , "name " => "New name " , "text " => "New text " ],
620+ ],
621+ ]
622+ );
623+
624+ $ response = $ this ->presenter ->run ($ request );
625+ $ updatedAssignment = PresenterTestHelper::extractPayload ($ response );
626+ Assert::count (2 , $ updatedAssignment ["localizedTexts " ]);
627+ $ texts = $ updatedAssignment ["localizedTexts " ];
628+ usort ($ texts , function ($ a , $ b ) {
629+ return strcmp ($ a ["locale " ], $ b ["locale " ]);
630+ });
631+ Assert::equal ("en " , $ texts [0 ]["locale " ]);
632+ Assert::equal ("Overwritten name " , $ texts [0 ]["name " ]);
633+ Assert::equal ("Overwritten text " , $ texts [0 ]["text " ]);
634+ Assert::equal ("nw " , $ texts [1 ]["locale " ]);
635+ Assert::equal ("New name " , $ texts [1 ]["name " ]);
636+ Assert::equal ("New text " , $ texts [1 ]["text " ]);
637+ }
638+
617639 public function testCreateAssignment ()
618640 {
619641 PresenterTestHelper::loginDefaultAdmin ($ this ->container );
0 commit comments