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

FEAT #8759 Unit tests create document

parent 2f781ad2
No related branches found
No related tags found
No related merge requests found
......@@ -15,11 +15,10 @@
namespace Attachment\controllers;
use Attachment\models\AttachmentModel;
use Convert\models\AdrModel;
use Docserver\controllers\DocserverController;
use Docserver\models\AdrModel;
use Docserver\models\DocserverModel;
use Document\controllers\DocumentController;
use Respect\Validation\Validator;
use Slim\Http\Request;
use Slim\Http\Response;
use SrcCore\models\ValidatorModel;
......@@ -53,7 +52,7 @@ class AttachmentController
return $response->withStatus(404)->withJson(['errors' => 'Attachment not found on docserver']);
}
//TODO Commenté pour tests
// TODO Commenté pour tests
// $fingerprint = DocserverController::getFingerPrint(['path' => $pathToDocument]);
// if ($adr[0]['fingerprint'] != $fingerprint) {
// return $response->withStatus(404)->withJson(['errors' => 'Fingerprints do not match']);
......
......@@ -12,7 +12,7 @@
* @author dev@maarch.org
*/
namespace Convert\models;
namespace Docserver\models;
use SrcCore\models\DatabaseModel;
use SrcCore\models\ValidatorModel;
......@@ -86,4 +86,18 @@ class AdrModel
return true;
}
public static function deleteDocumentAdr(array $aArgs)
{
ValidatorModel::notEmpty($aArgs, ['where', 'data']);
ValidatorModel::arrayType($aArgs, ['where', 'data']);
DatabaseModel::delete([
'table' => 'adr_main_documents',
'where' => $aArgs['where'],
'data' => $aArgs['data']
]);
return true;
}
}
......@@ -15,11 +15,11 @@
namespace Document\controllers;
use Attachment\controllers\AttachmentController;
use Docserver\models\AdrModel;
use Respect\Validation\Validator;
use setasign\Fpdi\Tcpdf\Fpdi;
use SrcCore\models\CoreConfigModel;
use Attachment\models\AttachmentModel;
use Convert\models\AdrModel;
use Docserver\controllers\DocserverController;
use Docserver\models\DocserverModel;
use Document\models\DocumentModel;
......@@ -326,6 +326,9 @@ class DocumentController
'where' => ['main_document_id = ?', 'type = ?'],
'data' => [$args['id'], 'HANDWRITTEN']
]);
if (empty($adr[0])) {
return $response->withJson(['encodedDocument' => null]);
}
$docserver = DocserverModel::getByType(['type' => 'HANDWRITTEN', 'select' => ['path']]);
if (empty($docserver['path']) || !file_exists($docserver['path'])) {
......@@ -357,7 +360,7 @@ class DocumentController
}
$status = StatusModel::getById(['select' => ['id', 'reference', 'label'], 'id' => $document['status']]);
$satus['mode'] = $document['mode'];
$status['mode'] = $document['mode'];
return $response->withJson(['status' => $status]);
}
......
......@@ -77,8 +77,8 @@ class DocumentModel
public static function create(array $aArgs)
{
ValidatorModel::notEmpty($aArgs, ['subject', 'status', 'processing_user', 'sender']);
ValidatorModel::stringType($aArgs, ['reference', 'subject', 'sender', 'sender_entity', 'recipient', 'priority']);
ValidatorModel::notEmpty($aArgs, ['subject', 'status', 'mode', 'processing_user', 'sender']);
ValidatorModel::stringType($aArgs, ['reference', 'subject', 'mode', 'sender', 'sender_entity', 'recipient', 'priority']);
ValidatorModel::intVal($aArgs, ['status', 'processing_user']);
$nextSequenceId = DatabaseModel::getNextSequenceValue(['sequenceId' => 'main_documents_id_seq']);
......@@ -89,6 +89,7 @@ class DocumentModel
'id' => $nextSequenceId,
'reference' => empty($aArgs['reference']) ? null : $aArgs['reference'],
'subject' => $aArgs['subject'],
'mode' => $aArgs['mode'],
'status' => $aArgs['status'],
'processing_user' => $aArgs['processing_user'],
'sender' => $aArgs['sender'],
......
......@@ -15,27 +15,30 @@ class DocumentControllerTest extends TestCase
public function testCreate()
{
$nextSequenceId = \SrcCore\models\DatabaseModel::getNextSequenceValue(['sequenceId' => 'main_documents_id_seq']);
\SrcCore\models\DatabaseModel::insert([
'table' => 'main_documents',
'columnsValues' => [
'id' => $nextSequenceId,
'reference' => '2018/A/1',
'subject' => 'Mon Courrier',
'doc_date' => 'CURRENT_TIMESTAMP',
'status' => 2,
'priority' => 'Urgent',
'sender' => 'Oliver Queen',
'sender_entity' => 'QE',
'processing_user' => 1,
'recipient' => 'Barry Allen',
'creation_date' => 'CURRENT_TIMESTAMP'
]
]);
$documentController = new \Document\controllers\DocumentController();
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
self::$id = $nextSequenceId;
$this->assertInternalType('int', self::$id);
$aArgs = [
'reference' => '2018/CR/7',
'subject' => 'Mon Courrier',
'mode' => 'SIGN',
'processing_user' => 1,
'sender' => 'Oliver Queen',
'sender_entity' => 'QE',
'recipient' => 'Barry Allen',
'priority' => 'Urgent',
'limit_date' => '2018-12-25',
'encodedZipDocument' => base64_encode(file_get_contents('test/unitTests/samples/testPdf.zip'))
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $documentController->create($fullRequest, new \Slim\Http\Response());
$responseBody = json_decode((string)$response->getBody());
$this->assertInternalType('int', $responseBody->documentId);
self::$id = $responseBody->documentId;
}
public function testGet()
......@@ -49,6 +52,7 @@ class DocumentControllerTest extends TestCase
$responseBody = json_decode((string)$response->getBody());
$this->assertInternalType('array', $responseBody->documents);
$this->assertNotEmpty($responseBody->documents);
}
public function testGetById()
......@@ -61,14 +65,17 @@ class DocumentControllerTest extends TestCase
$response = $documentController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame('2018/A/1', $responseBody->document->reference);
$this->assertSame('2018/CR/7', $responseBody->document->reference);
$this->assertSame('Mon Courrier', $responseBody->document->subject);
$this->assertSame(2, $responseBody->document->status);
$this->assertSame('SIGN', $responseBody->document->mode);
$this->assertSame(1, $responseBody->document->status);
$this->assertSame('Urgent', $responseBody->document->priority);
$this->assertSame('Oliver Queen', $responseBody->document->sender);
$this->assertSame('QE', $responseBody->document->sender_entity);
$this->assertSame(1, $responseBody->document->processing_user);
$this->assertSame('Barry Allen', $responseBody->document->recipient);
$this->assertInternalType('array', $responseBody->document->attachments);
$this->assertEmpty($responseBody->document->attachments);
$response = $documentController->getById($request, new \Slim\Http\Response(), ['id' => -1]);
$responseBody = json_decode((string)$response->getBody());
......@@ -76,6 +83,33 @@ class DocumentControllerTest extends TestCase
$this->assertSame('Document out of perimeter', $responseBody->errors);
}
public function testGetStatusById()
{
$documentController = new \Document\controllers\DocumentController();
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $documentController->getStatusById($request, new \Slim\Http\Response(), ['id' => self::$id]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame('NEW', $responseBody->status->reference);
$this->assertSame('SIGN', $responseBody->status->mode);
}
public function testGetHandwrittenDocumentById()
{
$documentController = new \Document\controllers\DocumentController();
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $documentController->getHandwrittenDocumentById($request, new \Slim\Http\Response(), ['id' => self::$id]);
$responseBody = json_decode((string)$response->getBody());
$this->assertEmpty($responseBody->encodedDocument);
}
public function testDelete()
{
\Document\models\DocumentModel::delete([
......@@ -83,6 +117,11 @@ class DocumentControllerTest extends TestCase
'data' => [self::$id]
]);
\Docserver\models\AdrModel::deleteDocumentAdr([
'where' => ['main_document_id = ?'],
'data' => [self::$id]
]);
$documentController = new \Document\controllers\DocumentController();
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
......
File added
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