/** * @group Slow * @slowExecutionTime 0.07419 ms * @covers \Wikia\Search\Config::hasFilterQueries */ public function testHasFilterQueries() { $config = new \Wikia\Search\Config(); $this->assertFalse($config->hasFilterQueries()); $config->setFilterQuery('foo', 'bar'); $this->assertTrue($config->hasFilterQueries()); }
/** * @group Slow * @group Broken * @slowExecutionTime 0.07724 ms * @covers \Wikia\Search\Config::setFilterQuery * @covers \Wikia\Search\Config::setFilterQueries * @covers \Wikia\Search\Config::getFilterQueries * @covers \Wikia\Search\Config::setFilterQueryByCode * @covers \Wikia\Search\Config::setFilterQueriesFromCodes */ public function testFilterQueryMethods() { $config = new Config(); $fqAttr = new ReflectionProperty('\\Wikia\\Search\\Config', 'filterQueries'); $fqAttr->setAccessible(true); $this->assertFalse($config->hasFilterQueries(), '\\Wikia\\Search\\Config::hasFilterQueries should return false if no filter queries have been explicitly set.'); $this->assertEquals($config, $config->setFilterQuery('foo:bar'), '\\Wikia\\Search\\Config::setFilterQuery should provide a fluent interface.'); $this->assertArrayHasKey('fq1', $fqAttr->getValue($config), '\\Wikia\\Search\\Config::setFilterQuery should assign an auto-incremented key when a key is not provided'); $this->assertArrayHasKey('foo', $fqAttr->getValue($config->setFilterQuery('bar:foo', 'foo')), '\\Wikia\\Search\\Config::setFilterQuery should store the filter query by the provided key'); $this->assertContains(array('key' => 'foo', 'query' => 'bar:foo'), $fqAttr->getValue($config), '\\Wikia\\Search\\Config::setFilterQuery should store the key and query as associative values in the value array per Solarium expected format'); $this->assertTrue($config->hasFilterQueries(), '\\Wikia\\Search\\Config::hasFilterQueries should return true if filter queries have been set'); $this->assertEquals($fqAttr->getValue($config), $config->getFilterQueries(), '\\Wikia\\Search\\Config::getFilterQueries should return the filterQueries attribute'); $this->assertEquals($config, $config->setFilterQueries(array()), '\\Wikia\\Search\\Config::setFilterQueries should provide a fluent interface'); $this->assertEmpty($fqAttr->getValue($config), 'Passing an empty array to \\Wikia\\Search\\Config::setFilterQueries should remove all filter queries.'); $this->assertEquals(0, \Wikia\Search\Config::$filterQueryIncrement, '\\Wikia\\Search\\Config::setFilterQueries should reset the filter query increment'); $config->setFilterQueries(array(array('query' => 'foo:bar', 'key' => 'baz'), 'qux', true)); $this->assertArrayHasKey('baz', $fqAttr->getValue($config), 'A properly formatted filter query array passed as a value to the array argument of ' . ' \\Wikia\\Search\\Config::setFilterQueries should respect the previously set key'); $this->assertArrayHasKey('fq1', $fqAttr->getValue($config), 'Values in the argument array that are string-typed should receive ' . ' an auto-incremented key per \\Wikia\\Search\\Config::setFilterQuery'); $this->assertEquals(2, count($fqAttr->getValue($config)), 'Values in the array passed to \\Wikia\\Search\\Config::setFilterQueries that are not properly formatted should be ignored'); // resetting $config->setFilterQueries(array()); $this->assertEquals($config, $config->setFilterQueryByCode('is_video'), '\\Wikia\\Search\\Config::setFilterQueryByCode should provide a fluent interface'); $fqArray = $fqAttr->getValue($config); $this->assertArrayHasKey('is_video', $fqArray, '\\Wikia\\Search\\Config::setFilterQueryByCode should set the code as the key for the new filter query'); $fcAttr = new ReflectionProperty('\\Wikia\\Search\\Config', 'filterCodes'); $fcAttr->setAccessible(true); $filterCodes = $fcAttr->getValue($config); $this->assertEquals(array('key' => 'is_video', 'query' => $filterCodes['is_video']), $fqArray['is_video'], '\\Wikia\\Search\\Config::setFilterQueryByCode should set exactly the query string that is ' . 'the value in \\Wikia\\Search\\Config::filterCodes, keyed by the code provided'); $mockWikia = $this->getMock('Wikia', array('log')); $mockWikia->staticExpects($this->any())->method('log'); $this->mockClass('Wikia', $mockWikia); // this satisfies the above expectation $config->setFilterQueryByCode('notacode'); $this->assertEquals($config, $config->setFilterQueriesFromCodes(array('is_video', 'is_image')), '\\Wikia\\Search\\Config::setFilterQueriesFromCodes should provide a fluent interface'); $this->assertEquals(2, count($fqAttr->getValue($config)), '\\Wikia\\Search\\Config::setFilterQueriesFromCode should function over each array ' . ' value provided as a code key to \\Wikia\\Search\\Config::setFilterQueryByCode. ' . ' This test also proves a vital part of filter query data architecture: overwriting a key is allowed, ' . ' and warnings are not issues if you do so.'); // needs resetting to get the testing environment back in shape \Wikia\Search\Config::$filterQueryIncrement = 0; }