public function testConstructionFromParameters() { $parameters = FF::getInstance('Util\\Parameters'); $parameters['query'] = 'bmx'; $parameters['seoPath'] = '/bmx-bike/q'; $parameters['channel'] = 'de'; $parameters['advisorStatus'] = '2-_0_0'; $parameters['productsPerPage'] = 12; $parameters['filterBrand'] = 'KHE'; $parameters['filterColor'] = 'green'; $parameters['sortPrice'] = 'asc'; $parameters['catalog'] = 'true'; $parameters['followSearch'] = '9832'; $searchParameters = FF::getInstance('Data\\SearchParameters', $parameters); $this->assertEquals('bmx', $searchParameters->getQuery()); $this->assertEquals('/bmx-bike/q', $searchParameters->getSeoPath()); $this->assertEquals('de', $searchParameters->getChannel()); $this->assertEquals('2-_0_0', $searchParameters->getAdvisorStatus()); $this->assertEquals(12, $searchParameters->getProductsPerPage()); $this->assertEquals(1, $searchParameters->getCurrentPage()); $this->assertEquals(9832, $searchParameters->getFollowSearch()); $this->assertEquals(array('Brand' => 'KHE', 'Color' => 'green'), $searchParameters->getFilters()); $this->assertEquals(array('Price' => 'asc'), $searchParameters->getSortings()); $this->assertTrue($searchParameters->isNavigationEnabled()); }
public function testServerToClientConversion() { $serverParameters = FF::getInstance('Util\\Parameters', array('query' => 'test', 'username' => 'admin', 'format' => 'xml', 'xml' => 'true', 'timestamp' => '123456789', 'password' => 'test', 'channel' => 'de', 'productsPerPage' => '12')); $expectedClientParameters = array('keywords' => 'test', 'productsPerPage' => '12'); $actualClientParameters = $this->parametersConverter->convertServerToClientParameters($serverParameters); $this->assertEquals($expectedClientParameters, $actualClientParameters->getArray()); }
/** * Converts data from $inCharset to $outCharset. * @param mixed $data If a string is given, it's encoding will be converted. * If an associative array is given, keys and values will be * converted recursively. All other data types will be returned * unchanged. * @return mixed */ protected function convert($inCharset, $outCharset, $data) { if ($data instanceof Parameters) { if (count($data->getArray()) == 1 && current(array_keys($data->getArray())) == '') { $result = $data->getArray(); } else { $result = FF::getInstance('Util\\Parameters', $this->convert($inCharset, $outCharset, $data->getArray())); } } else { if (is_array($data)) { $result = array(); foreach ($data as $k => $v) { $k = $this->convert($inCharset, $outCharset, $k); $result[$k] = $this->convert($inCharset, $outCharset, $v); } } else { if (is_string($data)) { $result = $this->convertString($inCharset, $outCharset, $data); } else { $result = $data; } } } return $result; }
public function setUp() { parent::setUp(); $this->requestParser = FF::getInstance('Core\\Client\\RequestParser', self::$dic['loggerClass'], self::$dic['configuration'], self::$dic['encodingConverter']); $loggerClass = self::$dic['loggerClass']; $this->log = $loggerClass::getLogger(__CLASS__); }
private function createSuggestions() { $suggestions = array(); $this->useJsonResponseContentProcessor(); if (isset($this->parameters['format'])) { $oldFormat = $this->parameters['format']; } $this->parameters['format'] = 'json'; $suggestData = $this->getResponseContent(); if (!empty($suggestData)) { foreach ($suggestData as $suggestQueryData) { $suggestLink = $this->convertServerQueryToClientUrl($suggestQueryData['searchParams']); if (isset($suggestQueryData['attributes']) && is_array($suggestQueryData['attributes'])) { $suggestAttributes = $suggestQueryData['attributes']; } else { $suggestAttributes = array(); } $suggestions[] = FF::getInstance('Data\\SuggestQuery', $suggestQueryData['name'], $suggestLink, $suggestQueryData['hitCount'], $suggestQueryData['type'], $suggestQueryData['image'], $suggestQueryData['refKey'], $suggestAttributes); } } if (isset($oldFormat)) { $this->parameters['format'] = $oldFormat; } return $suggestions; }
public function setUp() { parent::setUp(); $this->statusClass = FF::getClassName('Data\\ArticleNumberSearchStatus'); $loggerClass = self::$dic['loggerClass']; $this->log = $loggerClass::getLogger(__CLASS__); }
public function setUp() { parent::setUp(); $loggerClass = self::$dic['loggerClass']; $this->log = $loggerClass::getLogger(__CLASS__); $this->adapter = FF::getInstance('Adapter\\Recommendation', self::$dic['loggerClass'], self::$dic['configuration'], self::$dic['request'], self::$dic['clientUrlBuilder']); }
public function setUp() { parent::setUp(); $this->typeClass = FF::getClassName('Data\\FilterType'); $loggerClass = self::$dic['loggerClass']; $this->log = $loggerClass::getLogger(__CLASS__); }
public function __construct($loggerClass, \FACTFinder\Core\ConfigurationInterface $configuration, \FACTFinder\Core\Client\RequestParser $requestParser, \FACTFinder\Core\AbstractEncodingConverter $encodingConverter = null) { $this->log = $loggerClass::getLogger(__CLASS__); $this->parametersConverter = FF::getInstance('Core\\ParametersConverter', $loggerClass, $configuration); $this->requestParser = $requestParser; $this->encodingConverter = $encodingConverter; }
public function setUp() { parent::setUp(); $this->directionClass = FF::getClassName('Data\\SortingDirection'); $loggerClass = self::$dic['loggerClass']; $this->log = $loggerClass::getLogger(__CLASS__); }
public static function setUpBeforeClass() { $logClass = FF::getClassName('Util\\Log4PhpLogger'); $logClass::configure(RESOURCES_DIR . DS . 'log4php.xml'); // Set up dependency injection container (Pimple) self::$dic = FF::getInstance('Util\\Pimple'); self::$dic['loggerClass'] = $logClass; if (strpos(static::class, 'ArrayConfiguration')) { self::$dic['configuration'] = function ($c) { $config = (include RESOURCES_DIR . DS . 'config.php'); return FF::getInstance('Core\\ArrayConfiguration', $config, 'test'); }; } else { self::$dic['configuration'] = function ($c) { return FF::getInstance('Core\\XmlConfiguration', RESOURCES_DIR . DS . 'config.xml', 'test'); }; } // $this cannot be passed into closures before PHP 5.4 //$that = $this; self::$dic['encodingConverter'] = function ($c) { if (extension_loaded('iconv')) { $type = 'Core\\IConvEncodingConverter'; } else { if (function_exists('utf8_encode') && function_exists('utf8_decode')) { $type = 'Core\\Utf8EncodingConverter'; } else { return; } } //TODO: Skip test if no conversion method is available. // $that->markTestSkipped('No encoding conversion available.'); return FF::getInstance($type, $c['loggerClass'], $c['configuration']); }; self::$dic['serverUrlBuilder'] = function ($c) { return FF::getInstance('Core\\Server\\UrlBuilder', $c['loggerClass'], $c['configuration']); }; self::$dic['clientUrlBuilder'] = function ($c) { return FF::getInstance('Core\\Client\\UrlBuilder', $c['loggerClass'], $c['configuration'], $c['requestParser'], $c['encodingConverter']); }; self::$dic['curlStub'] = function ($c) { return FF::getInstance('Util\\CurlStub'); }; self::$dic['dataProvider'] = function ($c) { $dataProvider = FF::getInstance('Core\\Server\\FileSystemDataProvider', $c['loggerClass'], $c['configuration']); $dataProvider->setFileLocation(RESOURCES_DIR . DS . 'responses'); return $dataProvider; }; self::$dic['requestFactory'] = function ($c) { $requestFactory = FF::getInstance('Core\\Server\\FileSystemRequestFactory', $c['loggerClass'], $c['configuration'], $c['requestParser']->getRequestParameters()); $requestFactory->setFileLocation(RESOURCES_DIR . DS . 'responses'); return $requestFactory; }; self::$dic['request'] = self::$dic->factory(function ($c) { return $c['requestFactory']->getRequest(); }); self::$dic['requestParser'] = function ($c) { return FF::getInstance('Core\\Client\\RequestParser', $c['loggerClass'], $c['configuration'], $c['encodingConverter']); }; }
private function hasFileNameChanged($id, $newFileName) { $connectionData = $this->connectionData[$id]; if (FF::isInstanceOf($connectionData->getResponse(), 'Core\\Server\\NullResponse')) { return true; } return $newFileName != $connectionData->getPreviousUrl(); }
public function testResponse() { $response = FF::getInstance('Core\\Server\\NullResponse'); $this->assertEquals('', $response->getContent()); $this->assertEquals(0, $response->getHttpCode()); $this->assertEquals(0, $response->getConnectionErrorCode()); $this->assertEquals('', $response->getConnectionError()); }
public function testResponse() { $response = FF::getInstance('Core\\Server\\Response', 'response content', 200, CURLE_OK, 'CURLE_OK'); $this->assertEquals('response content', $response->getContent()); $this->assertEquals(200, $response->getHttpCode()); $this->assertEquals(CURLE_OK, $response->getConnectionErrorCode()); $this->assertEquals('CURLE_OK', $response->getConnectionError()); }
public function setUp() { parent::setUp(); $this->factory = FF::getInstance('Core\\Server\\FileSystemRequestFactory', self::$dic['loggerClass'], self::$dic['configuration'], FF::getInstance('Util\\Parameters')); $loggerClass = self::$dic['loggerClass']; $this->log = $loggerClass::getLogger(__CLASS__); $this->configuration = self::$dic['configuration']; }
public function setUp() { parent::setUp(); $this->curlStub = self::$dic['curlStub']; $this->factory = FF::getInstance('Core\\Server\\MultiCurlRequestFactory', self::$dic['loggerClass'], self::$dic['configuration'], FF::getInstance('Util\\Parameters', array('query' => 'bmx')), self::$dic['curlStub']); $loggerClass = self::$dic['loggerClass']; $this->log = $loggerClass::getLogger(__CLASS__); $this->configuration = self::$dic['configuration']; }
public function setUp() { parent::setUp(); // For the request parser to retrieve $_SERVER['QUERY_STRING'] = 'event=cart&id=1&price=4&count=3&sid=mysid&userid=5'; $loggerClass = self::$dic['loggerClass']; $this->log = $loggerClass::getLogger(__CLASS__); $this->adapter = FF::getInstance('Adapter\\ScicTracking', self::$dic['loggerClass'], self::$dic['configuration'], self::$dic['request'], self::$dic['clientUrlBuilder']); }
/** * Prepare all request parameters for the primary search adapter * * @return array */ protected function _collectParams() { // search Helper $helper = Mage::helper('factfinder/search'); $_request = Mage::app()->getRequest(); $requestParams = $this->_getFacade()->getClientRequestParams(); $searchParams = $this->_getFacade()->getSearchParams(); $params = array(); if (Mage::helper('factfinder')->isInternal()) { $params['log'] = 'internal'; } switch ($_request->getModuleName()) { case "xmlconnect": $_query = $helper->getQueryText(); $params['idsOnly'] = FF::getSingleton('configuration')->getIdsOnly() ? 'true' : 'false'; $params['query'] = $_query; $count = $searchParams->getProductsPerPage() ? $searchParams->getProductsPerPage() : 0; if ($count > 0) { $params['productsPerPage'] = $count; $params['page'] = $searchParams->getCurrentPage(); } // todo: make this work // add Sorting Param foreach ($searchParams->getSortings() as $key => $value) { if (substr($key, 0, 6) == 'order_') { $key = substr($key, 6); if (!in_array($key, array('position', 'relevance'))) { $params['sort' . $key] = $value; } } } break; case "catalogsearch": default: // add Default Params $params['idsOnly'] = $this->_getFacade()->getConfiguration()->getIdsOnly() ? 'true' : 'false'; $params['productsPerPage'] = $helper->getPageLimit(); if ($_request->getModuleName() == 'catalogsearch') { $params['query'] = $helper->getQueryText(); } $params['page'] = $helper->getCurrentPage(); if ($seoPath = Mage::app()->getRequest()->getParam('seoPath')) { $params['seoPath'] = $seoPath; } // add Sorting Param, but only if it was set explicitly via url if (isset($requestParams['order']) && $helper->getCurrentOrder() && $helper->getCurrentDirection() && $helper->getCurrentOrder() != 'position' && $helper->getCurrentOrder() != 'relevance') { $params['sort' . $helper->getCurrentOrder()] = $helper->getCurrentDirection(); } } if (Mage::helper('factfinder/debug')->isDebugMode()) { $params['verbose'] = 'true'; } if (Mage::getStoreConfigFlag('factfinder/config/personalization')) { $params['sid'] = Mage::helper('factfinder_tracking')->getSessionId(); } return $params; }
public function setUp() { parent::setUp(); // For the request parser to retrieve $_SERVER['QUERY_STRING'] = 'event=cart&id=1&masterId=2&title=product&sid=mysid&cookieId=mycid&count=5&price=6&userId=7&query=query'; $loggerClass = self::$dic['loggerClass']; $this->log = $loggerClass::getLogger(__CLASS__); $this->adapter = FF::getInstance('Adapter\\Tracking', self::$dic['loggerClass'], self::$dic['configuration'], self::$dic['request'], self::$dic['clientUrlBuilder']); }
public function setUp() { parent::setUp(); $this->urlBuilder = FF::getInstance('Core\\Server\\UrlBuilder', self::$dic['loggerClass'], self::$dic['configuration']); $loggerClass = self::$dic['loggerClass']; $this->log = $loggerClass::getLogger(__CLASS__); $this->configuration = self::$dic['configuration']; $this->parameters = FF::getInstance('Util\\Parameters'); }
public function setUp() { parent::setUp(); // For the request parser to retrieve $_SERVER['REQUEST_URI'] = '/index.php'; $loggerClass = self::$dic['loggerClass']; $this->log = $loggerClass::getLogger(__CLASS__); $this->adapter = FF::getInstance('Adapter\\TagCloud', self::$dic['loggerClass'], self::$dic['configuration'], self::$dic['request'], self::$dic['clientUrlBuilder']); }
public function setUp() { parent::setUp(); $dataProvider = FF::getInstance('Core\\Server\\FileSystemDataProvider', self::$dic['loggerClass'], self::$dic['configuration']); $dataProvider->setFileLocation(RESOURCES_DIR . DS . 'responses'); $this->request = FF::getInstance('Core\\Server\\Request', self::$dic['loggerClass'], FF::getInstance('Core\\Server\\ConnectionData'), $dataProvider); $loggerClass = self::$dic['loggerClass']; $this->log = $loggerClass::getLogger(__CLASS__); $this->configuration = self::$dic['configuration']; }
public function testSetResponse() { $response = FF::getInstance('Core\\Server\\Response', 'response content', 200, 0, CURLE_OK); $this->connectionData->setResponse($response, 'http://test.com'); $this->assertSame($response, $this->connectionData->getResponse()); $this->assertEquals('http://test.com', $this->connectionData->getPreviousUrl()); $this->connectionData->setNullResponse(); $response = $this->connectionData->getResponse(); $this->assertEquals('', $response->getContent()); $this->assertEquals(0, $response->getHttpCode()); $this->assertEquals(0, $response->getConnectionErrorCode()); $this->assertEquals('', $response->getConnectionError()); $this->assertNull($this->connectionData->getPreviousUrl()); }
private function createTagCloud($requestQuery = null) { $tagCloud = array(); $tagCloudData = $this->getResponseContent(); if (!empty($tagCloudData)) { foreach ($tagCloudData as $tagQueryData) { $query = $tagQueryData['query']; // TODO: Once JIRA issue FF-5328 is fixed, retrieve the // parameters from searchParams, like all other adapters // do. $parameters = FF::getInstance('Util\\Parameters'); $parameters['query'] = $query; $tagCloud[] = FF::getInstance('Data\\TagQuery', $query, $this->urlBuilder->generateUrl($parameters), $requestQuery == $query, $tagQueryData['weight'], $tagQueryData['searchCount']); } } return $tagCloud; }
public function testLoadResponse() { $this->dataProvider->setFileLocation(RESOURCES_DIR . DS . 'responses'); $this->configuration->makeHttpAuthenticationType(); $connectionData = FF::getInstance('Core\\Server\\ConnectionData'); $id = $this->dataProvider->register($connectionData); $parameters = $connectionData->getParameters(); $parameters['format'] = 'json'; $parameters['do'] = 'getTagCloud'; $connectionData->setAction('TagCloud.ff'); $this->dataProvider->loadResponse($id); $response = $connectionData->getResponse(); $expectedContent = file_get_contents(RESOURCES_DIR . DS . 'responses' . DS . 'TagCloud.86b6b33590e092674009abfe3d7fc170.json'); $this->assertEquals(0, $response->getConnectionErrorCode()); $this->assertEquals('', $response->getConnectionError()); $this->assertEquals(200, $response->getHttpCode()); $this->assertEquals($expectedContent, $response->getContent()); }
/** * Converts data from $inCharset to $outCharset. * @param mixed $data If a string is given, it's encoding will be converted. * If an associative array is given, keys and values will be * converted recursively. All other data types will be returned * unchanged. * @return mixed */ protected function convert_recursive($inCharset, $outCharset, $data) { if (FF::isInstanceOf($data, 'Util\\Parameters')) { $result = FF::getInstance('Util\\Parameters', $this->convert($inCharset, $outCharset, $data->getArray())); } else { if (is_array($data)) { $result = array(); foreach ($data as $k => $v) { $k = $this->convert_recursive($inCharset, $outCharset, $k); $result[$k] = $this->convert_recursive($inCharset, $outCharset, $v); } } else { if (is_string($data)) { $result = $this->convertString($inCharset, $outCharset, $data); } else { $result = $data; } } } return $result; }
public function testLoadResponse() { $this->configuration->makeHttpAuthenticationType(); $requiredOptions = array(CURLOPT_URL => 'http://*****:*****@demoshop.fact-finder.de:80/FACT-Finder/TagCloud.ff?format=json&do=getTagCloud&verbose=true&channel=de'); $responseContent = 'test response'; $info = array(CURLINFO_HTTP_CODE => '200'); $this->curlStub->setResponse($responseContent, $requiredOptions); $this->curlStub->setInformation($info, $requiredOptions); $connectionData = FF::getInstance('Core\\Server\\ConnectionData'); $id = $this->dataProvider->register($connectionData); $parameters = $connectionData->getParameters(); $parameters['format'] = 'json'; $parameters['do'] = 'getTagCloud'; $connectionData->setAction('TagCloud.ff'); $this->dataProvider->loadResponse($id); $response = $connectionData->getResponse(); $this->assertEquals(0, $response->getConnectionErrorCode()); $this->assertEquals('CURLE_OK', $response->getConnectionError()); $this->assertEquals(200, $response->getHttpCode()); $this->assertEquals($responseContent, $response->getContent()); }
private function createRecord($recordData, $position) { return FF::getInstance('Data\\Record', (string) $recordData['id'], $recordData['record'], 100.0, $position); }
public function testNoArticleNumberSearchStatus() { $articleNumberSearchStatusEnum = FF::getClassName('Data\\ArticleNumberSearchStatus'); $this->assertEquals($articleNumberSearchStatusEnum::IsNoArticleNumberSearch(), $this->adapter->getArticleNumberStatus()); }
/** * Multi interface */ public function multi_init() { $mh = ++$this->lastHandle; $handle = FF::getInstance('Util\\CurlMultiHandle'); $this->multiHandles[$mh] = $handle; return $mh; }