diff --git a/tests/functional/ProjectControllerTest.php b/tests/functional/ProjectControllerTest.php index 5b2ef487374db5b2bb54319d74e955c60e03f8f3..544ceb99fba2e5a55eecd3fe6f3253d25fc0ce63 100644 --- a/tests/functional/ProjectControllerTest.php +++ b/tests/functional/ProjectControllerTest.php @@ -46,12 +46,7 @@ class ProjectControllerTest extends WebTestCase { parent::tearDown(); - $capsule_repository = $this->object_manager->getRepository(Capsule::class); - $capsule = $capsule_repository->findOneBy(['name' => self::CAPSULE_NAME]); - - if (! $capsule instanceof Capsule) { - throw new \Exception("Capsule does not exist."); - } + $capsule = $this->getLastCapsuleInDb(); $this->deleteCapsuleDirectoryAndInDatabase($capsule); } @@ -234,6 +229,40 @@ class ProjectControllerTest extends WebTestCase $this->deleteCapsuleDirectoryAndInDatabase($duplicated_capsule_in_db); } + public function testVideoUrlNodeAttributeInXMLFileShouldBeUpdatedWhenUserEditVideoUrl(): void + { + $capsule = $this->createCapsule(); + $crawler = $this->client->request('GET', '/capsule/' . $capsule->getId() . '/edit_video_url'); + $this->assertResponseIsSuccessful(); + + $this->client->enableProfiler(); + + $submit_button = $crawler->selectButton('Save'); + $this->form = $submit_button->form(); + $new_video_url = "https://youtu.be/tQwVKr8rCYw"; + $this->form['edit_video_url_form[new_video_url]'] = $new_video_url; + $this->client->submit($this->form); + + $this->client->followRedirect(); + $this->assertResponseIsSuccessful('/my_capsules'); + + $capsule_directory = $capsule->getLinkPath(); + + $this->assertDirectoryExists($capsule_directory); + $this->assertDirectoryIsReadable($capsule_directory); + + $dom_xml = self::getDomDocument($capsule_directory); + $video_node = $dom_xml->getElementsByTagName('video')->item(0); + + if ($video_node === null) { + throw new \Exception("Video node could not be found in XML project file"); + } + + $video_url_in_xml_file = $video_node->getAttribute('url'); + + $this->assertEquals($new_video_url, $video_url_in_xml_file); + } + private function assertAllFilesOfFileDirectoryAreSameExceptPasswordOne( string $parent_capsule_directory, string $duplicated_capsule_directory @@ -254,7 +283,7 @@ class ProjectControllerTest extends WebTestCase } } - private function createCapsule(): void + private function createCapsule(): Capsule { $crawler = $this->client->request('GET', '/create'); $this->assertResponseIsSuccessful(); @@ -285,6 +314,8 @@ class ProjectControllerTest extends WebTestCase null, ['override' => true] ); + + return $capsule; } private function deleteCapsuleDirectoryAndInDatabase(Capsule $capsule): void @@ -298,4 +329,16 @@ class ProjectControllerTest extends WebTestCase $this->object_manager->remove($capsule_to_delete); $this->object_manager->flush(); } + + private function getLastCapsuleInDb(): Capsule + { + $capsule_repository = $this->object_manager->getRepository(Capsule::class); + $capsule = $capsule_repository->findOneBy(['name' => self::CAPSULE_NAME]); + + if (! $capsule instanceof Capsule) { + throw new \Exception("Capsule does not exist."); + } + + return $capsule; + } }