diff --git a/tests/Admin/AdminTest.php b/tests/Admin/AdminTest.php new file mode 100644 index 0000000..2bdb4b5 --- /dev/null +++ b/tests/Admin/AdminTest.php @@ -0,0 +1,26 @@ +app = new class() extends ApplicationAbstract + { + protected string $appName = 'Api'; + }; + + $this->app->dbPool = $GLOBALS['dbpool']; + $this->app->orgId = 1; + $this->app->appName = 'Backend'; + $this->app->accountManager = new AccountManager($GLOBALS['session']); + $this->app->appSettings = new CoreSettings($this->app->dbPool->get()); + $this->app->moduleManager = new ModuleManager($this->app, __DIR__ . '/../../../Modules'); + $this->app->dispatcher = new Dispatcher($this->app); + $this->app->eventManager = new EventManager($this->app->dispatcher); + $this->app->eventManager->importFromFile(__DIR__ . '/../../../Web/Api/Hooks.php'); + + $this->app->router = new WebRouter(); + + $this->module = $this->app->moduleManager->get('Media'); + } + + /** + * @covers Modules\Media\Controller\ApiController + * @group module + */ + public function testCreateDbEntries() : void + { + $status = [ + [ + 'status' => UploadStatus::OK, + 'extension' => 'png', + 'filename' => 'logo.png', + 'name' => 'logo.png', + 'path' => 'Modules/tests/Media/Files/', + 'size' => 90210, + ], + [ + 'status' => UploadStatus::FAILED_HASHING, + 'extension' => 'png', + 'filename' => 'logo.png', + 'name' => 'logo.png', + 'path' => 'Modules/tests/Media/Files/', + 'size' => 90210, + ], + [ + 'status' => UploadStatus::OK, + 'extension' => 'png', + 'filename' => 'logo2.png', + 'name' => 'logo2.png', + 'path' => 'Modules/tests/Media/Files/', + 'size' => 90210, + ], + ]; + + $ids = $this->module->createDbEntries($status, 1); + self::assertCount(2, $ids); + } +} diff --git a/tests/Files/logo.png b/tests/Files/logo.png new file mode 100644 index 0000000..27d7f3c Binary files /dev/null and b/tests/Files/logo.png differ diff --git a/tests/Files/logo2.png b/tests/Files/logo2.png new file mode 100644 index 0000000..27d7f3c Binary files /dev/null and b/tests/Files/logo2.png differ diff --git a/tests/Models/CollectionTest.php b/tests/Models/CollectionTest.php new file mode 100644 index 0000000..98e7e46 --- /dev/null +++ b/tests/Models/CollectionTest.php @@ -0,0 +1,95 @@ +media = new Collection(); + } + + public function testDefault() : void + { + self::assertEquals(0, $this->media->getId()); + self::assertEquals(0, $this->media->getCreatedBy()->getId()); + self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $this->media->getCreatedAt()->format('Y-m-d')); + self::assertEquals('collection', $this->media->getExtension()); + self::assertEquals('', $this->media->getPath()); + self::assertEquals('', $this->media->getName()); + self::assertEquals('', $this->media->getDescription()); + self::assertEquals(0, $this->media->getSize()); + self::assertFalse($this->media->isVersioned()); + self::assertEquals([], $this->media->getSources()); + } + + public function testCreatedByInputOutput() : void + { + $this->media->setCreatedBy(new NullAccount(1)); + self::assertEquals(1, $this->media->getCreatedBy()->getId()); + } + + public function testExtensionInputOutput() : void + { + $this->media->setExtension('pdf'); + self::assertEquals('collection', $this->media->getExtension()); + } + + public function testPathInputOutput() : void + { + $this->media->setPath('/home/root'); + self::assertEquals('/home/root', $this->media->getPath()); + } + + public function testDescriptionInputOutput() : void + { + $this->media->setDescription('This is a description'); + self::assertEquals('This is a description', $this->media->getDescription()); + } + + public function testSizeInputOutput() : void + { + $this->media->setSize(11); + self::assertEquals(11, $this->media->getSize()); + } + + public function testVersionedInputOutput() : void + { + $this->media->setVersioned(true); + self::assertFalse($this->media->isVersioned()); + } + + public function testSourceInputOutput() : void + { + $this->media->setSources([new NullMedia(1), new NullMedia(2), new NullMedia(3)]); + self::assertEquals([new NullMedia(1), new NullMedia(2), new NullMedia(3)], $this->media->getSources()); + } + + public function testSourceAddInputOutput() : void + { + $this->media->setSources([new NullMedia(1), new NullMedia(2), new NullMedia(3)]); + $this->media->addSource(new NullMedia(4)); + self::assertEquals([new NullMedia(1), new NullMedia(2), new NullMedia(3), new NullMedia(4)], $this->media->getSources()); + } +} diff --git a/tests/Models/MediaMapperTest.php b/tests/Models/MediaMapperTest.php new file mode 100644 index 0000000..cfda666 --- /dev/null +++ b/tests/Models/MediaMapperTest.php @@ -0,0 +1,104 @@ +setCreatedBy(new NullAccount(1)); + $media->setDescription('desc'); + $media->setDescriptionRaw('descRaw'); + $media->setPath('some/path'); + $media->setSize(11); + $media->setExtension('png'); + $media->setName('Image'); + $id = MediaMapper::create($media); + + self::assertGreaterThan(0, $media->getId()); + self::assertEquals($id, $media->getId()); + + $mediaR = MediaMapper::get($media->getId()); + self::assertEquals($media->getCreatedAt()->format('Y-m-d'), $mediaR->getCreatedAt()->format('Y-m-d')); + self::assertEquals($media->getCreatedBy()->getId(), $mediaR->getCreatedBy()->getId()); + self::assertEquals($media->getDescription(), $mediaR->getDescription()); + self::assertEquals($media->getDescriptionRaw(), $mediaR->getDescriptionRaw()); + self::assertEquals($media->getPath(), $mediaR->getPath()); + self::assertEquals($media->isAbsolute(), $mediaR->isAbsolute()); + self::assertEquals($media->getSize(), $mediaR->getSize()); + self::assertEquals($media->getExtension(), $mediaR->getExtension()); + self::assertEquals($media->getName(), $mediaR->getName()); + } + + public function testAbsolute() : void + { + $media = new Media(); + $media->setCreatedBy(new NullAccount(1)); + $media->setDescription('desc'); + $media->setPath('https://avatars0.githubusercontent.com/u/16034994'); + $media->setAbsolute(true); + $media->setSize(11); + $media->setExtension('png'); + $media->setName('Absolute path'); + $id = MediaMapper::create($media); + + self::assertGreaterThan(0, $media->getId()); + self::assertEquals($id, $media->getId()); + + $mediaR = MediaMapper::get($media->getId()); + self::assertEquals($media->getCreatedAt()->format('Y-m-d'), $mediaR->getCreatedAt()->format('Y-m-d')); + self::assertEquals($media->getCreatedBy()->getId(), $mediaR->getCreatedBy()->getId()); + self::assertEquals($media->getDescription(), $mediaR->getDescription()); + self::assertEquals($media->getPath(), $mediaR->getPath()); + self::assertEquals($media->isAbsolute(), $mediaR->isAbsolute()); + self::assertEquals($media->getSize(), $mediaR->getSize()); + self::assertEquals($media->getExtension(), $mediaR->getExtension()); + self::assertEquals($media->getName(), $mediaR->getName()); + } + + public function testDirectoryMapping() : void + { + $media = new Media(); + $media->setCreatedBy(new NullAccount(1)); + $media->setDescription('desc'); + $media->setPath(\realpath(__DIR__ . '/../../../../../')); + $media->setAbsolute(true); + $media->setSize(11); + $media->setExtension('collection'); + $media->setName('Directory'); + $id = MediaMapper::create($media); + + self::assertGreaterThan(0, $media->getId()); + self::assertEquals($id, $media->getId()); + + $mediaR = MediaMapper::get($media->getId()); + self::assertEquals($media->getCreatedAt()->format('Y-m-d'), $mediaR->getCreatedAt()->format('Y-m-d')); + self::assertEquals($media->getCreatedBy()->getId(), $mediaR->getCreatedBy()->getId()); + self::assertEquals($media->getDescription(), $mediaR->getDescription()); + self::assertEquals($media->getPath(), $mediaR->getPath()); + self::assertEquals($media->isAbsolute(), $mediaR->isAbsolute()); + self::assertEquals($media->getSize(), $mediaR->getSize()); + self::assertEquals($media->getExtension(), $mediaR->getExtension()); + self::assertEquals($media->getName(), $mediaR->getName()); + } +} diff --git a/tests/Models/MediaTest.php b/tests/Models/MediaTest.php new file mode 100644 index 0000000..10844ae --- /dev/null +++ b/tests/Models/MediaTest.php @@ -0,0 +1,113 @@ +media = new Media(); + } + + public function testDefault() : void + { + self::assertEquals(0, $this->media->getId()); + self::assertEquals(0, $this->media->getCreatedBy()->getId()); + self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $this->media->getCreatedAt()->format('Y-m-d')); + self::assertEquals('', $this->media->getExtension()); + self::assertEquals('', $this->media->getPath()); + self::assertFalse($this->media->isAbsolute()); + self::assertEquals('', $this->media->getName()); + self::assertEquals('', $this->media->getDescription()); + self::assertEquals('', $this->media->getDescriptionRaw()); + self::assertEquals('/', $this->media->getVirtualPath()); + self::assertEquals(0, $this->media->getSize()); + self::assertFalse($this->media->isVersioned()); + } + + public function testCreatedByInputOutput() : void + { + $this->media->setCreatedBy(new NullAccount(1)); + self::assertEquals(1, $this->media->getCreatedBy()->getId()); + } + + public function testExtensionInputOutput() : void + { + $this->media->setExtension('pdf'); + self::assertEquals('pdf', $this->media->getExtension()); + } + + public function testPathInputOutput() : void + { + $this->media->setPath('/home/root'); + self::assertEquals('/home/root', $this->media->getPath()); + } + + public function testAbsolutePathInputOutput() : void + { + $this->media->setAbsolute(true); + self::assertTrue($this->media->isAbsolute()); + } + + public function testNameInputOutput() : void + { + $this->media->setName('Report'); + self::assertEquals('Report', $this->media->getName()); + } + + public function testDescriptionInputOutput() : void + { + $this->media->setDescription('This is a description'); + self::assertEquals('This is a description', $this->media->getDescription()); + } + + public function testDescriptionRawInputOutput() : void + { + $this->media->setDescriptionRaw('This is a description raw'); + self::assertEquals('This is a description raw', $this->media->getDescriptionRaw()); + } + + public function testSizeInputOutput() : void + { + $this->media->setSize(11); + self::assertEquals(11, $this->media->getSize()); + } + + public function testVersionedInputOutput() : void + { + $this->media->setVersioned(true); + self::assertTrue($this->media->isVersioned()); + } + + public function testVirtualPathInputOutput() : void + { + $this->media->setVirtualPath('/test/path'); + self::assertEquals('/test/path', $this->media->getVirtualPath()); + } + + public function testHiddenInputOutput() : void + { + $this->media->setHidden(true); + self::assertTrue($this->media->isHidden()); + } +}