From 4aaefcbcae26e7004f08c1dac64ea2fd96443438 Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Fri, 30 Jun 2017 14:08:44 +0100
Subject: [PATCH] FEAT #5661 start status administration MVC

---
 core/Controllers/StatusController.php |   4 +-
 core/Test/StatusControllerTest.php    | 107 ++++++++------------------
 core/Test/define.php                  |  16 ++++
 3 files changed, 50 insertions(+), 77 deletions(-)

diff --git a/core/Controllers/StatusController.php b/core/Controllers/StatusController.php
index 17733144188..1d48f689f4b 100644
--- a/core/Controllers/StatusController.php
+++ b/core/Controllers/StatusController.php
@@ -61,7 +61,7 @@ class StatusController
         return $response->withJson($datas);
     }
 
-    public function create(RequestInterface $request, ResponseInterface $response, $aArgs)
+    public function create(RequestInterface $request, ResponseInterface $response)
     {
         $errors = [];
 
@@ -95,7 +95,7 @@ class StatusController
         return $response->withJson($datas);
     }
 
-    public function update(RequestInterface $request, ResponseInterface $response, $aArgs)
+    public function update(RequestInterface $request, ResponseInterface $response)
     {
         $errors = [];
 
diff --git a/core/Test/StatusControllerTest.php b/core/Test/StatusControllerTest.php
index 63c743ef985..15e2019690a 100644
--- a/core/Test/StatusControllerTest.php
+++ b/core/Test/StatusControllerTest.php
@@ -1,7 +1,5 @@
 <?php
 
-namespace MaarchTest;
-
 /**
 * Copyright Maarch since 2008 under licence GPLv3.
 * See LICENCE.txt file at the root folder for more details.
@@ -9,75 +7,51 @@ namespace MaarchTest;
 *
 */
 
+namespace MaarchTest;
+
 require_once __DIR__.'/define.php';
 
 class StatusControllerTest extends \PHPUnit_Framework_TestCase
 {
     public function testGetList()
     {
-        $action = new \Core\Controllers\StatusController();
-
-        $environment = \Slim\Http\Environment::mock(
-            [
-                'REQUEST_METHOD' => 'GET',
-                //'REQUEST_URI' => '/status',
-                //'QUERY_STRING'=>'foo=bar',
-            ]
-        );
+        $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request     = \Slim\Http\Request::createFromEnvironment($environment);
+        $status      = new \Core\Controllers\StatusController();
 
-        $request = \Slim\Http\Request::createFromEnvironment($environment);
-        $response = new \Slim\Http\Response();
-        $response = $action->getList($request, $response, []);
+        $response  = $status->getList($request, new \Slim\Http\Response());
 
         $this->assertNotNull((string)$response->getBody());
     }
 
     public function testGetById()
     {
-        $action = new \Core\Controllers\StatusController();
-
-        $environment = \Slim\Http\Environment::mock(
-            [
-                'REQUEST_METHOD' => 'GET',
-            ]
-        );
-
-        $aArgs = [
-            'id'=> 'NEW'
-        ];
+        $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request     = \Slim\Http\Request::createFromEnvironment($environment);
+        $status      = new \Core\Controllers\StatusController();
 
-        $request = \Slim\Http\Request::createFromEnvironment($environment);
-        $response = new \Slim\Http\Response();
-        $response = $action->getById($request, $response, $aArgs);
-        $compare = '[[{"id":"NEW","label_status":"Nouveau",'
+        $response = $status->getById($request, new \Slim\Http\Response(), ['id' => 'NEW']);
+        $compare = '{"id":"NEW","label_status":"Nouveau",'
             . '"is_system":"Y","is_folder_status":"N","img_filename":'
             . '"fm-letter-status-new","maarch_module":"apps",'
-            . '"can_be_searched":"Y","can_be_modified":"Y"}]]';
-
-        $this->assertSame((string)$response->getBody(), $compare);
+            . '"can_be_searched":"Y","can_be_modified":"Y"}';
+            
+        $this->assertSame(json_encode(json_decode((string)$response->getBody())->status[0]), $compare);
     }
 
     public function testCreate()
     {
-        $action = new \Core\Controllers\StatusController();
-
-        $query  = 'id=TEST&';
-        $query .= 'label_status=TEST';
+        $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
+        $request     = \Slim\Http\Request::createFromEnvironment($environment);
+        $status      = new \Core\Controllers\StatusController();
 
-        $environment = \Slim\Http\Environment::mock(
-            [
-                'REQUEST_METHOD' => 'POST',
-                'QUERY_STRING'=> $query,
-            ]
-        );
-        
         $aArgs = [
-            'id'=> 'NEW'
+            'id'           => 'TEST',
+            'label_status' => 'TEST'
         ];
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
 
-        $request = \Slim\Http\Request::createFromEnvironment($environment);
-        $response = new \Slim\Http\Response();
-        $response = $action->create($request, $response, $aArgs);
+        $response = $status->create($fullRequest, new \Slim\Http\Response());
 
         $compare = '[[{"id":"TEST","label_status":"TEST",'
             . '"is_system":"Y","is_folder_status":"N","img_filename":null,'
@@ -89,25 +63,17 @@ class StatusControllerTest extends \PHPUnit_Framework_TestCase
 
     public function testUpdate()
     {
-        $action = new \Core\Controllers\StatusController();
-
-        $query  = 'id=TEST&';
-        $query .= 'label_status=TEST AFTER UP';
+        $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
+        $request     = \Slim\Http\Request::createFromEnvironment($environment);
+        $status      = new \Core\Controllers\StatusController();
 
-        $environment = \Slim\Http\Environment::mock(
-            [
-                'REQUEST_METHOD' => 'PUT',
-                'QUERY_STRING'=> $query,
-            ]
-        );
-        
         $aArgs = [
-            'id'=> 'NEW'
+            'id'           => 'TEST',
+            'label_status' => 'TEST AFTER UP'
         ];
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
 
-        $request = \Slim\Http\Request::createFromEnvironment($environment);
-        $response = new \Slim\Http\Response();
-        $response = $action->update($request, $response, $aArgs);
+        $response = $status->update($fullRequest, new \Slim\Http\Response());
 
         $compare = '[[{"id":"TEST","label_status":"TEST AFTER UP",'
             . '"is_system":"Y","is_folder_status":"N","img_filename":null,'
@@ -119,22 +85,13 @@ class StatusControllerTest extends \PHPUnit_Framework_TestCase
 
     public function testDelete()
     {
-        $action = new \Core\Controllers\StatusController();
+        $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
+        $request     = \Slim\Http\Request::createFromEnvironment($environment);
+        $status      = new \Core\Controllers\StatusController();
 
-        $environment = \Slim\Http\Environment::mock(
-            [
-                'REQUEST_METHOD' => 'DELETE',
-            ]
-        );
+        $response = $status->delete($request, new \Slim\Http\Response(), ['id'=> 'TEST']);
 
-        $aArgs = [
-            'id'=> 'TEST'
-        ];
 
-        $request = \Slim\Http\Request::createFromEnvironment($environment);
-        $response = new \Slim\Http\Response();
-        $response = $action->delete($request, $response, $aArgs);
-        
         $this->assertSame((string)$response->getBody(), '[true]');
     }
 }
diff --git a/core/Test/define.php b/core/Test/define.php
index 062c2701e2a..e9ac1e825d5 100644
--- a/core/Test/define.php
+++ b/core/Test/define.php
@@ -71,3 +71,19 @@ if ($_SESSION['error']) {
     echo $_SESSION['error'];
     exit();
 }
+
+class httpRequestCustom
+{
+    public static function addContentInBody($aArgs, $request){
+        $json = json_encode($aArgs);
+               
+        $stream = fopen('php://memory', 'r+');
+        fputs($stream, $json);        
+        rewind($stream);
+        $httpStream = new \Slim\Http\Stream($stream);
+        $request = $request->withBody($httpStream);
+        $request = $request->withHeader('Content-Type', 'application/json');
+
+        return $request;
+    }
+}
-- 
GitLab