public function testKeepCustomParameters() { $query = AfsQuery::create_from_parameters(array("query" => "topic", "mycustomparameter" => "mycustomvalue")); $curlConnector = new SAI_CurlStub(); $mockBaseUrl = "localhost"; $aboutRequestOpts = array(CURLOPT_URL => "http://{$mockBaseUrl}/bo-ws/about"); $aboutResponse = <<<JSON { "x:type":"ws.response", "query":{ "x:type":"ws.response.query", "parameters":{ "x:type":"collection", "x:values":[ ] }, "properties":{ "x:type":"x:dynamic" } }, "result":{ "x:type":"bows.about", "boWsVersion":{ "x:type":"AfsVersion", "build":"3eaebfd1f1fe261780347cbc35bfbd65d613575e", "gen":"7.6", "major":"4", "minor":"0", "motto":"Pink Dolphin" }, "copyright":"Copyright (C) 1999-2013 Antidot" } } JSON; $response = <<<JSON {"header":{"query":{"userId":"user_5354ec142aa12","sessionId":"session_5354ec142aa4b","date":"2014-04-21T13:41:10+0200", "queryParam":[{"name":"afs:service","value":"71003"},{"name":"afs:status","value":"beta"},{"name":"afs:query","value":"topic"}, {"name":"afs:query@Book","value":"topic"},{"name":"afs:query@Topic","value":"topic"}, {"name":"afs:query@spellcheck","value":"topic"},{"name":"afs:output","value":"json,2"},{"name":"afs:output@Book","value":"json,2"}, {"name":"afs:output@Topic","value":"json,2"},{"name":"afs:output@spellcheck","value":"json,2"},{"name":"mycustomparameter","value":"mycustomvalue"}, {"name":"mycustomparameter@Book","value":"mycustomvalue"},{"name":"mycustomparameter@Topic","value":"mycustomvalue"}, {"name":"mycustomparameter@spellcheck","value":"mycustomvalue"},{"name":"afs:replies","value":"10"}, {"name":"afs:replies@Book","value":"10"},{"name":"afs:replies@Topic","value":"10"},{"name":"afs:replies@spellcheck", "value":"10"}],"mainCtx":{"textQuery":"topic"},"textQuery":"topic"},"user":{"requestMethod":"GET","agent":"Mozilla 5.0", "address":"127.0.0.1","output":{"format":"JSON","encoding":"gzip","charset":"UTF-8"}},"performance":{"durationMs":11},"info":{}}, "replySet":[{"meta":{"uri":"Book","totalItems":1,"totalItemsIsExact":true,"pageItems":1,"firstPageItem":1,"lastPageItem":1, "durationMs":1,"firstPaFId":147,"lastPaFId":147,"producer":"SEARCH"}, "facets":{"facet":[{"afs:t":"FacetTree","node":[{"key":"urn:dita:single_topic.ditamap", "labels":[{"lang":"EN","label":"urn:dita:single_topic.ditamap"},{"lang":"FR","label":"urn:dita:single_topic.ditamap"}], "items":1}],"layout":"TREE","type":"STRING","id":"BaseUri","labels":[{"lang":"EN","label":"BaseUri"}, {"lang":"FR","label":"BaseUri"}]},{"afs:t":"FacetTree","node":[{"key":"noditaval","labels":[{"lang":"EN","label":"noditaval"}, {"lang":"FR","label":"noditaval"}],"items":1}],"layout":"TREE","type":"STRING","id":"Ditaval", "labels":[{"lang":"EN","label":"Ditaval"},{"lang":"FR","label":"Ditaval"}]},{"afs:t":"FacetTree", "node":[{"key":"en","labels":[{"label":"English"}],"items":1}],"layout":"TREE","type":"STRING","id":"afs:lang", "labels":[{"label":"Language"}]}]},"content":{"reply":[{"docId":3,"uri":"urn:dita:single_topic.ditamap", "title":[{"afs:t":"KwicString","text":"Single "},{"afs:t":"KwicMatch","match":"Topic"}, {"afs:t":"KwicString","text":" Map"}],"relevance":{"rank":1},"layerReplies":{"reply":[{"layer":"USER_1", "reply":{"docId":3,"uri":"","clientData":[{"contents":{"meta":[],"label":"Single Topic Map","ditaval":"noditaval", "uri":"urn:dita:single_topic.ditamap"},"id":"ditaval","mimeType":"application\\/json"}]}}]}}]}}, {"meta":{"uri":"Topic","totalItems":1,"totalItemsIsExact":true,"pageItems":1,"firstPageItem":1,"lastPageItem":1,"durationMs":2, "firstPaFId":147,"lastPaFId":147,"producer":"SEARCH"},"facets":{"facet":[{"afs:t":"FacetTree", "node":[{"key":"others","labels":[{"lang":"EN","label":"others"},{"lang":"FR","label":"others"}],"items":1}], "layout":"TREE","type":"STRING","id":"Audience","labels":[{"lang":"EN","label":"Audience"},{"lang":"FR","label":"Audience"}]}, {"afs:t":"FacetTree","node":[{"key":"Single Topic Map","labels":[{"lang":"EN","label":"Single Topic Map"}, {"lang":"FR","label":"Single Topic Map"}],"items":1}],"layout":"TREE","type":"STRING","id":"Filter_By_Docs", "labels":[{"lang":"EN","label":"Filter by Documents"},{"lang":"FR","label":"Filtrer par Documents"}]}, {"afs:t":"FacetTree","node":[{"key":"en","labels":[{"label":"English"}],"items":1}],"layout":"TREE","type":"STRING", "id":"afs:lang","labels":[{"label":"Language"}]}]},"content":{"reply":[{"docId":2,"uri":"urn:dita:single_topic.dita", "title":[{"afs:t":"KwicString","text":"Titre du "},{"afs:t":"KwicMatch","match":"topic"}, {"afs:t":"KwicString","text":" unique"}],"abstract":[{"afs:t":"KwicString","text":"Ce "}, {"afs:t":"KwicMatch","match":"topic"},{"afs:t":"KwicString","text":" est seul dans sa ditamap et ceci devrait apparaitre dans le résumé."}], "relevance":{"rank":1},"layerReplies":{"reply":[{"layer":"USER_2","reply":{"docId":2,"uri":"", "clientData":[{"contents":{"book":{"uri":"urn:dita:single_topic.ditamap","label":"Single Topic Map"}, "topics":[{"uri":"urn:dita:single_topic.dita","label":"Titre du topic unique"}],"ditaval":"noditaval"}, "id":"breadcrumb","mimeType":"application\\/json"}]}}]}}]}}]} JSON; //Set BO response for AboutConnector $curlConnector->setResponse($aboutResponse, $aboutRequestOpts); //Set response for query $curlConnector->setResponse($response); $search = new AfsSearch($mockBaseUrl, '71003', AfsServiceStatus::STABLE, $curlConnector); $search->set_query($query); $coder = new AfsQueryCoder(); $search->set_query_coder($coder); $helper = $search->execute($query); $replysetHelper = $helper->get_replyset("Book"); $facetHelpers = $replysetHelper->get_facets(); //Make sure each link of facets contains custom parameter foreach ($facetHelpers as $facetHelper) { foreach ($facetHelper->get_elements() as $facetValueHelper) { $this->assertEquals(1, preg_match("/[&\\?]mycustomparameter=mycustomvalue[&\$]/", $facetValueHelper->link)); } } $this->assertEquals("mycustomvalue", $helper->get_query_parameter("mycustomparameter")); }
/** * @expectedException Exception */ public function testNotOrchestratedRequest() { $query = AfsQuery::create_from_parameters(array("query" => "topic", "mycustomparameter" => "mycustomvalue")); $curlConnector = new SAI_CurlStub(); $mockBaseUrl = "localhost"; $aboutRequestOpts = array(CURLOPT_URL => "http://{$mockBaseUrl}/bo-ws/about"); $aboutResponse = <<<JSON { "x:type":"ws.response", "query":{ "x:type":"ws.response.query", "parameters":{ "x:type":"collection", "x:values":[ ] }, "properties":{ "x:type":"x:dynamic" } }, "result":{ "x:type":"bows.about", "boWsVersion":{ "x:type":"AfsVersion", "build":"3eaebfd1f1fe261780347cbc35bfbd65d613575e", "gen":"7.6", "major":"4", "minor":"0", "motto":"Pink Dolphin" }, "copyright":"Copyright (C) 1999-2013 Antidot" } } JSON; $response = <<<JSON {"header":{"query":{"userId":"b756a0de-e252-426f-8a24-66c4bbb96aa0","sessionId":"dd33b13c-dd9f-49a1-abe1-95e89140fb40","date":"2015-10-14T15:12:00+0000","queryParam":[{"name":"afs:service","value":"42"},{"name":"afs:status","value":"beta"},{"name":"afs:query","value":"vert"},{"name":"afs:output","value":"json,2"},{"name":"afs:facetDefault","value":"replies=100"},{"name":"afs:replies","value":"20"},{"name":"afs:sort","value":"disposite, DESC and afs:relevance, DESC"}],"mainCtx":{"textQuery":"vert"},"textQuery":"vert"},"user":{"requestMethod":"GET","agent":"Mozilla\\/5.0 (X11; Linux x86_64) AppleWebKit\\/537.36 (KHTML, like Gecko) Chrome\\/42.0.2311.90 Safari\\/537.36","address":"172.17.42.1","output":{"format":"JSON","encoding":"gzip","charset":"UTF-8"}},"performance":{"durationMs":5},"info":{}},"replySet":[{"meta":{"uri":"Catalog","totalItems":1,"totalItemsIsExact":true,"pageItems":1,"firstPageItem":1,"lastPageItem":1,"durationMs":1,"firstPaFId":3,"lastPaFId":3,"producer":"SEARCH"},"facets":{"facet":[{"afs:t":"FacetTree","node":[{"key":"fr","labels":[{"label":"Français"}],"items":1}],"layout":"TREE","type":"STRING","id":"afs:lang","labels":[{"label":"Language"}]}]},"content":{"reply":[{"docId":4,"uri":"3612531066812_fr","title":[{"afs:t":"KwicMatch","match":"vert"}],"relevance":{"rank":1},"clientData":[{"contents":"<product xmlns=\\"http:\\/\\/ref.antidot.net\\/store\\/afs#\\" xmlns:xsi=\\"http:\\/\\/www.w3.org\\/2001\\/XMLSchema-instance\\" id=\\"3612531066812\\" xml:lang=\\"fr\\" autocomplete=\\"on\\" xsi:schemaLocation=\\"http:\\/\\/ref.antidot.net\\/store\\/afs# http:\\/\\/ref.antidot.net\\/store\\/v4.1\\/xsd\\/product.xsd\\"><name xmlns=\\"http:\\/\\/ref.antidot.net\\/store\\/afs#\\">vert<\\/name><\\/product>","id":"main","mimeType":"text\\/xml"}]}]}}]} JSON; //Set BO response for AboutConnector $curlConnector->setResponse($aboutResponse, $aboutRequestOpts); //Set response for query $curlConnector->setResponse($response); $search = new AfsSearch($mockBaseUrl, '71003', AfsServiceStatus::STABLE, $curlConnector); $search->set_query($query); $coder = new AfsQueryCoder(); $search->set_query_coder($coder); $helper = $search->execute($query); $this->assertEquals($helper->is_orchestrated(), false); $helper->get_orchestration_type(); }