From 232c4c06108ea9a5026ea3e0041cb64284a724fb Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Wed, 31 Jan 2018 11:14:18 +0100
Subject: [PATCH] FEAT #34 Reports unit test

---
 core/Test/ReportControllerTest.php | 100 +++++++++++++++++++++++++++++
 phpunit.xml                        |   5 +-
 2 files changed, 103 insertions(+), 2 deletions(-)
 create mode 100644 core/Test/ReportControllerTest.php

diff --git a/core/Test/ReportControllerTest.php b/core/Test/ReportControllerTest.php
new file mode 100644
index 00000000000..fda6d573c5e
--- /dev/null
+++ b/core/Test/ReportControllerTest.php
@@ -0,0 +1,100 @@
+<?php
+
+/**
+* Copyright Maarch since 2008 under licence GPLv3.
+* See LICENCE.txt file at the root folder for more details.
+* This file is part of Maarch software.
+*
+*/
+
+use PHPUnit\Framework\TestCase;
+
+class ReportControllerTest extends TestCase
+{
+    private static $id = null;
+
+    public function testGetGroups()
+    {
+        $reportController = new \Report\controllers\ReportController();
+
+        //  GET
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response       = $reportController->getGroups($request, new \Slim\Http\Response());
+        $responseBody   = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->groups);
+
+        self::$id = $responseBody->groups[0]->group_id;
+    }
+
+    public function testUpdateForGroupId()
+    {
+        $reportController = new \Report\controllers\ReportController();
+
+        //  GET
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response       = $reportController->getByGroupId($request, new \Slim\Http\Response(), ['groupId' => self::$id]);
+        $responseBody   = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->reports);
+
+        foreach ($responseBody->reports as $key => $report) {
+            $responseBody->reports[$key]->checked = true;
+        }
+
+        //  PUT
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+
+        $fullRequest = \httpRequestCustom::addContentInBody($responseBody->reports, $request);
+
+        $response       = $reportController->updateForGroupId($fullRequest, new \Slim\Http\Response(), ['groupId' => self::$id]);
+        $responseBody   = json_decode((string)$response->getBody());
+
+        $this->assertSame('success', $responseBody->success);
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response       = $reportController->getByGroupId($request, new \Slim\Http\Response(), ['groupId' => self::$id]);
+        $responseBody   = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->reports);
+
+        foreach ($responseBody->reports as $key => $report) {
+            $this->assertSame(true, $report->checked);
+            if ($key % 2) {
+                $responseBody->reports[$key]->checked = false;
+            }
+        }
+
+        //  PUT
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+
+        $fullRequest = \httpRequestCustom::addContentInBody($responseBody->reports, $request);
+
+        $response       = $reportController->updateForGroupId($fullRequest, new \Slim\Http\Response(), ['groupId' => self::$id]);
+        $responseBody   = json_decode((string)$response->getBody());
+
+        $this->assertSame('success', $responseBody->success);
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response       = $reportController->getByGroupId($request, new \Slim\Http\Response(), ['groupId' => self::$id]);
+        $responseBody   = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->reports);
+
+        foreach ($responseBody->reports as $key => $report) {
+            if ($key % 2) {
+                $this->assertSame(false, $report->checked);
+            } else {
+                $this->assertSame(true, $report->checked);
+            }
+        }
+    }
+}
diff --git a/phpunit.xml b/phpunit.xml
index da77dcd82fb..0864bb1b9c6 100755
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -5,10 +5,11 @@
             <!--directory>core/Test</directory-->
             <!--file>core/Test/ActionControllerTest.php</file-->
             <file>core/Test/ResControllerTest.php</file>
-            <file>core/Test/PriorityControllerTest.php</file>
-            <file>core/Test/StatusControllerTest.php</file>
             <file>core/Test/UserControllerTest.php</file>
             <file>core/Test/BasketControllerTest.php</file>
+            <file>core/Test/PriorityControllerTest.php</file>
+            <file>core/Test/StatusControllerTest.php</file>
+            <file>core/Test/ReportControllerTest.php</file>
             <file>modules/convert/Test/ProcessConvertTest.php</file>
             <file>modules/convert/Test/ProcessFulltextTest.php</file>
             <file>modules/convert/Test/ProcessThumbnailsTest.php</file>
-- 
GitLab