fix media test

This commit is contained in:
Dennis Eichhorn 2023-09-29 16:42:23 +00:00
parent e868ad0e11
commit c4d1048431
3 changed files with 34 additions and 4 deletions

View File

@ -562,6 +562,13 @@ final class ApiController extends Controller
*/ */
public function apiMediaUpdate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void public function apiMediaUpdate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void
{ {
if (!empty($val = $this->validateMediaUpdate($request))) {
$response->header->status = RequestStatusCode::R_400;
$this->createInvalidUpdateResponse($request, $response, $val);
return;
}
/** @var Media $old */ /** @var Media $old */
$old = MediaMapper::get()->where('id', (int) $request->getData('id'))->execute(); $old = MediaMapper::get()->where('id', (int) $request->getData('id'))->execute();
$new = $this->updateMediaFromRequest($request, clone $old); $new = $this->updateMediaFromRequest($request, clone $old);
@ -570,6 +577,25 @@ final class ApiController extends Controller
$this->createStandardUpdateResponse($request, $response, $new); $this->createStandardUpdateResponse($request, $response, $new);
} }
/**
* Validate media update request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool> Returns the validation array of the request
*
* @since 1.0.0
*/
private function validateMediaUpdate(RequestAbstract $request) : array
{
$val = [];
if (($val['id'] = !$request->hasData('id'))) {
return $val;
}
return [];
}
/** /**
* Method to update media from request. * Method to update media from request.
* *
@ -599,6 +625,7 @@ final class ApiController extends Controller
return $new; return $new;
} }
// @todo: create test for this content change and the parsed content change
if ($request->hasData('content')) { if ($request->hasData('content')) {
\file_put_contents( \file_put_contents(
$new->isAbsolute $new->isAbsolute

View File

@ -244,8 +244,9 @@ trait ApiControllerMediaTrait
$request->header->account = 1; $request->header->account = 1;
$request->setData('id', $id); $request->setData('id', $id);
$request->setData('name', 'Test Changed'); $request->setData('name', 'New name');
$request->setData('content', 'Test Changed'); $request->setData('description', 'New description');
$request->setData('content', 'New content');
$this->module->apiMediaUpdate($request, $response); $this->module->apiMediaUpdate($request, $response);
$media = MediaMapper::get() $media = MediaMapper::get()
@ -253,8 +254,9 @@ trait ApiControllerMediaTrait
->where('id', $id) ->where('id', $id)
->execute(); ->execute();
self::assertEquals('Test Changed', $media->name); self::assertEquals('New name', $media->name);
self::assertEquals('Test Changed', $media->content?->content); self::assertEquals('New description', $media->description);
self::AssertEquals('New content', \file_get_contents($media->getAbsolutePath()));
Directory::delete(__DIR__ . '/../test'); Directory::delete(__DIR__ . '/../test');
} }

View File

@ -46,6 +46,7 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
$this->app = new class() extends ApplicationAbstract $this->app = new class() extends ApplicationAbstract
{ {
protected string $appName = 'Api'; protected string $appName = 'Api';
protected int $appId = 1;
}; };
$this->app->dbPool = $GLOBALS['dbpool']; $this->app->dbPool = $GLOBALS['dbpool'];