public function testItShould_fetchRandomExercise() { $previousExerciseId = rand(1, 100); $exercise = $this->createExercise(); $this->exerciseRepository->method('fetchRandomExerciseOfLesson')->with($this->lesson->id, $this->user->id, $previousExerciseId)->willReturn($exercise); $this->assertEquals($exercise, $this->lesson->fetchRandomExercise($this->user->id, $previousExerciseId)); }
private function assertExerciseCanWin(Lesson $lesson, int $userId, int $exerciseId, int $previousId = null) { // 1000 retries is more then enough $counter = 1000; do { if (!$counter--) { $this->fail('Unable to fetch random exercise.'); } $result = $lesson->fetchRandomExercise($userId, $previousId); $this->assertInstanceOf(Exercise::class, $result); } while ($result->id != $exerciseId && $result->id && $previousId); }
/** * @param FetchRandomExerciseOfLessonRequest $request * @param Lesson $lesson * @return JsonResponse * @throws NotEnoughExercisesException */ public function fetchRandomExerciseOfLesson(FetchRandomExerciseOfLessonRequest $request, Lesson $lesson) { $exercise = $lesson->fetchRandomExercise($this->user()->id, $request->previous_exercise_id); return $this->response($exercise); }