1
0
Fork 0
mirror of https://codeberg.org/demostf/api.git synced 2026-06-03 18:04:08 +02:00

filter by backend

This commit is contained in:
Robin Appelman 2017-08-08 00:29:24 +02:00
commit df83a46e20
17 changed files with 265 additions and 38 deletions

View file

@ -0,0 +1,53 @@
<?php
declare(strict_types=1);
namespace Demostf\API\Test\Controllers;
use Demostf\API\Test\TestCase;
use flight\net\Request;
use flight\net\Response;
use flight\util\Collection;
abstract class ControllerTest extends TestCase {
/** @var string $responseData */
private $responseData;
protected function getRequest(array $get = [], array $post = [], array $files = []): Request {
/** @var Request $mock */
$mock = $this->getMockBuilder(Request::class)
->disableOriginalConstructor()
->setMethods([])
->getMock();
$mock->query = new Collection($get);
$mock->data = new Collection($post);
$mock->files = new Collection($files);
return $mock;
}
protected function getResponse() {
/** @var Response|\PHPUnit_Framework_MockObject_MockObject $mock */
$mock = $this->getMockBuilder(Response::class)
->disableOriginalConstructor()
->setMethods(['send'])
->getMock();
$mock->expects($this->any())
->method('send')
->willReturnCallback(function () use ($mock) {
$reflection = new \ReflectionClass($mock);
$bodyProperty = $reflection->getProperty('body');
$bodyProperty->setAccessible(true);
$this->responseData = $bodyProperty->getValue($mock);
});
return $mock;
}
protected function getResponseData() {
return $this->responseData;
}
}

View file

@ -0,0 +1,84 @@
<?php
declare(strict_types=1);
namespace Demostf\API\Test\Controllers;
use Demostf\API\Controllers\DemoController;
use Demostf\API\Providers\ChatProvider;
use Demostf\API\Providers\DemoListProvider;
use Demostf\API\Providers\DemoProvider;
class DemoControllerTest extends ControllerTest {
/** @var DemoProvider|\PHPUnit_Framework_MockObject_MockObject $demoProvider */
private $demoProvider;
/** @var ChatProvider|\PHPUnit_Framework_MockObject_MockObject $chatProvider */
private $chatProvider;
/** @var DemoListProvider|\PHPUnit_Framework_MockObject_MockObject $demoListProvider */
private $demoListProvider;
public function setUp() {
parent::setUp();
$this->demoProvider = $this->createMock(DemoProvider::class);
$this->chatProvider = $this->createMock(ChatProvider::class);
$this->demoListProvider = $this->createMock(DemoListProvider::class);
}
public function testGetBasicList() {
$controller = new DemoController(
$this->getRequest(),
$this->getResponse(),
$this->demoProvider,
$this->chatProvider,
$this->demoListProvider,
''
);
$this->demoListProvider->expects($this->once())
->method('listDemos')
->with(1, [], 'DESC')
->willReturn(['dummy']);
$controller->listDemos();
$this->assertEquals('["dummy"]', $this->getResponseData());
}
public function testGetListPageASC() {
$controller = new DemoController(
$this->getRequest(['page' => '3', 'order' => 'ASC']),
$this->getResponse(),
$this->demoProvider,
$this->chatProvider,
$this->demoListProvider,
''
);
$this->demoListProvider->expects($this->once())
->method('listDemos')
->with(3, [], 'ASC')
->willReturn(['dummy']);
$controller->listDemos();
$this->assertEquals('["dummy"]', $this->getResponseData());
}
public function testListFilterBackend() {
$controller = new DemoController(
$this->getRequest(['backend' => 'foo']),
$this->getResponse(),
$this->demoProvider,
$this->chatProvider,
$this->demoListProvider,
''
);
$this->demoListProvider->expects($this->once())
->method('listDemos')
->with(1, ['backend' => 'foo'], 'DESC')
->willReturn(['dummy']);
$controller->listDemos();
$this->assertEquals('["dummy"]', $this->getResponseData());
}
}