diff --git a/src/pjdietz/WellRESTed/HandlerUnpacker.php b/src/pjdietz/WellRESTed/HandlerUnpacker.php new file mode 100644 index 0000000..44b98e1 --- /dev/null +++ b/src/pjdietz/WellRESTed/HandlerUnpacker.php @@ -0,0 +1,21 @@ +unpack($handlerContainer); + $this->assertInstanceOf("\\pjdietz\\WellRESTed\\Interfaces\\HandlerInterface", $handler); + } + + public function testUnpacksFromString() + { + $handlerContainer = __NAMESPACE__ . "\\HandlerUnpackerTest_Handler"; + $handlerUnpacker = new HandlerUnpacker(); + $handler = $handlerUnpacker->unpack($handlerContainer); + $this->assertInstanceOf("\\pjdietz\\WellRESTed\\Interfaces\\HandlerInterface", $handler); + } + + public function testUnpacksInstance() + { + $handler = new HandlerUnpackerTest_Handler(); + $handlerUnpacker = new HandlerUnpacker(); + $handler = $handlerUnpacker->unpack($handler); + $this->assertInstanceOf("\\pjdietz\\WellRESTed\\Interfaces\\HandlerInterface", $handler); + } + + /** + * @expectedException \UnexpectedValueException + */ + public function testThrowsExceptionWhenUnpackedInstanceDoesNotImplementInterface() + { + $handlerUnpacker = new HandlerUnpacker(); + $handlerUnpacker->unpack("\\stdClass"); + } +} + +class HandlerUnpackerTest_Handler implements HandlerInterface +{ + public function getResponse(RequestInterface $request, array $args = null) + { + return null; + } +}