assertInstanceOf(SceneAttachment::class, $sceneAttachment); } public function testIfSceneAttachmentCreationFailsIfAttachmentIsNotSubclassOfAttachment() { $this->expectException(ArgumentException::class); $sceneAttachment = new SceneAttachment(InvalidTestAttachment::class, "Invalid Test Attachment"); } public function testIfValidSceneAttachmentCanBePersistedAndGottenBackFromTheDatabase() { $em = $this->getEntityManager(); $sceneAttachment = new SceneAttachment(TestAttachment::class, "Test Attachment"); // persist $em->persist($sceneAttachment); $em->flush(); $em->clear(); // retrieve $retrievedSceneAttachment = $em->getRepository(SceneAttachment::class)->find(TestAttachment::class); $this->assertInstanceOf(SceneAttachment::class, $retrievedSceneAttachment); // Delete again $em->remove($retrievedSceneAttachment); $em->flush(); } public function testIfSceneGettersReturnGivenValuesProperly() { $sceneAttachment = new SceneAttachment(TestAttachment::class, "Test Attachment"); $this->assertSame($sceneAttachment->getClass(), TestAttachment::class); $this->assertSame($sceneAttachment->getTitle(), "Test Attachment"); } public function testIfPersistingASceneAlsoPersistsASceneAttachment() { $em = $this->getEntityManager(); $scene = new Scene("Test scene", "A test scene"); $sceneAttachment = new SceneAttachment(TestAttachment::class, "Test Attachment"); $scene->addAttachment($sceneAttachment); $sceneId = $scene->getId(); // persist $em->persist($scene); $em->flush(); $em->clear(); // retrieve $retrievedSceneAttachment = $em->getRepository(SceneAttachment::class)->find(TestAttachment::class); // assert $this->assertInstanceOf(SceneAttachment::class, $retrievedSceneAttachment); $this->assertCount(1, $retrievedSceneAttachment->getScenes()); // remove scene $scene = $retrievedSceneAttachment->getScenes()[0]; $em->remove($scene); $em->flush(); $em->clear(); // retrieve $retrievedSceneAttachment = $em->getRepository(SceneAttachment::class)->find(TestAttachment::class); // assert $this->assertInstanceOf(SceneAttachment::class, $retrievedSceneAttachment); $this->assertCount(0, $retrievedSceneAttachment->getScenes()); // remove attachment $em->remove($retrievedSceneAttachment); $em->flush(); $em->clear(); // retrieve $retrievedSceneAttachment = $em->getRepository(SceneAttachment::class)->find(TestAttachment::class); // assert $this->assertNull($retrievedSceneAttachment); } }