Commit 091592f7 authored by Karl's avatar Karl

Neue Tests für Methoden der MetaGer.php

parent 4a64dee8
......@@ -69,7 +69,7 @@ class MetaGer
foreach (scandir($dir) as $filename) {
$path = $dir . $filename;
if (is_file($path)) {
require $path;
require_once $path;
}
}
......@@ -608,7 +608,7 @@ class MetaGer
# Findet für alle Foki die enthaltenen Sumas
$foki = []; # [fokus][suma] => [suma]
foreach ($sumas as $suma) {
if ((!isset($suma['disabled']) || $suma['disabled'] === "") && (!isset($suma['userSelectable']) || $suma['userSelectable']->__toString() === "1")) {
if ((!$this->sumaIsDisabled($suma)) && (!isset($suma['userSelectable']) || $suma['userSelectable']->__toString() === "1")) {
if (isset($suma['type'])) {
# Wenn foki für diese Suchmaschine angegeben sind
$focuses = explode(",", $suma['type']->__toString());
......@@ -683,6 +683,7 @@ class MetaGer
return false;
}
}
return false;
}
public function waitForResults($enginesToLoad, $overtureEnabled, $canBreak)
......@@ -869,22 +870,21 @@ class MetaGer
public function checkSpecialSearches(Request $request)
{
$query = $this->q;
if ($request->has('site')) {
$site = $request->input('site');
} else {
$site = "";
}
$this->searchCheckSitesearch($query, $site);
$this->searchCheckHostBlacklist($query);
$this->searchCheckDomainBlacklist($query);
$this->searchCheckStopwords($query);
$this->searchCheckPhrase($query);
$this->searchCheckSitesearch($site);
$this->searchCheckHostBlacklist();
$this->searchCheckDomainBlacklist();
$this->searchCheckStopwords();
$this->searchCheckPhrase();
}
public function searchCheckSitesearch($query, $site)
public function searchCheckSitesearch($site)
{
if (preg_match("/(.*)\bsite:(\S+)(.*)/si", $query, $match)) {
if (preg_match("/(.*)\bsite:(\S+)(.*)/si", $this->q, $match)) {
$this->site = $match[2];
$this->q = $match[1] . $match[3];
}
......@@ -893,12 +893,11 @@ class MetaGer
}
}
public function searchCheckHostBlacklist($query)
public function searchCheckHostBlacklist()
{
while (preg_match("/(.*)(^|\s)-host:(\S+)(.*)/si", $query, $match)) {
while (preg_match("/(.*)(^|\s)-host:(\S+)(.*)/si", $this->q, $match)) {
$this->hostBlacklist[] = $match[3];
$query = $match[1] . $match[4];
$this->q = $query;
$this->q = $match[1] . $match[4];
}
if (sizeof($this->hostBlacklist) > 0) {
$hostString = "";
......@@ -910,12 +909,11 @@ class MetaGer
}
}
public function searchCheckDomainBlacklist($query)
public function searchCheckDomainBlacklist()
{
while (preg_match("/(.*)(^|\s)-domain:(\S+)(.*)/si", $query, $match)) {
while (preg_match("/(.*)(^|\s)-domain:(\S+)(.*)/si", $this->q, $match)) {
$this->domainBlacklist[] = $match[3];
$query = $match[1] . $match[4];
$this->q = $query;
$this->q = $match[1] . $match[4];
}
if (sizeof($this->domainBlacklist) > 0) {
$domainString = "";
......@@ -927,12 +925,11 @@ class MetaGer
}
}
public function searchCheckStopwords($query)
public function searchCheckStopwords()
{
while (preg_match("/(.*)(^|\s)-(\S+)(.*)/si", $query, $match)) {
while (preg_match("/(.*)(^|\s)-(\S+)(.*)/si", $this->q, $match)) {
$this->stopWords[] = $match[3];
$query = $match[1] . $match[4];
$this->q = $query;
$this->q = $match[1] . $match[4];
}
if (sizeof($this->stopWords) > 0) {
$stopwordsString = "";
......@@ -944,10 +941,10 @@ class MetaGer
}
}
public function searchCheckPhrase($query)
public function searchCheckPhrase()
{
$p = "";
$tmp = $query;
$tmp = $this->q;
while (preg_match("/(.*)\"(.+)\"(.*)/si", $tmp, $match)) {
$tmp = $match[1] . $match[3];
$this->phrases[] = strtolower($match[2]);
......@@ -1083,7 +1080,6 @@ class MetaGer
return false;
} else {
$this->addedLinks[$hash] = 1;
return true;
}
}
......
<?php
return [
'results.failed' => 'Leider konnten wir zu Ihrer Sucheingabe keine passenden Ergebnisse finden.',
'results.failed' => 'Leider konnten wir zu Ihrer Sucheingabe keine passenden Ergebnisse finden.',
'settings.noneSelected' => 'Achtung: Sie haben in ihren Einstellungen keine Suchmaschine ausgewählt.',
'settings.noneSelected' => 'Achtung: Sie haben in ihren Einstellungen keine Suchmaschine ausgewählt.',
'engines.noParser' => 'Beim Abfragen von :engine ist ein Fehler aufgetreten. Bitte benachrichtigen Sie uns unter: <a href="mailto:office@suma-ev.de?subject=Fehlender Parser: :engine">office@suma-ev.de</a>',
'engines.noParser' => 'Beim Abfragen von :engine ist ein Fehler aufgetreten. Bitte benachrichtigen Sie uns unter: <a href="mailto:office@suma-ev.de?subject=Fehlender Parser: :engine">office@suma-ev.de</a>',
'formdata.cantLoad' => 'Suma-File konnte nicht gefunden werden',
'formdata.noSearch' => 'Achtung: Sie haben keinen Suchbegriff eingegeben. Sie können ihre Suchbegriffe oben eingeben und es erneut versuchen.',
'formdata.dartEurope' => 'Hinweis: Sie haben Dart-Europe aktiviert. Die Suche kann deshalb länger dauern und die maximale Suchzeit wurde auf 10 Sekunden hochgesetzt.',
'formdata.hostBlacklist' => 'Ergebnisse von folgenden Hosts werden nicht angezeigt: ":hostString"',
'formdata.cantLoad' => 'Suma-File konnte nicht gefunden werden',
'formdata.noSearch' => 'Achtung: Sie haben keinen Suchbegriff eingegeben. Sie können ihre Suchbegriffe oben eingeben und es erneut versuchen.',
'formdata.dartEurope' => 'Hinweis: Sie haben Dart-Europe aktiviert. Die Suche kann deshalb länger dauern und die maximale Suchzeit wurde auf 10 Sekunden hochgesetzt.',
'formdata.hostBlacklist' => 'Ergebnisse von folgenden Hosts werden nicht angezeigt: ":host"',
'formdata.hostBlacklist' => 'Ergebnisse von folgenden Domains werden nicht angezeigt: ":domain"',
'formdata.stopwords' => 'Sie machen eine Ausschlusssuche. Ergebnisse mit folgenden Wörtern werden nicht angezeigt: ":stopwords"',
'formdata.phrase' => 'Sie führen eine Phrasensuche durch: :phrase',
'formdata.domainBlacklist' => 'Ergebnisse von folgenden Domains werden nicht angezeigt: ":domain"',
'formdata.stopwords' => 'Sie machen eine Ausschlusssuche. Ergebnisse mit folgenden Wörtern werden nicht angezeigt: ":stopwords"',
'formdata.phrase' => 'Sie führen eine Phrasensuche durch: :phrase',
'sitesearch.failed' => 'Sie wollten eine Sitesearch auf :site durchführen. Leider unterstützen die eingestellten Suchmaschinen diese nicht. Sie können <a href=":searchLink">hier</a> die Sitesearch im Web-Fokus durchführen. Es werden ihnen Ergebnisse ohne Sitesearch angezeigt.',
'sitesearch.success' => 'Sie führen eine Sitesearch durch. Es werden nur Ergebnisse von der Seite: <a href="http://:site" target="_blank">":site"</a> angezeigt.',
'sitesearch.failed' => 'Sie wollten eine Sitesearch auf :site durchführen. Leider unterstützen die eingestellten Suchmaschinen diese nicht. Sie können <a href=":searchLink">hier</a> die Sitesearch im Web-Fokus durchführen. Es werden ihnen Ergebnisse ohne Sitesearch angezeigt.',
'sitesearch.success' => 'Sie führen eine Sitesearch durch. Es werden nur Ergebnisse von der Seite: <a href="http://:site" target="_blank">":site"</a> angezeigt.',
];
......@@ -12,16 +12,20 @@ class MetaGerPhpTest extends TestCase
*/
public function test()
{
$metager = new MetaGer();
$request = $this->createDummyRequest();
$this->fullRunTest($metager, $request);
$this->specialSearchTest($metager);
$this->createSearchEnginesTest($metager);
$this->linkGeneratorTest($metager);
$this->fullRunTest();
$this->specialSearchTest();
$this->createSearchEnginesTest();
$this->linkGeneratorTest();
#$this->getHostCountTest();
$this->addLinkTest();
$this->adjustFocusTest();
$this->checkCanNotSitesearchTest();
}
public function fullRunTest($metager, $request)
public function fullRunTest()
{
$metager = new MetaGer();
$request = $this->createDummyRequest();
$metager->parseFormData($request);
$metager->checkSpecialSearches($request);
$metager->createSearchEngines($request);
......@@ -47,7 +51,7 @@ class MetaGerPhpTest extends TestCase
#new Request(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null)
$query = [];
$query["eingabe"] = "garten";
$query["eingabe"] = 'suchwort -blackword -host:blackhost -domain:blackdomain site:wantsite "i want phrase"';
$query["focus"] = "angepasst";
$query["encoding"] = "utf8";
$query["lang"] = "all";
......@@ -60,27 +64,35 @@ class MetaGerPhpTest extends TestCase
return new Request($query);
}
public function specialSearchTest($metager)
public function specialSearchTest()
{
$metager = new MetaGer();
$request = new Request(['eingabe' => 'suchwort -blackword -host:blackhost -domain:blackdomain site:wantsite "i want phrase"']);
$metager->parseFormData($request);
$metager->checkSpecialSearches($request);
$this->assertEquals("wantsite", $metager->getSite());
$this->assertEquals("blackhost", $metager->getUserHostBlacklist()[0]);
$this->assertEquals("blackdomain", $metager->getUserDomainBlacklist()[0]);
$this->assertEquals("blackword", $metager->getStopWords()[0]);
$this->assertEquals("i want phrase", $metager->getPhrases()[0]);
}
public function createSearchEnginesTest()
{
$metager->searchCheckSitesearch("hund katze site:wolf.de", "");
$this->assertEquals("wolf.de", $metager->getSite());
$metager->searchCheckHostBlacklist("hund katze -host:wolf.de");
$this->assertEquals("wolf.de", $metager->getUserHostBlacklist()[0]);
$metager->searchCheckDomainBlacklist("hund katze -domain:wolf.de");
$this->assertEquals("wolf.de", $metager->getUserDomainBlacklist()[0]);
$metager->searchCheckStopwords("hund katze -wolf");
$this->assertEquals("wolf", $metager->getStopWords()[0]);
$metager->searchCheckPhrase('hund katze "wolf"');
$this->assertEquals("wolf", $metager->getPhrases()[0]);
$this->specialSumaTest();
}
public function createSearchEnginesTest($metager)
public function addLinkTest()
{
$this->specialSumaTest($metager);
$metager = new MetaGer();
$link = "metager.de";
$this->assertTrue($metager->addLink($link));
$this->assertFalse($metager->addLink($link));
}
public function specialSumaTest($metager)
public function specialSumaTest()
{
$metager = new MetaGer();
$suma = new SimpleXMLElement("<suma></suma>");
$suma["name"] = "qualigo";
$this->assertTrue($metager->sumaIsAdsuche($suma, false));
......@@ -92,18 +104,58 @@ class MetaGerPhpTest extends TestCase
$this->assertTrue($metager->sumaIsNotAdsuche($suma));
}
public function linkGeneratorTest($metager)
public function linkGeneratorTest()
{
$this->callbackTester($metager, "generateSearchLink", ["bilder"], "http://localhost/meta/meta.ger3?eingabe=garten&focus=bilder&encoding=utf8&lang=all&time=1000&sprueche=on&resultCount=20&tab=on&onenewspage=on&out=results");
$this->callbackTester($metager, "generateQuicktipLink", [], "http://localhost/qt");
$this->callbackTester($metager, "generateSiteSearchLink", ["wolf.de"], "http://localhost/meta/meta.ger3?eingabe=garten+site%3Awolf.de&focus=web&encoding=utf8&lang=all&time=1000&sprueche=on&resultCount=20&tab=on&onenewspage=on");
$this->callbackTester($metager, "generateRemovedHostLink", ["wolf.de"], "http://localhost/meta/meta.ger3?eingabe=garten+-host%3Awolf.de&focus=angepasst&encoding=utf8&lang=all&time=1000&sprueche=on&resultCount=20&tab=on&onenewspage=on");
$this->callbackTester($metager, "generateRemovedDomainLink", ["wolf.de"], "http://localhost/meta/meta.ger3?eingabe=garten+-domain%3Awolf.de&focus=angepasst&encoding=utf8&lang=all&time=1000&sprueche=on&resultCount=20&tab=on&onenewspage=on");
$metager = new Metager();
$request = new Request(['eingabe' => 'test']);
$metager->parseFormData($request);
$this->linkCallbackTester($metager, "generateSearchLink", ["news"],
'/^.*?eingabe=test&focus=news&out=results$/');
$this->linkCallbackTester($metager, "generateQuicktipLink", [],
'/\/qt/');
$this->linkCallbackTester($metager, "generateSiteSearchLink", ["wolf.de"],
'/^.*?eingabe=test\+site%3Awolf.de&focus=web$/');
$this->linkCallbackTester($metager, "generateRemovedHostLink", ["wolf.de"],
'/^.*?eingabe=test\+-host%3Awolf.de$/');
$this->linkCallbackTester($metager, "generateRemovedDomainLink", ["wolf.de"],
'/^.*?eingabe=test\+-domain%3Awolf.de$/');
}
public function callbackTester($metager, $funcName, $input, $expectedOutput)
public function linkCallbackTester($metager, $funcName, $input, $expectedOutput)
{
$output = call_user_func_array(array($metager, $funcName), $input);
$this->assertEquals($expectedOutput, $output);
$this->assertRegExp($expectedOutput, $output);
}
public function getHostCountTest()
{
$metager = new MetaGer();
$before = $metager->getHostCount("host.de");
$metager->addHostCount("host.de");
$after = $metager->getHostCount("host.de");
$this->assertEquals($before + 1, $after);
$before = $after;
$metager->addHostCount("host.de");
$after = $metager->getHostCount("host.de");
$this->assertEquals($before + 1, $after);
}
public function adjustFocusTest()
{
$metager = new MetaGer();
$request = new Request(["focus" => "web"]);
$metager->parseFormData($request);
$this->assertEquals("web", $metager->getFokus());
$sumas = simplexml_load_file("tests/testSumas.xml")->xpath("suma"); # Eine spezielle test sumas.xml
$enabledSearchengines = $sumas;
$metager->adjustFocus($sumas, $enabledSearchengines);
$this->assertEquals("bilder", $metager->getFokus());
}
public function checkCanNotSitesearchTest()
{
$metager = new MetaGer();
$enabledSearchengines = simplexml_load_file("tests/testSumas.xml")->xpath("suma"); # Eine spezielle test sumas.xml
$this->assertFalse($metager->checkCanNotSitesearch($enabledSearchengines));
}
}
<?xml version="1.0" encoding="UTF-8"?>
<sumas>
<suma
name="suchmaschine"
host="www.suchmaschine.de"
skript="/suche/"
formData="sprache=de&amp;sortieren=true&amp;&amp;queue=&lt;&lt;QUERY&gt;&gt;"
package="suchmaschine"
displayName="Meine Suchmaschine"
homepage="www.suchmaschine.de/welcome"
port="443"
inputEncoding="Latin1"
userSelectable="1"
type="bilder"
engineBoost="1.2"
additionalHeaders="$#!#$"
disabled="0"
hasSiteSearch="1"
cacheDuration="60"
></suma>
</sumas>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment