Skip to content
Snippets Groups Projects
Verified Commit f04a7642 authored by Damien's avatar Damien
Browse files

FEAT #9104 get export + com unit tests

parent 5cf93545
No related branches found
No related tags found
No related merge requests found
......@@ -101,8 +101,8 @@ CREATE TABLE exports_templates
(
id serial NOT NULL,
user_id INTEGER NOT NULL,
delimiter character varying(3),
type character varying(3) NOT NULL,
delimiter character varying(3),
data json DEFAULT '[]' NOT NULL,
CONSTRAINT exports_templates_pkey PRIMARY KEY (id),
CONSTRAINT exports_templates_unique_key UNIQUE (user_id, type)
......
......@@ -38,15 +38,18 @@ class ExportController
{
$currentUser = UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$template = ExportTemplateModel::getByUserId(['userId' => $currentUser['id']]);
$delimiter = '';
$templateData = [];
if (!empty($template)) {
$delimiter = $template['delimiter'];
$templateData = (array)json_decode($template['data']);
$rawTemplates = ExportTemplateModel::getByUserId(['userId' => $currentUser['id']]);
$templates = ['pdf' => [], 'csv' => []];
foreach ($rawTemplates as $rawTemplate) {
if ($rawTemplate['type'] == 'pdf') {
$templates['pdf'] = ['data' => (array)json_decode($rawTemplate['data'])];
} elseif ($rawTemplate['type'] == 'csv') {
$templates['csv'] = ['delimiter' => $rawTemplate['delimiter'], 'data' => (array)json_decode($rawTemplate['data'])];
}
}
return $response->withJson(['template' => $templateData, 'delimiter' => $delimiter]);
return $response->withJson(['templates' => $templates]);
}
public function updateExport(Request $request, Response $response, array $aArgs)
......@@ -60,12 +63,14 @@ class ExportController
$body = $request->getParsedBody();
if (!Validator::stringType()->notEmpty()->validate($body['delimiter']) || !in_array($body['delimiter'], [',', ';', 'TAB'])) {
return $response->withStatus(400)->withJson(['errors' => 'Delimiter is not set or not set well']);
if (!Validator::stringType()->notEmpty()->validate($body['type']) || !in_array($body['type'], ['pdf', 'csv'])) {
return $response->withStatus(400)->withJson(['errors' => 'Data type is empty or not a string between [\'pdf\', \'csv\']']);
} elseif ($body['type'] == 'csv' && (!Validator::stringType()->notEmpty()->validate($body['delimiter']) || !in_array($body['delimiter'], [',', ';', 'TAB']))) {
return $response->withStatus(400)->withJson(['errors' => 'Delimiter is empty or not a string between [\',\', \';\', \'TAB\']']);
} elseif (!Validator::arrayType()->notEmpty()->validate($body['data'])) {
return $response->withStatus(400)->withJson(['errors' => 'Data is not an array or empty']);
return $response->withStatus(400)->withJson(['errors' => 'Data data is empty or not an array']);
} elseif (!Validator::arrayType()->notEmpty()->validate($body['resources'])) {
return $response->withStatus(403)->withJson(['errors' => 'Resources is not set or empty']);
return $response->withStatus(403)->withJson(['errors' => 'Data resources is empty or not an array']);
}
foreach ($body['data'] as $value) {
......
......@@ -32,24 +32,21 @@ class ExportTemplateModel
'data' => [$aArgs['userId']]
]);
if (empty($exportTemplates[0])) {
return [];
}
return $exportTemplates[0];
return $exportTemplates;
}
public static function create(array $aArgs)
{
ValidatorModel::notEmpty($aArgs, ['userId', 'delimiter', 'data']);
ValidatorModel::stringType($aArgs, ['delimiter', 'data']);
ValidatorModel::notEmpty($aArgs, ['userId', 'type', 'data']);
ValidatorModel::stringType($aArgs, ['type', 'delimiter', 'data']);
ValidatorModel::intVal($aArgs, ['userId']);
DatabaseModel::insert([
'table' => 'exports_templates',
'columnsValues' => [
'user_id' => $aArgs['userId'],
'delimiter' => $aArgs['delimiter'],
'type' => $aArgs['type'],
'delimiter' => empty($aArgs['delimiter']) ? null : $aArgs['delimiter'],
'data' => $aArgs['data']
]
]);
......
......@@ -11,131 +11,131 @@ use PHPUnit\Framework\TestCase;
class ExportControllerTest extends TestCase
{
public function testGetExportTemplate()
{
$exportController = new \Resource\controllers\ExportController();
// GET
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $exportController->getExportTemplate($request, new \Slim\Http\Response());
$responseBody = json_decode((string)$response->getBody());
$this->assertInternalType('array', $responseBody->template);
$this->assertInternalType('string', $responseBody->delimiter);
}
public function testUpdateExport()
{
$GLOBALS['userId'] = 'bbain';
$ExportController = new \Resource\controllers\ExportController();
// PUT
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$aArgs = [
"resources" => $GLOBALS['resources'],
"delimiter" => ';',
"data" => [
[
"value" => "subject",
"label" => "Sujet",
"isFunction" => false
],
[
"value" => "getStatus",
"label" => "Status",
"isFunction" => true
],
[
"value" => "getPriority",
"label" => "Priorité",
"isFunction" => true
],
[
"value" => "getCopyEntities",
"label" => "Copies",
"isFunction" => true
],
[
"value" => "getDetailLink",
"label" => "Lien page détaillé",
"isFunction" => true
],
[
"value" => "getParentFolder",
"label" => "Dossier",
"isFunction" => true
],
[
"value" => "getInitiatorEntity",
"label" => "Entité initiatrice",
"isFunction" => true
],
[
"value" => "getDestinationEntity",
"label" => "Entité traitante",
"isFunction" => true
],
[
"value" => "getDestinationEntityType",
"label" => "Entité traitante",
"isFunction" => true
],
[
"value" => "getCategory",
"label" => "Catégorie",
"isFunction" => true
],
]
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $ExportController->updateExport($fullRequest, new \Slim\Http\Response(), ['userId' => 19, 'groupId' => 2, 'basketId' => 10]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame(null, $responseBody);
// GET
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $ExportController->getExportTemplate($request, new \Slim\Http\Response());
$responseBody = json_decode((string)$response->getBody());
$template = (array)$responseBody->template;
foreach ($template as $key => $value) {
$template[$key] = (array)$value;
}
$this->assertSame($aArgs['data'], $template);
$this->assertSame(';', $responseBody->delimiter);
//ERRORS
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
unset($aArgs['data'][2]['label']);
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $ExportController->updateExport($fullRequest, new \Slim\Http\Response(), ['userId' => 19, 'groupId' => 2, 'basketId' => 10]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame('One data is not set well', $responseBody->errors);
unset($aArgs['data']);
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $ExportController->updateExport($fullRequest, new \Slim\Http\Response(), ['userId' => 19, 'groupId' => 2, 'basketId' => 10]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame('Data is not an array or empty', $responseBody->errors);
$aArgs['delimiter'] = 't';
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $ExportController->updateExport($fullRequest, new \Slim\Http\Response(), ['userId' => 19, 'groupId' => 2, 'basketId' => 10]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame('Delimiter is not set or not set well', $responseBody->errors);
$GLOBALS['userId'] = 'superadmin';
}
// public function testGetExportTemplate()
// {
// $exportController = new \Resource\controllers\ExportController();
//
// // GET
// $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
// $request = \Slim\Http\Request::createFromEnvironment($environment);
//
// $response = $exportController->getExportTemplate($request, new \Slim\Http\Response());
// $responseBody = json_decode((string)$response->getBody());
//
// $this->assertInternalType('array', $responseBody->template);
// $this->assertInternalType('string', $responseBody->delimiter);
// }
//
// public function testUpdateExport()
// {
// $GLOBALS['userId'] = 'bbain';
//
// $ExportController = new \Resource\controllers\ExportController();
//
// // PUT
// $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
// $request = \Slim\Http\Request::createFromEnvironment($environment);
//
// $aArgs = [
// "resources" => $GLOBALS['resources'],
// "delimiter" => ';',
// "data" => [
// [
// "value" => "subject",
// "label" => "Sujet",
// "isFunction" => false
// ],
// [
// "value" => "getStatus",
// "label" => "Status",
// "isFunction" => true
// ],
// [
// "value" => "getPriority",
// "label" => "Priorité",
// "isFunction" => true
// ],
// [
// "value" => "getCopyEntities",
// "label" => "Copies",
// "isFunction" => true
// ],
// [
// "value" => "getDetailLink",
// "label" => "Lien page détaillé",
// "isFunction" => true
// ],
// [
// "value" => "getParentFolder",
// "label" => "Dossier",
// "isFunction" => true
// ],
// [
// "value" => "getInitiatorEntity",
// "label" => "Entité initiatrice",
// "isFunction" => true
// ],
// [
// "value" => "getDestinationEntity",
// "label" => "Entité traitante",
// "isFunction" => true
// ],
// [
// "value" => "getDestinationEntityType",
// "label" => "Entité traitante",
// "isFunction" => true
// ],
// [
// "value" => "getCategory",
// "label" => "Catégorie",
// "isFunction" => true
// ],
// ]
// ];
// $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
//
// $response = $ExportController->updateExport($fullRequest, new \Slim\Http\Response(), ['userId' => 19, 'groupId' => 2, 'basketId' => 10]);
// $responseBody = json_decode((string)$response->getBody());
//
// $this->assertSame(null, $responseBody);
//
// // GET
// $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
// $request = \Slim\Http\Request::createFromEnvironment($environment);
//
// $response = $ExportController->getExportTemplate($request, new \Slim\Http\Response());
// $responseBody = json_decode((string)$response->getBody());
//
// $template = (array)$responseBody->template;
// foreach ($template as $key => $value) {
// $template[$key] = (array)$value;
// }
// $this->assertSame($aArgs['data'], $template);
// $this->assertSame(';', $responseBody->delimiter);
//
//
// //ERRORS
// $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
// $request = \Slim\Http\Request::createFromEnvironment($environment);
//
// unset($aArgs['data'][2]['label']);
// $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
// $response = $ExportController->updateExport($fullRequest, new \Slim\Http\Response(), ['userId' => 19, 'groupId' => 2, 'basketId' => 10]);
// $responseBody = json_decode((string)$response->getBody());
// $this->assertSame('One data is not set well', $responseBody->errors);
//
// unset($aArgs['data']);
// $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
// $response = $ExportController->updateExport($fullRequest, new \Slim\Http\Response(), ['userId' => 19, 'groupId' => 2, 'basketId' => 10]);
// $responseBody = json_decode((string)$response->getBody());
// $this->assertSame('Data is not an array or empty', $responseBody->errors);
//
// $aArgs['delimiter'] = 't';
// $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
// $response = $ExportController->updateExport($fullRequest, new \Slim\Http\Response(), ['userId' => 19, 'groupId' => 2, 'basketId' => 10]);
// $responseBody = json_decode((string)$response->getBody());
// $this->assertSame('Delimiter is not set or not set well', $responseBody->errors);
//
// $GLOBALS['userId'] = 'superadmin';
// }
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment