Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix | V2 - Fixed Tests #34

Merged
merged 14 commits into from
Jan 2, 2023
Next Next commit
Fixing tests
  • Loading branch information
Sammyjo20 committed Dec 11, 2022
commit a1bf0fe0aa0ba2d86d6151f4acdb093ecbef9d0f
4 changes: 2 additions & 2 deletions config/saloon.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php declare(strict_types=1);

use Saloon\Laravel\Http\Senders\HttpSender;
use Saloon\Http\Senders\GuzzleSender;

return [

Expand All @@ -16,6 +16,6 @@
|
*/

'default_sender' => HttpSender::class,
'default_sender' => GuzzleSender::class,

];
3 changes: 2 additions & 1 deletion tests/Feature/MockRequestTest.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?php declare(strict_types=1);

use Saloon\Exceptions\NoMockResponseFoundException;
use Saloon\Laravel\Facades\Saloon;
use Saloon\Contracts\PendingRequest;
use Saloon\Http\Faking\MockResponse;
Expand Down Expand Up @@ -39,7 +40,7 @@
expect($responseC->json())->toEqual(['error' => 'Server Unavailable']);
expect($responseC->status())->toEqual(500);

$this->expectException(NoMockResponsesProvidedException::class);
$this->expectException(NoMockResponseFoundException::class);

$connector->send(new UserRequest);
});
Expand Down
28 changes: 20 additions & 8 deletions tests/Feature/PoolTest.php
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
<?php declare(strict_types=1);

use Saloon\Exceptions\Request\RequestException;
use Saloon\Http\PendingRequest;
use Saloon\Http\Faking\MockClient;
use Saloon\Http\Responses\Response;
use Saloon\Http\Faking\MockResponse;
use GuzzleHttp\Promise\PromiseInterface;
use GuzzleHttp\Exception\ConnectException;
use Saloon\Exceptions\FatalRequestException;
use Saloon\Exceptions\Request\FatalRequestException;
use Saloon\Contracts\Response as ResponseContract;
use Saloon\Laravel\Facades\Saloon;
use Saloon\Laravel\Tests\Fixtures\Requests\UserRequest;
use Saloon\Laravel\Tests\Fixtures\Requests\ErrorRequest;
use Saloon\Laravel\Tests\Fixtures\Connectors\TestConnector;
Expand Down Expand Up @@ -85,11 +87,11 @@
MockResponse::make(['name' => 'Error'], 500),
];

$mockClient = new MockClient($mockResponses);
Saloon::fake($mockResponses);

$connector = new TestConnector;
$connector->withMockClient($mockClient);
$count = 0;
$successCount = 0;
$errorCount = 0;

$pool = $connector->pool([
new UserRequest,
Expand All @@ -101,16 +103,26 @@

$pool->setConcurrency(6);

$pool->withResponseHandler(function (ResponseContract $response) use (&$count, $mockResponses) {
$pool->withResponseHandler(function (ResponseContract $response) use (&$successCount, $mockResponses) {
expect($response)->toBeInstanceOf(Response::class);
expect($response->json())->toEqual($mockResponses[$count]->getBody()->all());
expect($response->json())->toEqual($mockResponses[$successCount]->getBody()->all());

$count++;
$successCount++;
});

$pool->withExceptionHandler(function (RequestException $exception) use (&$errorCount) {
$response = $exception->getResponse();

expect($response)->toBeInstanceOf(Response::class);
expect($response->json())->toEqual(['name' => 'Error']);

$errorCount++;
});

$promise = $pool->send();

$promise->wait();

expect($count)->toEqual(5);
expect($successCount)->toEqual(4);
expect($errorCount)->toEqual(1);
});
5 changes: 3 additions & 2 deletions tests/Feature/RequestTest.php
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
<?php declare(strict_types=1);

use Saloon\Laravel\Tests\Fixtures\Connectors\TestConnector;
use Saloon\Laravel\Tests\Fixtures\Requests\UserRequest;
use Saloon\Laravel\Tests\Fixtures\Requests\ErrorRequest;

test('a request can be made successfully', function () {
$request = new UserRequest();
$response = $request->send();
$response = TestConnector::make()->send($request);

$data = $response->json();

Expand All @@ -21,7 +22,7 @@

test('a request can handle an exception properly', function () {
$request = new ErrorRequest();
$response = $request->send();
$response = TestConnector::make()->send($request);

expect($response->isMocked())->toBeFalse();
expect($response->status())->toEqual(500);
Expand Down
16 changes: 10 additions & 6 deletions tests/Feature/ResponseRecorderTest.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
<?php declare(strict_types=1);

use Saloon\Http\MockResponse;
use Saloon\Http\Faking\MockResponse;
use Saloon\Laravel\Facades\Saloon;
use Saloon\Laravel\Tests\Fixtures\Connectors\TestConnector;
use Saloon\Laravel\Tests\Fixtures\Requests\UserRequest;

test('you can record a response and you can get the recorded responses', function () {
Expand All @@ -13,7 +14,7 @@

expect(Saloon::isRecording())->toBeTrue();

$response = UserRequest::make()->send();
$response = TestConnector::make()->send(new UserRequest);

$recorded = Saloon::getRecordedResponses();

Expand All @@ -32,8 +33,9 @@

expect(Saloon::isRecording())->toBeTrue();

UserRequest::make()->send();
UserRequest::make()->send();
$connector = new TestConnector;
$connector->send(new UserRequest());
$connector->send(new UserRequest());

$recorded = Saloon::getRecordedResponses();

Expand All @@ -51,17 +53,19 @@
MockResponse::make(['id' => 2]),
]);

$connector = new TestConnector;

Saloon::record();

expect(Saloon::isRecording())->toBeTrue();

UserRequest::make()->send();
$connector->send(new UserRequest());

Saloon::stopRecording();

expect(Saloon::isRecording())->toBeFalse();

UserRequest::make()->send();
$connector->send(new UserRequest());

$recorded = Saloon::getRecordedResponses();

Expand Down
45 changes: 23 additions & 22 deletions tests/Unit/MockClientAssertionsTest.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<?php declare(strict_types=1);

use Saloon\Http\Request;
use Saloon\Http\MockResponse;
use Saloon\Http\SaloonResponse;
use Saloon\Http\Faking\MockResponse;
use Saloon\Http\Responses\Response;
use Saloon\Laravel\Facades\Saloon;
use GuzzleHttp\Exception\ConnectException;
use Saloon\Laravel\Tests\Fixtures\Connectors\TestConnector;
use Saloon\Laravel\Tests\Fixtures\Requests\UserRequest;
use Saloon\Laravel\Tests\Fixtures\Requests\ErrorRequest;

Expand All @@ -13,7 +14,7 @@
UserRequest::class => new MockResponse(['name' => 'Sam'], 200),
]);

(new UserRequest())->send();
TestConnector::make()->send(new UserRequest);

Saloon::assertSent(UserRequest::class);
});
Expand All @@ -25,11 +26,11 @@
]);

