/** * @param \_OurBrand_\Quiz\Domain\Model\Exercises\DragAndDropWordToQuestionExercise $exercise * @return void */ public function updateAction($exercise) { $newQuestions = $answers = $extraWords = array(); if ($this->request->hasArgument('questions')) { $newQuestions = $this->request->getArgument('questions'); } if ($this->request->hasArgument('answers')) { $answers = $this->request->getArgument('answers'); } if ($this->request->hasArgument('extraWords')) { $extraWords = $this->request->getArgument('extraWords'); } $questions = array(); foreach ($newQuestions as $i => $questionText) { $obj = array('question' => $questionText); $obj['answer'] = $answers[$i]; $questions[] = $obj; } $exercise->setQuestionsFromArray($questions); $exercise->setExtraWordsFromArray($extraWords); $exercise->randomize(); // Remove the possible session values in preview: $identifier = $this->persistenceManager->getIdentifierByObject($exercise); $this->loginSession->setData('answers-' . $identifier, null); if (!$this->request->hasArgument('json')) { $this->forward('update', 'exercise', null, array('exercise' => $exercise)); } $this->forward('updateSilent', 'exercise', null, array('exercise' => $exercise, 'json' => $this->request->getArgument('json'))); }
/** * @dataProvider extraWordsDataProvider * @param array $data */ public function testSetExtraWordsFromArray($data) { $exercise = new DragAndDropWordToQuestionExercise(); $this->assertNull($exercise->setExtraWordsFromArray($data)); $questions = $exercise->getQuestions(); $num = 0; foreach ($data as $key => $row) { $this->assertSame($exercise, $questions[$key]->getExercise()); $this->assertSame(null, $questions[$key]->getQuestion()); $this->assertSame($row, $questions[$key]->getAnswer()); $this->assertSame($num, $questions[$key]->getNumber()); $this->assertSame($num, $questions[$key]->getSorting()); $num++; } $this->assertEquals(count($data), count($exercise->getExtraWords())); }