test fixes

This commit is contained in:
Dennis Eichhorn 2021-10-25 20:06:48 +02:00
parent 48c8581ca7
commit 635904cd15
6 changed files with 119 additions and 14 deletions

View File

@ -242,6 +242,13 @@ final class ApiController extends Controller
*/
public function apiFileCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
if (!empty($val = $this->validateEditorFileCreate($request))) {
$response->set('file_create', new FormValidation($val));
$response->header->status = RequestStatusCode::R_400;
return;
}
$uploadedFiles = $request->getFiles() ?? [];
if (empty($uploadedFiles)) {
@ -272,4 +279,23 @@ final class ApiController extends Controller
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'File', 'File successfully updated', $uploaded);
}
/**
* Validate document create request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateEditorFileCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['doc'] = empty($request->getData('doc')))) {
return $val;
}
return [];
}
}

View File

@ -120,7 +120,10 @@ final class EditorDocMapper extends DataMapperAbstract
$depth = 3;
$query = self::getQuery(depth: $depth);
$query->where(self::$table . '_d' . $depth . '.editor_doc_virtual', '=', $virtualPath);
$query->where(self::$table . '_d' . $depth . '.editor_doc_created_by', '=', $account);
if (!empty($account)) {
$query->where(self::$table . '_d' . $depth . '.editor_doc_created_by', '=', $account);
}
return self::getAllByQuery($query, RelationType::ALL, $depth);
}

View File

@ -36,6 +36,7 @@ use phpOMS\Module\ModuleManager;
use phpOMS\Router\WebRouter;
use phpOMS\Uri\HttpUri;
use phpOMS\Utils\TestUtils;
use phpOMS\System\MimeType;
/**
* @internal
@ -104,6 +105,23 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
$request->header->account = 1;
$request->setData('title', 'Controller Test Title');
$request->setData('plain', 'Controller Test Description');
$request->setData('tags', '[{"title": "TestTitle", "color": "#f0f", "language": "en"}, {"id": 1}]');
if (!\is_file(__DIR__ . '/test_tmp.md')) {
\copy(__DIR__ . '/test.md', __DIR__ . '/test_tmp.md');
}
TestUtils::setMember($request, 'files', [
'file1' => [
'name' => 'test.md',
'type' => MimeType::M_TXT,
'tmp_name' => __DIR__ . '/test_tmp.md',
'error' => \UPLOAD_ERR_OK,
'size' => \filesize(__DIR__ . '/test_tmp.md'),
],
]);
$request->setData('media', \json_encode([1]));
$this->module->apiEditorCreate($request, $response);
@ -115,24 +133,66 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
* @covers Modules\Editor\Controller\ApiController
* @group module
*/
public function testCreateEditorDocWithExistingTag() : void
public function testCreateFileForDoc() : void
{
$tag = new Tag();
$tag->setL11n('EditorDocTest');
$tagId = TagMapper::create($tag);
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('title', 'Controller Test With Tag');
$request->setData('plain', 'Controller Test Description');
$request->setData('tag', '[' . $tagId . ']');
$request->setData('doc', '1');
$request->setData('name', 'NewUpload');
$this->module->apiEditorCreate($request, $response);
if (!\is_file(__DIR__ . '/test_tmp.md')) {
\copy(__DIR__ . '/test.md', __DIR__ . '/test_tmp.md');
}
self::assertEquals('Controller Test With Tag', $response->get('')['response']->title);
self::assertGreaterThan(0, $response->get('')['response']->getId());
TestUtils::setMember($request, 'files', [
'file1' => [
'name' => 'test.md',
'type' => MimeType::M_TXT,
'tmp_name' => __DIR__ . '/test_tmp.md',
'error' => \UPLOAD_ERR_OK,
'size' => \filesize(__DIR__ . '/test_tmp.md'),
],
]);
$request->setData('media', \json_encode([1]));
$this->module->apiFileCreate($request, $response);
self::assertCount(1, $response->get('')['response']);
}
/**
* @covers Modules\Editor\Controller\ApiController
* @group module
*/
public function testCreateFileForDocEmptyUpload() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('doc', '1');
$request->setData('name', 'MissingFile');
$this->module->apiFileCreate($request, $response);
self::assertEquals(RequestStatusCode::R_400, $response->header->status);
}
/**
* @covers Modules\Editor\Controller\ApiController
* @group module
*/
public function testCreateFileForDocInvalidData() : void
{
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('invalid', '1');
$this->module->apiFileCreate($request, $response);
self::assertEquals(RequestStatusCode::R_400, $response->header->status);
}
/**
@ -148,7 +208,6 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
$request->setData('title', 'Controller Test Title');
$this->module->apiEditorCreate($request, $response);
self::assertEquals(RequestStatusCode::R_400, $response->header->status);
}
@ -185,7 +244,6 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
$request->setData('id', '1');
$this->module->apiEditorGet($request, $response);
self::assertEquals('Changed Title', $response->get('')['response']->title);
}

3
tests/Controller/test.md Normal file
View File

@ -0,0 +1,3 @@
# Test Title
Some **test** text.

View File

@ -47,6 +47,9 @@ final class EditorDocMapperTest extends \PHPUnit\Framework\TestCase
self::assertEquals($doc->content, $docR->content);
self::assertEquals($doc->title, $docR->title);
self::assertEquals($doc->getVirtualPath(), $docR->getVirtualPath());
$docR2 = EditorDocMapper::getByVirtualPath('/some/test/path', 1);
self::assertEquals($docR, \reset($docR2));
}
/**

View File

@ -16,6 +16,7 @@ namespace Modules\Tasks\tests\Models;
use Modules\Admin\Models\NullAccount;
use Modules\Editor\Models\EditorDoc;
use Modules\Media\Models\Media;
use Modules\Tag\Models\Tag;
/**
@ -45,6 +46,7 @@ final class EditorDocTest extends \PHPUnit\Framework\TestCase
self::assertEquals('', $this->doc->content);
self::assertEquals('', $this->doc->plain);
self::assertEquals([], $this->doc->getTags());
self::assertEquals([], $this->doc->getMedia());
self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $this->doc->createdAt->format('Y-m-d'));
}
@ -111,6 +113,16 @@ final class EditorDocTest extends \PHPUnit\Framework\TestCase
self::assertCount(1, $this->doc->getTags());
}
/**
* @covers Modules\Editor\Models\EditorDoc
* @group module
*/
public function testMediaInputOutput() : void
{
$this->doc->addMedia(new Media());
self::assertCount(1, $this->doc->getMedia());
}
/**
* @covers Modules\Editor\Models\EditorDoc
* @group module