Add parameters for Request::__construct

This commit is contained in:
PJ Dietz 2015-04-26 22:55:48 -04:00
parent 4d5430e589
commit cee55cada0
2 changed files with 77 additions and 4 deletions

View File

@ -3,12 +3,13 @@
namespace WellRESTed\Message;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\StreamInterface;
use Psr\Http\Message\UriInterface;
class Request extends Message implements RequestInterface
{
/** @var string */
protected $method = "GET";
protected $method;
/** @var string */
protected $requestTarget;
/** @var UriInterface */
@ -16,10 +17,39 @@ class Request extends Message implements RequestInterface
// ------------------------------------------------------------------------
public function __construct()
{
/**
* @param UriInterface $uri
* @param string $method
* @param array $headers
* @param StreamInterface $body
*/
public function __construct(
UriInterface $uri = null,
$method = "GET",
array $headers = null,
StreamInterface $body = null
) {
parent::__construct();
$this->uri = new Uri();
if ($uri !== null) {
$this->uri = $uri;
} else {
$this->uri = new Uri();
}
$this->method = $method;
if ($headers) {
foreach ($headers as $name => $values) {
foreach ($values as $value) {
$this->headers[$name] = $value;
}
}
}
if ($body !== null) {
$this->body = $body;
}
}
public function __clone()

View File

@ -15,6 +15,7 @@ use WellRESTed\Message\Uri;
class RequestTest extends \PHPUnit_Framework_TestCase
{
// ------------------------------------------------------------------------
// Construction
/**
* @covers WellRESTed\Message\Request::__construct
@ -25,6 +26,48 @@ class RequestTest extends \PHPUnit_Framework_TestCase
$this->assertNotNull($request);
}
/**
* @covers WellRESTed\Message\Request::__construct
*/
public function testCreatesInstanceWithUri()
{
$uri = $this->prophesize('Psr\Http\Message\UriInterface');
$uri = $uri->reveal();
$request = new Request($uri);
$this->assertSame($uri, $request->getUri());
}
/**
* @covers WellRESTed\Message\Request::__construct
*/
public function testCreatesInstanceWithMethod()
{
$method = "POST";
$request = new Request(null, $method);
$this->assertSame($method, $request->getMethod());
}
/**
* @covers WellRESTed\Message\Request::__construct
*/
public function testSetsHeadersOnConstruction()
{
$request = new Request(null, null, [
"X-foo" => ["bar","baz"]
]);
$this->assertEquals(["bar","baz"], $request->getHeader("X-foo"));
}
/**
* @covers WellRESTed\Message\Request::__construct
*/
public function testSetsBodyOnConstruction()
{
$body = $this->prophesize('\Psr\Http\Message\StreamInterface');
$request = new Request(null, null, [], $body->reveal());
$this->assertSame($body->reveal(), $request->getBody());
}
// ------------------------------------------------------------------------
// Request Target