11 use Psr\Log\LoggerInterface;
22 private $httpContentProvider;
32 private $urlBuilderMock;
37 private $httpClientMock;
41 $this->loggerMock = $this->getMockBuilder(LoggerInterface::class)
42 ->getMockForAbstractClass();
43 $this->urlBuilderMock = $this->getMockBuilder(UrlBuilder::class)
44 ->disableOriginalConstructor()
45 ->setMethods([
'getUrl'])
47 $this->httpClientMock = $this->getMockBuilder(ClientInterface::class)
48 ->getMockForAbstractClass();
52 HttpContentProvider::class,
54 'httpClient' => $this->httpClientMock,
55 'urlBuilder' => $this->urlBuilderMock,
56 'logger' => $this->loggerMock
69 $this->urlBuilderMock->expects($this->any())
72 $this->httpClientMock->expects($this->once())
75 $this->httpClientMock->expects($this->once())
78 $this->httpClientMock->expects($this->once())
81 $this->loggerMock->expects($this->never())
94 $this->urlBuilderMock->expects($this->any())
98 $this->httpClientMock->expects($this->once())
101 ->will($this->throwException(
new \Exception));
102 $this->httpClientMock->expects($this->never())->method(
'getBody');
103 $this->loggerMock->expects($this->once())
106 $this->assertFalse($this->httpContentProvider->getContent(
$version,
$edition, $locale));
114 $urlLocale =
'https://content.url.example/'.
$version .
'/' .
$edition .
'/' . $locale .
'.json';
115 $urlDefaultLocale =
'https://content.url.example/'.
$version .
'/' .
$edition .
'/en_US.json';
116 $response =
'{"return":"default-locale"}';
118 $this->urlBuilderMock->expects($this->exactly(2))
124 ->willReturnOnConsecutiveCalls($urlLocale, $urlDefaultLocale);
125 $this->httpClientMock->expects($this->exactly(2))
127 ->withConsecutive([$urlLocale], [$urlDefaultLocale]);
128 $this->httpClientMock->expects($this->exactly(2))
130 ->willReturnOnConsecutiveCalls(
'',
$response);
131 $this->httpClientMock->expects($this->exactly(2))
132 ->method(
'getStatus')
133 ->willReturnOnConsecutiveCalls(404, 200);
134 $this->loggerMock->expects($this->never())
149 $urlLocale =
'https://content.url.example/'.
$version .
'/' .
$edition .
'/' . $locale .
'.json';
150 $urlDefaultLocale =
'https://content.url.example/'.
$version .
'/' .
$edition .
'/en_US.json';
151 $urlDefault =
'https://content.url.example/' .
$version .
'/default.json';
153 $this->urlBuilderMock->expects($this->exactly(3))
160 ->willReturnOnConsecutiveCalls($urlLocale, $urlDefaultLocale, $urlDefault);
161 $this->httpClientMock->expects($this->exactly(3))
163 ->withConsecutive([$urlLocale], [$urlDefaultLocale], [$urlDefault]);
164 $this->httpClientMock->expects($this->exactly(3))
166 ->willReturnOnConsecutiveCalls(
'',
'',
$response);
167 $this->httpClientMock->expects($this->exactly(3))
168 ->method(
'getStatus')
169 ->willReturnOnConsecutiveCalls(404, 404, 200);
170 $this->loggerMock->expects($this->never())
186 '{"return":"default-fr_FR"}' 192 '{"return":"default-en_US"}' 198 '{"return":"empty-fr_FR"}' 204 '{"return":"empty-en_US"}'
foreach(array_keys($composerData['require']) as $requiredPackage) if(empty($edition)) if(!empty($opts['edition'])) $edition
testGetContentSuccessOnLocaleDefault()
getGetContentOnDefaultOrEmptyProvider()
testGetContentSuccessOnDefaultOrEmpty($version, $edition, $locale, $response)