$originalRequest = new UserRequest();
$originalResponse = $originalRequest->send();
$originalResponse = TestConnector::make()->send($originalRequest);

Saloon::assertSent(function ($request, $response) use ($originalRequest, $originalResponse) {
expect($request)->toBeInstanceOf(Request::class);
expect($response)->toBeInstanceOf(SaloonResponse::class);
expect($response)->toBeInstanceOf(Response::class);

expect($request)->toBe($originalRequest);
expect($response)->toBe($originalResponse);
Expand All @@ -38,11 +39,11 @@
});

$newRequest = new ErrorRequest();
$newResponse = $newRequest->send();
$newResponse = TestConnector::make()->send($newRequest);

Saloon::assertSent(function ($request, $response) use ($newRequest, $newResponse) {
expect($request)->toBeInstanceOf(Request::class);
expect($response)->toBeInstanceOf(SaloonResponse::class);
expect($response)->toBeInstanceOf(Response::class);

expect($request)->toBe($newRequest);
expect($response)->toBe($newResponse);
Expand All @@ -56,7 +57,7 @@
UserRequest::class => new MockResponse(['name' => 'Sam'], 200),
]);

(new UserRequest())->send();
TestConnector::make()->send(new UserRequest);

Saloon::assertSent('saloon.dev/*');
Saloon::assertSent('/user');
Expand All @@ -69,7 +70,7 @@
ErrorRequest::class => new MockResponse(['error' => 'Server Error'], 500),
]);

(new ErrorRequest())->send();
TestConnector::make()->send(new ErrorRequest);

Saloon::assertNotSent(UserRequest::class);
});
Expand All @@ -81,7 +82,7 @@
]);

$originalRequest = new ErrorRequest();
$originalResponse = $originalRequest->send();
$originalResponse = TestConnector::make()->send($originalRequest);

Saloon::assertNotSent(function ($request) {
return $request instanceof UserRequest;
Expand All @@ -93,7 +94,7 @@
UserRequest::class => new MockResponse(['name' => 'Sam'], 200),
]);

(new UserRequest())->send();
TestConnector::make()->send(new UserRequest);

Saloon::assertNotSent('google.com/*');
Saloon::assertNotSent('/error');
Expand All @@ -104,7 +105,7 @@
UserRequest::class => new MockResponse(['name' => 'Sam'], 200),
]);

(new UserRequest())->send();
TestConnector::make()->send(new UserRequest);

Saloon::assertSentJson(UserRequest::class, [
'name' => 'Sam',
Expand All @@ -126,27 +127,27 @@
new MockResponse(['name' => 'Marcel'], 200),
]);

(new UserRequest())->send();
(new UserRequest())->send();
(new UserRequest())->send();
TestConnector::make()->send(new UserRequest);
TestConnector::make()->send(new UserRequest);
TestConnector::make()->send(new UserRequest);

Saloon::assertSentCount(3);
});

test('you can mock guzzle exceptions', function () {
test('you can mock exceptions', function () {
Saloon::fake([
MockResponse::make(['name' => 'Sam']),
MockResponse::make(['name' => 'Patrick'])->throw(fn ($guzzleRequest) => new ConnectException('Unable to connect!', $guzzleRequest)),
MockResponse::make(['name' => 'Patrick'])->throw(fn ($pendingRequest) => new Exception('Unable to connect!')),
]);

$okResponse = (new UserRequest)->send();
$okResponse = TestConnector::make()->send(new UserRequest);

expect($okResponse->json())->toEqual(['name' => 'Sam']);

$this->expectException(ConnectException::class);
$this->expectExceptionMessage('Unable to connect!');
$this->expectException(Exception::class);
$this->expectExceptionMessage('Custom Exception!');

(new UserRequest())->send();
TestConnector::make()->send(new UserRequest);
});

test('you can mock normal exceptions', function () {
Expand All @@ -157,5 +158,5 @@
$this->expectException(Exception::class);
$this->expectExceptionMessage('Custom Exception!');

(new UserRequest())->send();
TestConnector::make()->send(new UserRequest);
});
53 changes: 0 additions & 53 deletions tests/Unit/RequestManagerTest.php

This file was deleted.