Example #1
0
 /**
  * @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;
 }