Skip to content

Commit

Permalink
[6.x] Add assertNoContent to TestResponse (laravel#30125)
Browse files Browse the repository at this point in the history
* Add assertNoContent to TestResponse

* Update TestResponse.php
  • Loading branch information
jasonmccreary authored and i-bajrai committed Oct 4, 2019
1 parent a67546e commit 790e78a
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/Illuminate/Foundation/Testing/TestResponse.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,21 @@ public function assertOk()
return $this;
}

/**
* Assert that the response has the given status code and no content.
*
* @param int $status
* @return $this
*/
public function assertNoContent($status = 204)
{
$this->assertStatus($status);

PHPUnit::assertEmpty($this->getContent(), 'Response content is not empty.');

return $this;
}

/**
* Assert that the response has a not found status code.
*
Expand Down
48 changes: 48 additions & 0 deletions tests/Foundation/FoundationTestResponseTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,54 @@ public function testAssertUnauthorized()
$response->assertUnauthorized();
}

public function testAssertNoContentAsserts204StatusCodeByDefault()
{
$statusCode = 500;

$this->expectException(AssertionFailedError::class);

$this->expectExceptionMessage("Expected status code 204 but received {$statusCode}");

$baseResponse = tap(new Response, function ($response) use ($statusCode) {
$response->setStatusCode($statusCode);
});

$response = TestResponse::fromBaseResponse($baseResponse);
$response->assertNoContent();
}

public function testAssertNoContentAssertsExpectedStatusCode()
{
$statusCode = 500;
$expectedStatusCode = 418;

$this->expectException(AssertionFailedError::class);

$this->expectExceptionMessage("Expected status code {$expectedStatusCode} but received {$statusCode}");

$baseResponse = tap(new Response, function ($response) use ($statusCode) {
$response->setStatusCode($statusCode);
});

$response = TestResponse::fromBaseResponse($baseResponse);
$response->assertNoContent($expectedStatusCode);
}

public function testAssertNoContentAssertsEmptyContent()
{
$this->expectException(AssertionFailedError::class);

$this->expectExceptionMessage('Response content is not empty');

$baseResponse = tap(new Response, function ($response) {
$response->setStatusCode(204);
$response->setContent('non-empty-response-content');
});

$response = TestResponse::fromBaseResponse($baseResponse);
$response->assertNoContent();
}

public function testAssertStatus()
{
$statusCode = 500;
Expand Down

0 comments on commit 790e78a

Please sign in to comment.