. */ declare(strict_types=1); namespace Tests\Unit\Helpers\Help; use FireflyIII\Helpers\Help\Help; use GuzzleHttp\Client; use GuzzleHttp\Handler\MockHandler; use GuzzleHttp\HandlerStack; use GuzzleHttp\Psr7\Response; use Log; use Tests\TestCase; /** * * Class HelpTest * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.TooManyPublicMethods) */ class HelpTest extends TestCase { /** * */ public function setUp(): void { parent::setUp(); Log::info(sprintf('Now in %s.', get_class($this))); } /** * @covers \FireflyIII\Helpers\Help\Help */ public function testGetFromGitHub(): void { $headers = ['Content-Type' => 'application/json']; $response = new Response(200, $headers, 'Some help text.'); $mock = new MockHandler([$response]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); //client instance is bound to the mock here. $this->app->instance(Client::class, $client); // now let's see what happens: $help = new Help; $result = $help->getFromGitHub('test-route', 'en_US'); $this->assertEquals('
Some help text.
' . "\n", $result); } /** * @covers \FireflyIII\Helpers\Help\Help */ public function testGetFromGitHubError(): void { $headers = ['Content-Type' => 'application/json']; $response = new Response(500, $headers, 'Big bad error.'); $mock = new MockHandler([$response]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); //client instance is bound to the mock here. $this->app->instance(Client::class, $client); Log::warning('The following error is part of a test.'); // now let's see what happens: $help = new Help; $result = $help->getFromGitHub('test-route', 'en_US'); $this->assertEquals('', $result); } }