class BuilderTest in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/stack/builder/tests/unit/Stack/BuilderTest.php \Stack\BuilderTest
@covers Stack\Builder
Hierarchy
- class \Stack\BuilderTest extends \Stack\PHPUnit_Framework_TestCase
Expanded class hierarchy of BuilderTest
File
- vendor/
stack/ builder/ tests/ unit/ Stack/ BuilderTest.php, line 11
Namespace
StackView source
class BuilderTest extends \PHPUnit_Framework_TestCase {
/** @test */
public function withoutMiddlewaresItShouldReturnOriginalResponse() {
$app = $this
->getHttpKernelMock(new Response('ok'));
$stack = new Builder();
$resolved = $stack
->resolve($app);
$request = Request::create('/');
$response = $resolved
->handle($request);
$this
->assertInstanceOf('Stack\\StackedHttpKernel', $resolved);
$this
->assertSame('ok', $response
->getContent());
}
/** @test */
public function resolvedKernelShouldDelegateTerminateCalls() {
$app = $this
->getTerminableMock();
$stack = new Builder();
$resolved = $stack
->resolve($app);
$request = Request::create('/');
$response = new Response('ok');
$resolved
->handle($request);
$resolved
->terminate($request, $response);
}
/** @test */
public function pushShouldReturnSelf() {
$stack = new Builder();
$this
->assertSame($stack, $stack
->push('Stack\\AppendA'));
}
/** @test */
public function pushShouldThrowOnInvalidInput() {
$this
->setExpectedException('InvalidArgumentException', 'Missing argument(s) when calling push');
$stack = new Builder();
$stack
->push();
}
/** @test */
public function unshiftShouldReturnSelf() {
$stack = new Builder();
$this
->assertSame($stack, $stack
->unshift('Stack\\AppendA'));
}
/** @test */
public function unshiftShouldThrowOnInvalidInput() {
$this
->setExpectedException('InvalidArgumentException', 'Missing argument(s) when calling unshift');
$stack = new Builder();
$stack
->unshift();
}
/** @test */
public function appendMiddlewareShouldAppendToBody() {
$app = $this
->getHttpKernelMock(new Response('ok'));
$stack = new Builder();
$stack
->push('Stack\\AppendA');
$resolved = $stack
->resolve($app);
$request = Request::create('/');
$response = $resolved
->handle($request);
$this
->assertSame('ok.A', $response
->getContent());
}
/** @test */
public function unshiftMiddlewareShouldPutMiddlewareBeforePushed() {
$app = $this
->getHttpKernelMock(new Response('ok'));
$stack = new Builder();
$stack
->push('Stack\\Append', '2.');
$stack
->unshift('Stack\\Append', '1.');
$resolved = $stack
->resolve($app);
$request = Request::create('/');
$response = $resolved
->handle($request);
$this
->assertSame('ok2.1.', $response
->getContent());
}
/** @test */
public function stackedMiddlewaresShouldWrapInReverseOrder() {
$app = $this
->getHttpKernelMock(new Response('ok'));
$stack = new Builder();
$stack
->push('Stack\\AppendA');
$stack
->push('Stack\\AppendB');
$resolved = $stack
->resolve($app);
$request = Request::create('/');
$response = $resolved
->handle($request);
$this
->assertSame('ok.B.A', $response
->getContent());
}
/** @test */
public function resolveShouldPassPushArgumentsToMiddlewareConstructor() {
$app = $this
->getHttpKernelMock(new Response('ok'));
$stack = new Builder();
$stack
->push('Stack\\Append', '.foo');
$stack
->push('Stack\\Append', '.bar');
$resolved = $stack
->resolve($app);
$request = Request::create('/');
$response = $resolved
->handle($request);
$this
->assertSame('ok.bar.foo', $response
->getContent());
}
/** @test */
public function resolveShouldCallSpecFactories() {
$app = $this
->getHttpKernelMock(new Response('ok'));
$stack = new Builder();
$stack
->push(function ($app) {
return new Append($app, '.foo');
});
$stack
->push(function ($app) {
return new Append($app, '.bar');
});
$resolved = $stack
->resolve($app);
$request = Request::create('/');
$response = $resolved
->handle($request);
$this
->assertSame('ok.bar.foo', $response
->getContent());
}
private function getHttpKernelMock(Response $response) {
$app = $this
->getMock('Symfony\\Component\\HttpKernel\\HttpKernelInterface');
$app
->expects($this
->any())
->method('handle')
->with($this
->isInstanceOf('Symfony\\Component\\HttpFoundation\\Request'))
->will($this
->returnValue($response));
return $app;
}
private function getTerminableMock() {
$app = $this
->getMock('Stack\\TerminableHttpKernel');
$app
->expects($this
->once())
->method('terminate')
->with($this
->isInstanceOf('Symfony\\Component\\HttpFoundation\\Request'), $this
->isInstanceOf('Symfony\\Component\\HttpFoundation\\Response'));
return $app;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BuilderTest:: |
public | function | @test | |
BuilderTest:: |
private | function | ||
BuilderTest:: |
private | function | ||
BuilderTest:: |
public | function | @test | |
BuilderTest:: |
public | function | @test | |
BuilderTest:: |
public | function | @test | |
BuilderTest:: |
public | function | @test | |
BuilderTest:: |
public | function | @test | |
BuilderTest:: |
public | function | @test | |
BuilderTest:: |
public | function | @test | |
BuilderTest:: |
public | function | @test | |
BuilderTest:: |
public | function | @test | |
BuilderTest:: |
public | function | @test |