entityManager = static::getContainer()->get(EntityManagerInterface::class); $this->projectService = static::getContainer()->get(ProjectService::class); $this->owner = $this->createTestUser(); $this->entityManager->persist($this->owner); $this->entityManager->flush(); } private function createTestUser(string $handle = 'test_user', string $email = 'testuser@example.com'): User { $user = new User(); $user->setHandle($handle); $user->setEmail($email); $user->setPassword('projectapitestpassword'); return $user; } private function createTestProject(ProjectDeadline $deadline = ProjectDeadline::Minimum): Project { return ProjectFactory::createOne([ 'owner' => $this->owner, 'deadline' => $deadline, 'status' => ProjectStatus::InDraft, ])->_real(); } private function createProjectAndSetToInCampaignReview(): Project { $project = $this->createTestProject(); $this->entityManager->persist($project); $this->entityManager->flush(); $project = $this->projectService->transition($project, ProjectStatus::ToCampaignReview); $this->entityManager->persist($project); $this->entityManager->flush(); return $project; } public function testCreatesReviewOnStatusChange(): void { $project = $this->createProjectAndSetToInCampaignReview(); $reviews = $this->entityManager->getRepository(Review::class)->findBy(['project' => $project->getId()]); $this->assertNotEmpty($reviews); $this->assertEquals(1, \count($reviews)); $this->assertEquals(ReviewType::Campaign->value, $reviews[0]->getType()->value); } }