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());
 }
Ejemplo n.º 14
0
 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']);
 }
Ejemplo n.º 18
0
 /**
  * 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']);
 }
Ejemplo n.º 22
0
 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());
 }
Ejemplo n.º 24
0
 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;
 }