~ fix RedirectResponse::route unable to call with default/suggested parameter ( docu )

~ fix RedirectResponse::route baseurl was not applied
+ added test for RedirectResponse::route

Signed-off-by: Christoph Potas <christoph286@googlemail.com>
This commit is contained in:
Christoph Potas 2018-08-07 11:29:46 +02:00
parent 655481298c
commit 6e297acba3
No known key found for this signature in database
GPG Key ID: D4A4190F8260D7B0
2 changed files with 17 additions and 2 deletions

View File

@ -35,7 +35,9 @@
* @since Version 3.0.0
* @filesource
*/
use CodeIgniter\HTTP\Exceptions\HTTPException;
use Config\App;
use Config\Services;
class RedirectResponse extends Response
@ -74,7 +76,7 @@ class RedirectResponse extends Response
*
* @return $this
*/
public function route(string $route, array $params=[], int $code=null, string $method='auto')
public function route(string $route, array $params=[], int $code=302, string $method='auto')
{
$routes = Services::routes(true);
@ -85,7 +87,7 @@ class RedirectResponse extends Response
throw HTTPException::forInvalidRedirectRoute($route);
}
return $this->redirect($route, $method, $code);
return $this->redirect( config( App::class )->baseURL.rtrim( $route, '\\' ), $method, $code);
}
/**

View File

@ -10,6 +10,7 @@ use Tests\Support\HTTP\MockIncomingRequest;
class RedirectResponseTest extends \CIUnitTestCase
{
/** @var RouteCollection */
protected $routes;
protected $request;
@ -42,6 +43,18 @@ class RedirectResponseTest extends \CIUnitTestCase
$this->assertEquals('http://example.com/foo', $response->getHeaderLine('Location'));
}
public function testRedirectRoute()
{
$response = new RedirectResponse(new App());
$this->routes->add( 'exampleRoute', 'Home::index' );
$response->route( 'exampleRoute' );
$this->assertTrue($response->hasHeader('Location'));
$this->assertEquals('http://example.com/exampleRoute', $response->getHeaderLine('Location'));
}
public function testRedirectRelativeConvertsToFullURI()
{
$response = new RedirectResponse($this->config);