Skip to content

Commit

Permalink
feat(Testing): Ensure that CreateRequest return request with correct …
Browse files Browse the repository at this point in the history
…url and json accept header
  • Loading branch information
pionl committed Nov 16, 2022
1 parent 0ddce86 commit a9d1a29
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 6 deletions.
1 change: 1 addition & 0 deletions phpunit.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,6 @@
<php>
<env name="DB_CONNECTION" value="testing"/>
<env name="APP_KEY" value="base64:2fl+Ktvkfl+Fuz4Qp/A75G2RTiWVA/ZoKZvp6fiiM10="/>
<env name="APP_URL" value="https://testing" />
</php>
</phpunit>
28 changes: 24 additions & 4 deletions src/Testing/Concerns/CreateRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

use Illuminate\Foundation\Application;
use Illuminate\Http\Request;
use Illuminate\Routing\UrlGenerator;
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;

trait CreateRequest
{
Expand All @@ -16,10 +18,28 @@ trait CreateRequest
*
* @return TRequest
*/
public function createPostRequest(Application $application, string $requestClass, array $data): object
{
$request = new Request(request: $data);
$request->setMethod('POST');
public function createPostRequest(
Application $application,
string $requestClass,
array $data,
string $accept = 'application/json'
): object {
/** @var UrlGenerator $urlGenerator */
$urlGenerator = $application->make(UrlGenerator::class);

$uri = $urlGenerator->to('');
$symfonyRequest = SymfonyRequest::create(
uri: $uri,
method: 'POST',
parameters: $data,
cookies: [],
files: [],
server: [
'HTTP_ACCEPT' => $accept,
],
);

$request = Request::createFromBase($symfonyRequest);

$application->instance('request', $request);

Expand Down
2 changes: 1 addition & 1 deletion tests/Feature/Config/Laravel/AppConfigTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public function testName(): void
public function testGetUrl(): void
{
$this->assertConfigValue(
expectedDefaultValue: 'http://localhost',
expectedDefaultValue: 'https://testing',
keys: [AppConfig::KeyUrl],
overridesExpectationMap: [
'https://localhost' => 'https://localhost',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use LaraStrict\Testing\Concerns\CreateRequest;
use Tests\LaraStrict\Feature\TestCase;

class CreatePostRequestTest extends TestCase
class CreateRequestTest extends TestCase
{
use CreateRequest;

Expand All @@ -18,6 +18,8 @@ public function testSuccess(): void
];
$request = $this->createPostRequest($this->app(), requestClass: TestRequest::class, data: $data);
$this->assertEquals($data, $request->validated());
$this->assertTrue($request->acceptsJson());
$this->assertEquals('https://testing', $request->url());
}

public function testFail(): void
Expand Down

0 comments on commit a9d1a29

Please sign in to comment.