From a238adc6e485a555fa1b9faaa994e9fe35e5eeee Mon Sep 17 00:00:00 2001 From: "florian.azizian" <florian.azizian@maarch.org> Date: Thu, 15 Feb 2018 17:47:06 +0100 Subject: [PATCH] FEAT #76 administration doctype + TU --- core/Test/DoctypeControllerTest.php | 158 ++++++++++++++++-- phpunit.xml | 6 +- .../models/SecondLevelModelAbstract.php | 4 +- src/core/lang/lang-en.php | 3 + src/core/lang/lang-fr.php | 3 + 5 files changed, 158 insertions(+), 16 deletions(-) diff --git a/core/Test/DoctypeControllerTest.php b/core/Test/DoctypeControllerTest.php index 40a735530b6..c35fc13b2ee 100755 --- a/core/Test/DoctypeControllerTest.php +++ b/core/Test/DoctypeControllerTest.php @@ -10,6 +10,7 @@ */ use PHPUnit\Framework\TestCase; +use SrcCore\models\DatabaseModel; class FirstLevelControllerTest extends TestCase { @@ -26,10 +27,6 @@ class FirstLevelControllerTest extends TestCase $response = $firstLevelController->getTree($request, new \Slim\Http\Response()); $responseBody = json_decode((string)$response->getBody()); - self::$firstLevelId = $responseBody->structure[0]->doctypes_first_level_id; - self::$secondLevelId = $responseBody->structure[0]->secondeLevels[0]->doctypes_second_level_id; - self::$doctypeId = $responseBody->structure[0]->secondeLevels[0]->doctypes[0]->type_id; - $this->assertNotNull($responseBody->structure); $this->assertNotNull($responseBody->structure[0]->doctypes_first_level_id); $this->assertInternalType('int', $responseBody->structure[0]->doctypes_first_level_id); @@ -63,7 +60,7 @@ class FirstLevelControllerTest extends TestCase $this->assertNotNull($responseBody->firstLevel[0]->doctypes_first_level_label); } - public function testCreate() + public function testCreateFirstLevel() { $firstLevelController = new \Doctype\controllers\FirstLevelController(); @@ -105,7 +102,50 @@ class FirstLevelControllerTest extends TestCase $this->assertSame('Invalid foldertype_id', $responseBody->errors[1]); } - public function testUpdate() + public function testCreateSecondLevel() + { + $secondLevelController = new \Doctype\controllers\SecondLevelController(); + + // CREATE + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + + $aArgs = [ + 'doctypes_second_level_label' => 'testTUsecondlevel', + 'doctypes_first_level_id' => self::$firstLevelId, + 'css_style' => '#99999', + 'enabled' => 'Y', + ]; + $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); + + $response = $secondLevelController->create($fullRequest, new \Slim\Http\Response()); + $responseBody = json_decode((string)$response->getBody()); + + self::$secondLevelId = $responseBody->secondLevel->doctypes_second_level_id; + + $this->assertInternalType('int', self::$secondLevelId); + $this->assertSame('testTUsecondlevel', $responseBody->secondLevel->doctypes_second_level_label); + $this->assertSame(self::$firstLevelId, $responseBody->secondLevel->doctypes_first_level_id); + $this->assertSame('#99999', $responseBody->secondLevel->css_style); + $this->assertSame('Y', $responseBody->secondLevel->enabled); + + // CREATE FAIL + $aArgs = [ + 'doctypes_second_level_label' => '', + 'doctypes_first_level_id' => '', + 'css_style' => '#7777', + 'enabled' => 'gaz', + ]; + $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); + + $response = $secondLevelController->create($fullRequest, new \Slim\Http\Response()); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertSame('Invalid doctypes_second_level_label', $responseBody->errors[0]); + $this->assertSame('Invalid doctypes_first_level_id', $responseBody->errors[1]); + } + + public function testUpdateFirstLevel() { $firstLevelController = new \Doctype\controllers\FirstLevelController(); @@ -148,6 +188,50 @@ class FirstLevelControllerTest extends TestCase } + public function testUpdateSecondLevel() + { + $secondLevelController = new \Doctype\controllers\SecondLevelController(); + + // UPDATE + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + + $aArgs = [ + 'doctypes_second_level_label' => 'testTUsecondlevelUPDATE', + 'doctypes_first_level_id' => self::$firstLevelId, + 'css_style' => '#7777', + 'enabled' => 'Y', + ]; + $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); + + $response = $secondLevelController->update($fullRequest, new \Slim\Http\Response(), ["id" => self::$secondLevelId]); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertSame(self::$secondLevelId, $responseBody->secondLevel->doctypes_second_level_id); + $this->assertSame('testTUsecondlevelUPDATE', $responseBody->secondLevel->doctypes_second_level_label); + $this->assertSame(self::$firstLevelId, $responseBody->secondLevel->doctypes_first_level_id); + $this->assertSame('#7777', $responseBody->secondLevel->css_style); + $this->assertSame('Y', $responseBody->secondLevel->enabled); + + // UPDATE FAIL + $aArgs = [ + 'doctypes_second_level_label' => '', + 'doctypes_first_level_id' => '', + 'css_style' => '#7777', + 'enabled' => 'gaz', + ]; + $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); + + $response = $secondLevelController->update($fullRequest, new \Slim\Http\Response(), ["id" => 'gaz']); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertSame('Id is not a numeric', $responseBody->errors[0]); + $this->assertSame('Id gaz does not exists', $responseBody->errors[1]); + $this->assertSame('Invalid doctypes_second_level_label', $responseBody->errors[2]); + $this->assertSame('Invalid doctypes_first_level_id', $responseBody->errors[3]); + + } + public function testRead(){ // READ FIRST LEVEL $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); @@ -176,14 +260,52 @@ class FirstLevelControllerTest extends TestCase $responseBody = json_decode((string)$response->getBody()); $this->assertSame(self::$secondLevelId, $responseBody->secondLevel->doctypes_second_level_id); - $this->assertNotNull($responseBody->secondLevel->doctypes_second_level_label); - $this->assertNotNull($responseBody->secondLevel->doctypes_first_level_id); - $this->assertNotNull($responseBody->secondLevel->enabled); - $this->assertNotNull($responseBody->firstLevel); + $this->assertSame('testTUsecondlevelUPDATE', $responseBody->secondLevel->doctypes_second_level_label); + $this->assertSame(self::$firstLevelId, $responseBody->secondLevel->doctypes_first_level_id); + $this->assertSame(true, $responseBody->secondLevel->enabled); + + // READ SECOND LEVEL FAIL + $response = $secondLevelController->getById($request, new \Slim\Http\Response(), ["id" => 'GAZ']); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertSame('wrong format for id', $responseBody->errors); + } + + public function testDeleteSecondLevel() + { + $secondLevelController = new \Doctype\controllers\SecondLevelController(); + + // DELETE + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + + $aArgs = []; + $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); + + $response = $secondLevelController->delete($fullRequest, new \Slim\Http\Response(), ["id" => self::$secondLevelId]); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertSame(self::$secondLevelId, $responseBody->secondLevel->doctypes_second_level_id); + $this->assertSame(self::$firstLevelId, $responseBody->secondLevel->doctypes_first_level_id); + $this->assertSame('testTUsecondlevelUPDATE', $responseBody->secondLevel->doctypes_second_level_label); + $this->assertSame('#7777', $responseBody->secondLevel->css_style); + $this->assertSame('N', $responseBody->secondLevel->enabled); + + // DELETE FAIL + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + + $aArgs = []; + $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); + + $response = $secondLevelController->delete($fullRequest, new \Slim\Http\Response(), ["id" => 'gaz']); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertSame('Id is not a numeric', $responseBody->errors); } - public function testDelete() + public function testDeleteFirstLevel() { $firstLevelController = new \Doctype\controllers\FirstLevelController(); @@ -216,4 +338,18 @@ class FirstLevelControllerTest extends TestCase } + public function testDeleteSQL() + { + DatabaseModel::delete([ + 'table' => 'doctypes_first_level', + 'where' => ['doctypes_first_level_id = ?'], + 'data' => [self::$firstLevelId] + ]); + DatabaseModel::delete([ + 'table' => 'doctypes_second_level', + 'where' => ['doctypes_second_level_id = ?'], + 'data' => [self::$secondLevelId] + ]); + } + } diff --git a/phpunit.xml b/phpunit.xml index 2354743bb2a..f8c399f26ef 100755 --- a/phpunit.xml +++ b/phpunit.xml @@ -5,6 +5,7 @@ <!--directory>core/Test</directory--> <file>core/Test/ActionControllerTest.php</file> <file>core/Test/BasketControllerTest.php</file> + <file>core/Test/DoctypeControllerTest.php</file> <file>core/Test/NotificationControllerTest.php</file> <file>core/Test/NotificationScheduleControllerTest.php</file> <file>core/Test/ParameterControllerTest.php</file> @@ -21,11 +22,10 @@ </testsuites> <filter> <whitelist> - <directory suffix="Test.php">core/Test</directory> + <!-- <directory suffix="Test.php">core/Test</directory> --> <directory suffix=".php">src</directory> <directory suffix=".php">core/Controllers</directory> - <directory suffix=".php">core/Models</directory> - <directory suffix=".php">apps/maarch_entreprise/Models</directory> + <directory suffix=".php">core/Models</directory> <directory suffix=".php">modules/visa/Controllers</directory> <directory suffix=".php">modules/visa/Models</directory> <directory suffix=".php">modules/attachments/Controllers</directory> diff --git a/src/app/doctype/models/SecondLevelModelAbstract.php b/src/app/doctype/models/SecondLevelModelAbstract.php index 9e3ceb6d80a..81c39c55734 100644 --- a/src/app/doctype/models/SecondLevelModelAbstract.php +++ b/src/app/doctype/models/SecondLevelModelAbstract.php @@ -55,7 +55,7 @@ class SecondLevelModelAbstract public static function create(array $aArgs) { - ValidatorModel::notEmpty($aArgs, ['label', 'doctypes_first_level_id']); + ValidatorModel::notEmpty($aArgs, ['doctypes_second_level_label', 'doctypes_first_level_id']); ValidatorModel::intVal($aArgs, ['doctypes_first_level_id']); $aArgs['doctypes_second_level_id'] = DatabaseModel::getNextSequenceValue(['sequenceId' => 'doctypes_second_level_id_seq']); @@ -79,7 +79,7 @@ class SecondLevelModelAbstract 'data' => [$aArgs['doctypes_second_level_id']] ]); - return true; + return $aArgs; } public static function disabledFirstLevel(array $aArgs) diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php index 77e11f7e0a6..867d17a95bb 100644 --- a/src/core/lang/lang-en.php +++ b/src/core/lang/lang-en.php @@ -28,6 +28,9 @@ define('_DELETE_NOTIFICATIONS', 'Notification deleted'); define('_DOCTYPE_FIRSTLEVEL_ADDED', 'Doctype first level added'); define('_DOCTYPE_FIRSTLEVEL_DELETED', 'Doctype first level deleted'); define('_DOCTYPE_FIRSTLEVEL_UPDATED', 'Doctype first level edited'); +define('_DOCTYPE_SECONDLEVEL_ADDED', 'Doctype second level added'); +define('_DOCTYPE_SECONDLEVEL_DELETED', 'Doctype second level deleted'); +define('_DOCTYPE_SECONDLEVEL_UPDATED', 'Doctype second level edited'); define('_ENTITY_CREATION', 'Entity creation'); define('_ENTITY_MODIFICATION', 'Entity modification'); define('_ENTITY_SUPPRESSION', 'Entity suppression'); diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php index fcee1ff28ca..049749f60e6 100644 --- a/src/core/lang/lang-fr.php +++ b/src/core/lang/lang-fr.php @@ -28,6 +28,9 @@ define('_DELETE_NOTIFICATIONS', 'Notification supprimée'); define('_DOCTYPE_FIRSTLEVEL_ADDED', 'Chemise ajoutée'); define('_DOCTYPE_FIRSTLEVEL_DELETED', 'Chemise supprimée'); define('_DOCTYPE_FIRSTLEVEL_UPDATED', 'Chemise modifiée'); +define('_DOCTYPE_SECONDLEVEL_ADDED', 'Sous-chemise ajoutée'); +define('_DOCTYPE_SECONDLEVEL_DELETED', 'Sous-chemise supprimée'); +define('_DOCTYPE_SECONDLEVEL_UPDATED', 'Sous-chemise modifiée'); define('_ENTITY_CREATION', 'Création entité'); define('_ENTITY_MODIFICATION', 'Modification entité'); define('_ENTITY_SUPPRESSION', 'Suppression entité'); -- GitLab