<?php use App\MetaGer; use Illuminate\Http\Request; class MetaGerPhpTest extends TestCase { /** * A basic test example. * * @return void */ public function test() { $this->fullRunTest(); $this->specialSearchTest(); $this->createSearchEnginesTest(); $this->linkGeneratorTest(); #$this->getHostCountTest(); $this->addLinkTest(); $this->adjustFocusTest(); $this->checkCanNotSitesearchTest(); } public function fullRunTest() { $metager = new MetaGer(); $request = $this->createDummyRequest(); $metager->parseFormData($request); $metager->checkSpecialSearches($request); $metager->createSearchEngines($request); $metager->rankAll(); $metager->prepareResults(); $metager->createView(); } public function createDummyRequest() { /** * Constructor. * * @param array $query The GET parameters * @param array $request The POST parameters * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...) * @param array $cookies The COOKIE parameters * @param array $files The FILES parameters * @param array $server The SERVER parameters * @param string|resource $content The raw body data */ #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"] = 'suchwort -blackword -host:blackhost -domain:blackdomain site:wantsite "i want phrase"'; $query["focus"] = "angepasst"; $query["encoding"] = "utf8"; $query["lang"] = "all"; $query["time"] = "1000"; $query["sprueche"] = "on"; $query["resultCount"] = "20"; $query["tab"] = "on"; $query["onenewspage"] = "on"; return new Request($query); } 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() { $this->specialSumaTest(); } public function addLinkTest() { $metager = new MetaGer(); $link = "metager.de"; $this->assertTrue($metager->addLink($link)); $this->assertFalse($metager->addLink($link)); } public function specialSumaTest() { $metager = new MetaGer(); $suma = new SimpleXMLElement("<suma></suma>"); $suma["name"] = "qualigo"; $this->assertTrue($metager->sumaIsAdsuche($suma, false)); $suma["disabled"] = "1"; $this->assertTrue($metager->sumaIsDisabled($suma)); $suma["name"] = 'overture'; $this->assertTrue($metager->sumaIsOverture($suma)); $suma["name"] = 'bing'; $this->assertTrue($metager->sumaIsNotAdsuche($suma)); } public function linkGeneratorTest() { $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 linkCallbackTester($metager, $funcName, $input, $expectedOutput) { $output = call_user_func_array(array($metager, $funcName), $input); $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)); } }