summaryrefslogtreecommitdiffstats
path: root/tests/Controller
diff options
context:
space:
mode:
authorArnold Daniels <arnold@jasny.net>2016-11-19 18:00:01 +0100
committerArnold Daniels <arnold@jasny.net>2016-11-19 18:00:01 +0100
commit6528ca8d1b058760da858f5c38aef20e5c1b4a22 (patch)
tree287e4e101b3745f2ac4b801db08b686f3e166d86 /tests/Controller
parent1132955bb52fd32c0669c817ddae94e8e6b2de48 (diff)
downloadcontroller-6528ca8d1b058760da858f5c38aef20e5c1b4a22.zip
controller-6528ca8d1b058760da858f5c38aef20e5c1b4a22.tar.gz
controller-6528ca8d1b058760da858f5c38aef20e5c1b4a22.tar.bz2
Implemented Input trait
Diffstat (limited to 'tests/Controller')
-rw-r--r--tests/Controller/InputTest.php224
-rw-r--r--tests/Controller/OutputTest.php3
2 files changed, 224 insertions, 3 deletions
diff --git a/tests/Controller/InputTest.php b/tests/Controller/InputTest.php
new file mode 100644
index 0000000..a76370a
--- /dev/null
+++ b/tests/Controller/InputTest.php
@@ -0,0 +1,224 @@
+<?php
+
+namespace Jasny\Controller;
+
+use Psr\Http\Message\ServerRequestInterface;
+use Psr\Http\Message\UploadedFileInterface;
+use Jasny\Controller\TestHelper;
+
+/**
+ * @covers Jasny\Controller\Input
+ */
+class InputTest extends \PHPUnit_Framework_TestCase
+{
+ use TestHelper;
+
+ public function queryParamsProvider()
+ {
+ return [
+ [null, null, 'wall',[]],
+ [[], null, 'wall', []],
+ [['foo' => 10], 10, 'wall', []],
+ [
+ ['foo' => 10, 'bar' => '', 'zoo' => ['monkey', 'lion'], 'qux' => ['a' => 10, 'b' => 20]],
+ 10, '', ['a' => 10, 'b' => 20]
+ ]
+ ];
+ }
+
+ /**
+ * @dataProvider queryParamsProvider
+ *
+ * @param array|null $data
+ */
+ public function testGetQueryParams($data)
+ {
+ $request = $this->createMock(ServerRequestInterface::class);
+ $request->expects($this->once())->method('getQueryParams')->willReturn($data);
+
+ $controller = $this->getController(['getRequest']);
+ $controller->method('getRequest')->willReturn($request);
+
+ $params = $controller->getQueryParams();
+ $this->assertSame((array)$data, $params);
+ }
+
+ /**
+ * @dataProvider queryParamsProvider
+ *
+ * @param array|null $data
+ * @param int $foo
+ * @param string $bar
+ * @param array $qux
+ */
+ public function testListQueryParams($data, $foo, $bar, $qux)
+ {
+ $request = $this->createMock(ServerRequestInterface::class);
+ $request->expects($this->once())->method('getQueryParams')->willReturn($data);
+
+ $controller = $this->getController(['getRequest']);
+ $controller->method('getRequest')->willReturn($request);
+
+ $list = $controller->getQueryParams(['bar' => 'wall', 'foo', 'qux' => []]);
+ $this->assertEquals([$bar, $foo, $qux], $list);
+ }
+
+
+
+ public function testHasQueryParams()
+ {
+ $request = $this->createMock(ServerRequestInterface::class);
+ $request->expects($this->any())->method('getQueryParams')
+ ->willReturn(['foo' => 10, 'bar' => '', 'buz' => null, 'qux' => ['a' => 10, 'b' => 20]]);
+
+ $controller = $this->getController(['getRequest']);
+ $controller->method('getRequest')->willReturn($request);
+
+ $this->assertTrue($controller->hasQueryParam('foo'), 'foo');
+ $this->assertTrue($controller->hasQueryParam('bar'), 'bar');
+ $this->assertTrue($controller->hasQueryParam('qux'), 'qux');
+
+ $this->assertFalse($controller->hasQueryParam('nop'), 'nop');
+ $this->assertFalse($controller->hasQueryParam('buz'), 'buz');
+ }
+
+ public function getQueryParamProvider()
+ {
+ return [
+ [10, 'foo'],
+ ['', 'bar'],
+ [null, 'buz'],
+ [['a' => 10], 'qux'],
+ [null, 'nop'],
+
+ [10, 'foo', 22],
+ ['', 'bar', 'woop'],
+ ['woop', 'buz', 'woop'],
+ ['woop', 'nop', 'woop'],
+
+ [10, 'foo', null, FILTER_SANITIZE_NUMBER_INT],
+ [10, 'fox', null, FILTER_SANITIZE_NUMBER_INT],
+ [22, 'nop', '22 pigs', FILTER_SANITIZE_NUMBER_INT],
+ [null, 'nop', 'woop', FILTER_SANITIZE_NUMBER_INT],
+
+ [10, 'foo', null, FILTER_VALIDATE_INT],
+ [false, 'fox', null, FILTER_VALIDATE_INT],
+ [false, 'nop', '22 pigs', FILTER_VALIDATE_INT],
+ [null, 'nop', null, FILTER_VALIDATE_INT],
+
+ [10, 'foo', null, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE],
+ [null, 'fox', null, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE],
+ [null, 'nop', '22 pigs', FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE],
+ [null, 'nop', null, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE]
+ ];
+ }
+
+ /**
+ * @dataProvider getQueryParamProvider
+ *
+ * @param mixed $expect
+ * @param array $param
+ * @param string $default
+ * @param int $filter
+ * @param array $filterOptions
+ */
+ public function testGetQueryParam($expect, ...$args)
+ {
+ $request = $this->createMock(ServerRequestInterface::class);
+ $request->expects($this->any())->method('getQueryParams')
+ ->willReturn(['foo' => 10, 'fox' => '10 foxes', 'bar' => '', 'buz' => null, 'qux' => ['a' => 10]]);
+
+ $controller = $this->getController(['getRequest']);
+ $controller->method('getRequest')->willReturn($request);
+
+ $value = $controller->getQueryParam(...(array)$args);
+
+ $this->assertEquals($expect, $value);
+ }
+
+
+ public function inputProvider()
+ {
+ $file = $this->createMock(UploadedFileInterface::class);
+ $qux = $this->createMock(UploadedFileInterface::class);
+
+ return [
+ [
+ [],
+ [],
+ [],
+ ],
+ [
+ ['foo' => 10],
+ [],
+ ['foo' => 10],
+ ],
+ [
+ ['foo' => 10],
+ null,
+ ['foo' => 10],
+ ],
+ [
+ ['foo' => 10, 'bar' => '', 'buz' => null, 'qux' => ['a' => 10, 'b' => 20]],
+ [],
+ ['foo' => 10, 'bar' => '', 'buz' => null, 'qux' => ['a' => 10, 'b' => 20]],
+ ],
+ [
+ ['foo' => 10, 'qux' => ['a' => 10, 'b' => 20]],
+ ['file' => $file],
+ ['foo' => 10, 'qux' => ['a' => 10, 'b' => 20], 'file' => $file],
+ ],
+ [
+ ['foo' => 10, 'qux' => ['a' => 10, 'b' => 20]],
+ ['foo' => $file],
+ ['foo' => $file, 'qux' => ['a' => 10, 'b' => 20]],
+ ],
+ [
+ ['foo' => 10, 'qux' => ['a' => 10, 'b' => 20]],
+ ['file' => $file, 'qux' => ['c' => $qux]],
+ ['foo' => 10, 'qux' => ['a' => 10, 'b' => 20, 'c' => $qux], 'file' => $file],
+ ],
+ [
+ ['foo' => 10, 'qux' => ['a' => 10, 'b' => 20]],
+ ['file' => $file, 'qux' => ['b' => $qux]],
+ ['foo' => 10, 'qux' => ['a' => 10, 'b' => $qux], 'file' => $file],
+ ],
+ [
+ [],
+ ['foo' => $file],
+ ['foo' => $file]
+ ],
+ [
+ null,
+ ['foo' => $file],
+ null
+ ],
+ [
+ new \stdClass(),
+ ['foo' => $file],
+ new \stdClass(),
+ ]
+ ];
+ }
+
+ /**
+ * @dataProvider inputProvider
+ *
+ * @param array|mixed $data
+ * @param array|null $files
+ * @param array|mixed $expect
+ */
+ public function testGetInput($data, $files, $expect)
+ {
+ $request = $this->createMock(ServerRequestInterface::class);
+ $request->expects($this->any())->method('getParsedBody')->willReturn($data);
+ $request->expects($this->any())->method('getUploadedFiles')->willReturn($files);
+
+ $controller = $this->getController(['getRequest']);
+ $controller->method('getRequest')->willReturn($request);
+
+ $input = $controller->getInput();
+
+ $this->assertEquals($expect, $input);
+ }
+}
diff --git a/tests/Controller/OutputTest.php b/tests/Controller/OutputTest.php
index 2793a14..7ca0aa4 100644
--- a/tests/Controller/OutputTest.php
+++ b/tests/Controller/OutputTest.php
@@ -2,9 +2,6 @@
namespace Jasny\Controller;
-use Jasny\Controller;
-use Jasny\Flash;
-use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\StreamInterface;
use Jasny\Controller\TestHelper;