55 lines
1.6 KiB
PHP
55 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Web;
|
|
|
|
use GuzzleHttp\Client;
|
|
use GuzzleHttp\Exception\ClientException;
|
|
use GuzzleHttp\Exception\ConnectException;
|
|
use GuzzleHttp\Handler\MockHandler;
|
|
use GuzzleHttp\HandlerStack;
|
|
use GuzzleHttp\Psr7\Request;
|
|
use GuzzleHttp\Psr7\Response;
|
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
|
use PhpOffice\PhpSpreadsheet\Calculation\Web;
|
|
use PhpOffice\PhpSpreadsheet\Settings;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class WebServiceTest extends TestCase
|
|
{
|
|
protected static $client;
|
|
|
|
public static function setUpBeforeClass(): void
|
|
{
|
|
// Prevent URL requests being sent out
|
|
$mock = new MockHandler([
|
|
new ClientException('This is not a valid URL', new Request('GET', 'test'), new Response()),
|
|
new ConnectException('This is a 404 error', new Request('GET', 'test')),
|
|
new Response('200', [], str_repeat('a', 40000)),
|
|
new Response('200', [], 'This is a test'),
|
|
]);
|
|
|
|
$handlerStack = HandlerStack::create($mock);
|
|
self::$client = new Client(['handler' => $handlerStack]);
|
|
}
|
|
|
|
protected function setUp(): void
|
|
{
|
|
Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider providerWEBSERVICE
|
|
*/
|
|
public function testWEBSERVICE(string $expectedResult, string $url): void
|
|
{
|
|
Settings::setHttpClient(self::$client);
|
|
$result = Web::WEBSERVICE($url);
|
|
self::assertEquals($expectedResult, $result);
|
|
}
|
|
|
|
public function providerWEBSERVICE(): array
|
|
{
|
|
return require 'tests/data/Calculation/Web/WEBSERVICE.php';
|
|
}
|
|
}
|