twig = $this->getMockBuilder('TwigWrapper') ->disableOriginalConstructor() ->getMock(); $this->offerRetriever = $this->getMockBuilder('OfferRetriever') ->disableOriginalConstructor() ->getMock(); $this->testObj = new TemplatePage($this->twig, $this->offerRetriever); } public function tearDown() { unset($_GET['id']); unset($_GET['page']); } public function testDisplayOutputsDefaultPage() { $pageId = 0; $offerId = TestUtils::getRandomInteger(); $_GET['id'] = $offerId; $templateFilename = TestUtils::getRandomString(10); $pageData = array('filename' => $templateFilename); $expected = TestUtils::getRandomString(20); $this->offerRetriever->method('getPageData') ->with($offerId, $pageId) ->willReturn($pageData); $this->twig->expects($this->once()) ->method('render') ->with($templateFilename, $pageData) ->willReturn($expected); $actual = $this->testObj->display(); $this->assertEquals($expected, $actual); } public function testDisplayOutputsAnErrorIfTemplateNotFound() { $templateRequested = "templateDoesNotExist.html"; $expected = TestUtils::getRandomString(20); $_GET['id'] = null; $this->twig->expects($this->once()) ->method('render') ->with($templateRequested, array()) ->willReturn($expected); $actual = $this->testObj->display(); $this->assertEquals($expected, $actual); } public function testDisplayOutputsCorrectTemplate() { $offerId = TestUtils::getRandomInteger(); $pageId = TestUtils::getRandomInteger(); $_GET['id'] = $offerId; $_GET['page'] = $pageId; $offerName = TestUtils::getRandomString(10); $displayTitle = TestUtils::getRandomString(10); $disclaimer = TestUtils::getRandomString(10); $templateFilename = TestUtils::getRandomString(10); $expected = TestUtils::getRandomString(20); $template = array('name' => $offerName, 'display_title' => $displayTitle, 'disclaimer' => $disclaimer, 'filename' => $templateFilename, 'offer_id' => $offerId); $this->offerRetriever->method('getPageData') ->with($offerId, $pageId) ->willReturn($template); $this->twig->expects($this->once()) ->method('render') ->with($templateFilename, $template) ->willReturn($expected); $actual = $this->testObj->display(); $this->assertEquals($expected, $actual); } }