public function testProcessTrackingViewer() { $mockBuilder = $this->getMockBuilder('CM_Model_User'); $mockBuilder->setMethods(['getIdRaw', 'getVisible', 'getLanguage', 'getCurrency']); $viewerMock = $mockBuilder->getMock(); $viewerMock->expects($this->any())->method('getIdRaw')->will($this->returnValue(array('id' => '1'))); $viewerMock->expects($this->any())->method('getVisible')->will($this->returnValue(false)); $viewerMock->expects($this->any())->method('getLanguage')->will($this->returnValue(null)); $viewerMock->expects($this->any())->method('getCurrency')->will($this->returnValue(null)); $site = CM_Site_Abstract::factory(); $request = new CM_Http_Request_Get('/mock5', ['host' => $site->getHost()], null, $viewerMock); $serviceManager = $this->_getServiceManager('ga123', 'km123'); $response = CM_Http_Response_Page::createFromRequest($request, $site, $serviceManager); $response->process(); $html = $response->getContent(); $this->assertContains('ga("create", "ga123"', $html); $this->assertContains('ga("send", "pageview", "\\/mock5")', $html); $this->assertContains('var _kmq = _kmq || [];', $html); $this->assertContains("var _kmk = _kmk || 'km123';", $html); $clientId = $request->getClientId(); $this->assertContains("_kmq.push(['identify', 'Guest {$clientId}']);", $html); $this->assertContains("_kmq.push(['identify', '1']);", $html); $this->assertContains("_kmq.push(['alias', 'Guest {$clientId}', '1']);", $html); }
/** * @param CM_Page_Abstract $page * @param CM_Model_User|null $viewer * @param CM_Site_Abstract|null $site * @return CM_Dom_NodeList */ protected function _renderPage(CM_Page_Abstract $page, CM_Model_User $viewer = null, CM_Site_Abstract $site = null) { if (null === $site) { $site = CM_Site_Abstract::factory(); } $host = parse_url($site->getUrl(), PHP_URL_HOST); $request = new CM_Http_Request_Get('?' . http_build_query($page->getParams()->getParamsEncoded()), ['host' => $host], null, $viewer); $response = CM_Http_Response_Page::createFromRequest($request, $site, $this->getServiceManager()); $page->prepareResponse($response->getRender()->getEnvironment(), $response); $renderAdapter = new CM_RenderAdapter_Page($response->getRender(), $page); $html = $renderAdapter->fetch(); return new CM_Dom_NodeList($html, true); }
/** * @param string $uri * @param CM_Model_User|null $viewer * @return CM_Http_Response_Page * @throws CM_Class_Exception_TypeNotConfiguredException */ public static function createResponsePage($uri, CM_Model_User $viewer = null) { $site = CM_Site_Abstract::factory(); $headers = array('host' => $site->getHost()); $request = new CM_Http_Request_Get($uri, $headers, null, $viewer); return CM_Http_Response_Page::createFromRequest($request, $site, self::getServiceManager()); }