oms-News/tests/Controller/Api/ApiControllerNewsArticleTrait.php
2020-12-03 23:07:33 +01:00

108 lines
3.1 KiB
PHP
Executable File

<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @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\News\tests\Controller\Api;
use Modules\News\Models\NewsArticleMapper;
use Modules\News\Models\NewsStatus;
use Modules\News\Models\NewsType;
use Modules\News\Models\NullNewsArticle;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse;
use phpOMS\Uri\HttpUri;
trait ApiControllerNewsArticleTrait
{
/**
* @testdox A news article can be created
* @covers Modules\News\Controller\ApiController
* @group module
*/
public function testApiNewsCreate() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('title', 'Controller Test Title');
$request->setData('plain', 'Controller Test Content');
$request->setData('lang', 'en');
$request->setData('type', NewsType::ARTICLE);
$request->setData('status', NewsStatus::DRAFT);
$request->setData('featred', true);
$this->module->apiNewsCreate($request, $response);
self::assertEquals('Controller Test Title', $response->get('')['response']->title);
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A news article can be returned
* @covers Modules\News\Controller\ApiController
* @group module
*/
public function testApiNewsGet() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('id', '1');
$this->module->apiNewsGet($request, $response);
self::assertGreaterThan(0, $response->get('')['response']->getId());
}
/**
* @testdox A news article can be updated
* @covers Modules\News\Controller\ApiController
* @group module
*/
public function testApiNewsUpdate() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('id', 1);
$request->setData('title', 'New Title');
$request->setData('plain', 'New Content here');
$this->module->apiNewsUpdate($request, $response);
$this->module->apiNewsGet($request, $response);
self::assertEquals('New Title', $response->get('')['response']->title);
}
/**
* @testdox A news article can be deleted
* @covers Modules\News\Controller\ApiController
* @group module
*/
public function testApiNewsDelete() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('id', 1);
$this->module->apiNewsDelete($request, $response);
self::assertEquals(1, $response->get('')['response']->getId());
self::assertInstanceOf(NullNewsArticle::class, NewsArticleMapper::get(1));
}
}