|
|
@@ -1,14 +1,15 @@
|
|
|
<?php
|
|
|
|
|
|
-namespace Opentalent\OtCore\Tests\Unit\Repository;
|
|
|
+namespace Opentalent\OtCore\Tests\Unit\Domain\Repository;
|
|
|
|
|
|
-use Nimut\TestingFramework\TestCase\UnitTestCase;
|
|
|
-use Opentalent\OtCore\Domain\Repository\BaseApiRepository;
|
|
|
use GuzzleHttp\Client;
|
|
|
+use Opentalent\OtCore\Domain\Repository\BaseApiRepository;
|
|
|
use Opentalent\OtCore\Exception\ApiRequestException;
|
|
|
-use Opentalent\OtCore\Tests\Unit\Fixtures\ApiResponseFixtures;
|
|
|
-use TYPO3\CMS\Core\Core\ApplicationContext;
|
|
|
|
|
|
+/**
|
|
|
+ * Proxy to reveal the private methods of the abstract class BaseApiRepository
|
|
|
+ * @package Opentalent\OtCore\Tests\Unit\Domain\Repository
|
|
|
+ */
|
|
|
class ConcreteBaseApiRepository extends BaseApiRepository {
|
|
|
protected function memberToObject(array $member) { return $member; }
|
|
|
public function injectClient($client) { parent::injectClient($client); }
|
|
|
@@ -19,42 +20,9 @@ class ConcreteBaseApiRepository extends BaseApiRepository {
|
|
|
public function getApiRecords($uri, $params = []) { return parent::getApiRecords($uri, $params); }
|
|
|
}
|
|
|
|
|
|
-class BaseApiRepositoryTest extends UnitTestCase
|
|
|
+class BaseApiRepositoryTest extends AbstractApiRepositoryTestCase
|
|
|
{
|
|
|
- private $context;
|
|
|
- /**
|
|
|
- * @var ApiResponseFixtures
|
|
|
- */
|
|
|
- private $fixture;
|
|
|
- /**
|
|
|
- * @var ConcreteBaseApiRepository
|
|
|
- */
|
|
|
- private $baseApiRepository;
|
|
|
- /**
|
|
|
- * @var \Prophecy\Prophecy\ObjectProphecy
|
|
|
- */
|
|
|
- private $client;
|
|
|
-
|
|
|
- public function setUp() {
|
|
|
- // mock the application context
|
|
|
- $this->context = $this->prophesize(ApplicationContext::class);
|
|
|
- $this->context->isProduction()->willReturn(true);
|
|
|
-
|
|
|
- $this->client = $this->prophesize(Client::class);
|
|
|
- $this->baseApiRepository = new ConcreteBaseApiRepository($this->client->reveal(), $this->context->reveal());
|
|
|
-
|
|
|
- $this->fixture = new ApiResponseFixtures();
|
|
|
- }
|
|
|
-
|
|
|
- private function injectClientFor($uri) {
|
|
|
- // mock the Guzzle client
|
|
|
- $willReturn = $this->fixture->get($uri);
|
|
|
- $client = $this->prophesize(Client::class);
|
|
|
- $client->request(BaseApiRepository::HTTP_METHOD, $uri)
|
|
|
- ->shouldBeCalled()
|
|
|
- ->willReturn($willReturn);
|
|
|
- $this->inject($this->baseApiRepository, "client", $client->reveal());
|
|
|
- }
|
|
|
+ const TESTED_CLASS = 'Opentalent\OtCore\Tests\Unit\Domain\Repository\ConcreteBaseApiRepository';
|
|
|
|
|
|
/**
|
|
|
* get should build a valid url, send a query and
|
|
|
@@ -71,7 +39,7 @@ class BaseApiRepositoryTest extends UnitTestCase
|
|
|
$processed_uri = $base_uri . "?_format=json&itemsPerPage=10&foo=1";
|
|
|
|
|
|
$this->injectClientFor($processed_uri);
|
|
|
- $actual = $this->baseApiRepository->get($base_uri, $params);
|
|
|
+ $actual = $this->repository->get($base_uri, $params);
|
|
|
|
|
|
$this->assertEquals(200, $actual->getStatusCode());
|
|
|
}
|
|
|
@@ -91,7 +59,7 @@ class BaseApiRepositoryTest extends UnitTestCase
|
|
|
$processed_uri = $base_uri . "?_format=json&itemsPerPage=8";
|
|
|
|
|
|
$this->injectClientFor($processed_uri);
|
|
|
- $actual = $this->baseApiRepository->get($base_uri, $params);
|
|
|
+ $actual = $this->repository->get($base_uri, $params);
|
|
|
|
|
|
$this->assertEquals(200, $actual->getStatusCode());
|
|
|
}
|
|
|
@@ -112,10 +80,10 @@ class BaseApiRepositoryTest extends UnitTestCase
|
|
|
$client->request(BaseApiRepository::HTTP_METHOD, $processed_uri)
|
|
|
->shouldBeCalled()
|
|
|
->willThrow(new \GuzzleHttp\Exception\TransferException('error'));
|
|
|
- $this->inject($this->baseApiRepository, "client", $client->reveal());
|
|
|
+ $this->inject($this->repository, "client", $client->reveal());
|
|
|
|
|
|
try {
|
|
|
- $this->baseApiRepository->get($base_uri, $params);
|
|
|
+ $this->repository->get($base_uri, $params);
|
|
|
throw new \AssertionError("An ApiRequestException should have been thrown");
|
|
|
} catch (ApiRequestException $e) {
|
|
|
$this->assertEquals('error', $e->getMessage());
|
|
|
@@ -136,7 +104,7 @@ class BaseApiRepositoryTest extends UnitTestCase
|
|
|
$processed_uri = $base_uri . "?_format=json&itemsPerPage=10&foo=1";
|
|
|
|
|
|
$this->injectClientFor($processed_uri);
|
|
|
- $actual = $this->baseApiRepository->getBody($base_uri, $params);
|
|
|
+ $actual = $this->repository->getBody($base_uri, $params);
|
|
|
|
|
|
$this->assertEquals('{"@context": "/api/contexts/PortailOrganization"}', $actual);
|
|
|
}
|
|
|
@@ -155,7 +123,7 @@ class BaseApiRepositoryTest extends UnitTestCase
|
|
|
$processed_uri = $base_uri . "?_format=json&itemsPerPage=10&foo=1";
|
|
|
|
|
|
$this->injectClientFor($processed_uri);
|
|
|
- $actual = $this->baseApiRepository->getJsonDecoded($base_uri, $params);
|
|
|
+ $actual = $this->repository->getJsonDecoded($base_uri, $params);
|
|
|
|
|
|
$this->assertEquals(["@context" => "/api/contexts/PortailOrganization"], $actual);
|
|
|
}
|
|
|
@@ -172,7 +140,7 @@ class BaseApiRepositoryTest extends UnitTestCase
|
|
|
$processed_uri = $base_uri . "?_format=json&filter%5Bwhere%5D%5Bid%5D=1&page=1&totalItems=1&itemsPerPage=8";
|
|
|
$this->injectClientFor($processed_uri);
|
|
|
|
|
|
- $actual = $this->baseApiRepository->getApiFirstRecord($base_uri, $params);
|
|
|
+ $actual = $this->repository->getApiFirstRecord($base_uri, $params);
|
|
|
|
|
|
$this->assertEquals('PortailOrganization', $actual['@type']);
|
|
|
}
|
|
|
@@ -189,7 +157,7 @@ class BaseApiRepositoryTest extends UnitTestCase
|
|
|
$processed_uri = $base_uri . "?_format=json&filter%5Bwhere%5D%5Bid%5D=1&itemsPerPage=8";
|
|
|
$this->injectClientFor($processed_uri);
|
|
|
|
|
|
- $actual = $this->baseApiRepository->getApiRecords($base_uri, $params);
|
|
|
+ $actual = $this->repository->getApiRecords($base_uri, $params);
|
|
|
|
|
|
$this->assertEquals('PortailOrganization', $actual->getMembers()[0]['@type']);
|
|
|
}
|