diff --git a/tests/Controller/Api/ApiControllerCollectionTrait.php b/tests/Controller/Api/ApiControllerCollectionTrait.php new file mode 100644 index 0000000..6176791 --- /dev/null +++ b/tests/Controller/Api/ApiControllerCollectionTrait.php @@ -0,0 +1,89 @@ +getHeader()->setAccount(1); + $request->setData('name', 'Test Upload'); + + if (!\file_exists(__DIR__ . '/temp')) { + \mkdir(__DIR__ . '/temp'); + } + + \copy(__DIR__ . '/testFile1.txt', __DIR__ . '/temp/testFile1.txt'); + \copy(__DIR__ . '/testFile2.txt', __DIR__ . '/temp/testFile2.txt'); + + $files = [ + [ + 'error' => \UPLOAD_ERR_OK, + 'type' => 'txt', + 'name' => 'testFile1.txt', + 'tmp_name' => __DIR__ . '/temp/testFile1.txt', + 'size' => \filesize(__DIR__ . '/testFile1.txt'), + ], + [ + 'error' => \UPLOAD_ERR_OK, + 'type' => 'txt', + 'name' => 'testFile2.txt', + 'tmp_name' => __DIR__ . '/temp/testFile2.txt', + 'size' => \filesize(__DIR__ . '/testFile2.txt'), + ], + ]; + + TestUtils::setMember($request, 'files', $files); + + $this->module->apiMediaUpload($request, $response); + + if (\file_exists(__DIR__ . '/temp')) { + Directory::delete(__DIR__ . '/temp'); + } + + $media = []; + $createdMedia = $response->get('')['response']; + foreach ($createdMedia as $file) { + $media[] = $file; + } + + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('name', 'Test Collection'); + $request->setData('virtualpath', '/'); + $request->setData('media-list', \json_encode($media)); + + $this->module->apiCollectionCreate($request, $response); + + $collection = $response->get('')['response']; + self::assertEquals('Test Collection', $collection); + self::assertCount(2, $collection->getSources()); + } +} diff --git a/tests/Controller/Api/ApiControllerMediaTrait.php b/tests/Controller/Api/ApiControllerMediaTrait.php new file mode 100644 index 0000000..8930313 --- /dev/null +++ b/tests/Controller/Api/ApiControllerMediaTrait.php @@ -0,0 +1,110 @@ + 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); + } + + /** + * @covers Modules\Media\Controller\ApiController + * @group module + */ + public function testApiMediaUpload() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('name', 'Test Upload'); + + if (!\file_exists(__DIR__ . '/temp')) { + \mkdir(__DIR__ . '/temp'); + } + + \copy(__DIR__ . '/testFile1.txt', __DIR__ . '/temp/testFile1.txt'); + \copy(__DIR__ . '/testFile2.txt', __DIR__ . '/temp/testFile2.txt'); + + $files = [ + [ + 'error' => \UPLOAD_ERR_OK, + 'type' => 'txt', + 'name' => 'testFile1.txt', + 'tmp_name' => __DIR__ . '/temp/testFile1.txt', + 'size' => \filesize(__DIR__ . '/testFile1.txt'), + ], + [ + 'error' => \UPLOAD_ERR_OK, + 'type' => 'txt', + 'name' => 'testFile2.txt', + 'tmp_name' => __DIR__ . '/temp/testFile2.txt', + 'size' => \filesize(__DIR__ . '/testFile2.txt'), + ], + ]; + + TestUtils::setMember($request, 'files', $files); + + $this->module->apiMediaUpload($request, $response); + + if (\file_exists(__DIR__ . '/temp')) { + Directory::delete(__DIR__ . '/temp'); + } + + $media = $response->get('')['response']; + self::assertCount(2, $media); + } +} diff --git a/tests/Controller/ApiControllerTest.php b/tests/Controller/ApiControllerTest.php index ded5d9c..8f6170f 100644 --- a/tests/Controller/ApiControllerTest.php +++ b/tests/Controller/ApiControllerTest.php @@ -15,13 +15,14 @@ declare(strict_types=1); namespace Modules\Media\tests\Controller; use Model\CoreSettings; -use Modules\Media\Models\UploadStatus; use phpOMS\Account\AccountManager; use phpOMS\Application\ApplicationAbstract; use phpOMS\Dispatcher\Dispatcher; use phpOMS\Event\EventManager; use phpOMS\Module\ModuleManager; use phpOMS\Router\WebRouter; +use Modules\Media\tests\Controller\Api\ApiControllerMediaTrait; +use Modules\Media\tests\Controller\Api\ApiControllerCollectionTrait; /** * @internal @@ -53,40 +54,6 @@ class ApiControllerTest extends \PHPUnit\Framework\TestCase $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); - } + use ApiControllerMediaTrait; + use ApiControllerCollectionTrait; }