add tests

This commit is contained in:
Dennis Eichhorn 2020-03-14 14:15:49 +01:00
parent f069bf670f
commit ad51c1a134
7 changed files with 432 additions and 0 deletions

26
tests/Admin/AdminTest.php Normal file
View File

@ -0,0 +1,26 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Media\Admin;
/**
* @internal
*/
class AdminTest extends \PHPUnit\Framework\TestCase
{
protected const MODULE_NAME = 'Media';
protected const URI_LOAD = 'http://127.0.0.1/en/backend/media';
use \Modules\tests\ModuleTestTrait;
}

94
tests/ControllerTest.php Normal file
View File

@ -0,0 +1,94 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Media;
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;
require_once __DIR__ . '/../Autoloader.php';
/**
* @internal
*/
class ControllerTest extends \PHPUnit\Framework\TestCase
{
protected $app = null;
protected $module = null;
protected function setUp() : void
{
$this->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);
}
}

BIN
tests/Files/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
tests/Files/logo2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

@ -0,0 +1,95 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Media\Models;
use Modules\Admin\Models\NullAccount;
use Modules\Media\Models\Collection;
use Modules\Media\Models\NullMedia;
/**
* @internal
*/
class CollectionTest extends \PHPUnit\Framework\TestCase
{
protected Collection $media;
protected function setUp() : void
{
$this->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());
}
}

View File

@ -0,0 +1,104 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Media\Models;
use Modules\Admin\Models\NullAccount;
use Modules\Media\Models\Media;
use Modules\Media\Models\MediaMapper;
/**
* @internal
*/
class MediaMapperTest extends \PHPUnit\Framework\TestCase
{
public function testCRUD() : void
{
$media = new Media();
$media->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());
}
}

113
tests/Models/MediaTest.php Normal file
View File

@ -0,0 +1,113 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\Media\Models;
use Modules\Admin\Models\NullAccount;
use Modules\Media\Models\Media;
/**
* @internal
*/
class MediaTest extends \PHPUnit\Framework\TestCase
{
protected Media $media;
protected function setUp() : void
{
$this->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());
}
}