Files
socialhose-php/tests/IndexBundle/Index/External/Spinn3rIndexTest.php
T
2022-12-09 08:36:26 -06:00

164 lines
5.1 KiB
PHP

<?php
namespace IndexBundle\Index\External;
use Psr\Log\NullLogger;
use Symfony\Component\Cache\Adapter\NullAdapter;
use Tests\AppTestCase;
/**
* Class HoseIndexTest
*
* @package IndexBundle\Index\External
*/
class HoseIndexTest extends AppTestCase
{
/**
* @var HoseIndex
*/
private $index;
/**
* @return void
*/
public function testBeforeSearch()
{
$parameters = [
'body' => [ 'query' => [ 'query_string' => [ 'query' => sprintf(
'published:[%s TO *]',
date_create('+ 36 days')->format('c')
), ], ], ],
];
$parameters = $this->call($this->index, 'beforeSearch', [ $parameters ]);
$this->assertArrayHasKey('index', $parameters);
$this->assertEquals(
implode(',', [ HoseIndex::HOT, HoseIndex::WARM ]),
$parameters['index']
);
}
/**
* @dataProvider getQueryRangeEndProvider
*
* @param \DateTime|null $expected Expected result.
* @param string $query ES query string.
*
* @return void
*/
public function testGetQueryRangeEnd(\DateTime $expected = null, $query)
{
$this->assertEquals(
$expected,
$this->call($this->index, 'getQueryRangeEnd', [ $query ])
);
}
/**
* @return array
*/
public function getQueryRangeEndProvider()
{
$date1 = date_create('+ 36 days 00:00:00');
return [
[
$date1,
sprintf('published:[%s TO *]', $date1->format('c')),
],
[
date_create('2017-11-27T00:00:00+07:00'),
'{"body":{"query":{"query_string":{"query":"(main:("Clarion School" -"North Clarion") OR title:("Clarion School" -"North Clarion")) AND ((source_publisher_type:(MAINSTREAM_NEWS OR REVIEW OR CLASSIFIED OR UNKNOWN OR WEBLOG OR MICROBLOG OR UNKNOWN OR SOCIAL_MEDIA OR UNKNOWN OR VIDEO OR UNKNOWN OR FORUM OR MEMETRACKER OR UNKNOWN OR PHOTO OR UNKNOWN)) AND ((published:[2017-11-27T00:00:00+07:00 TO *]) AND (published:[* TO 2018-01-26T23:59:59+07:00])) AND (published:[* TO 2018-01-26T19:20:26+07:00]))"}},"sort":{"published":{"order":"desc"}}},"index":"content_*","type":"","size":100,"from":0}',
],
[
null,
'',
],
[
null,
'{"body":{"query":{"query_string":{"query":"(main:("Clarion School" -"North Clarion") OR title:("Clarion School" -"North Clarion")) AND ((source_publisher_type:(MAINSTREAM_NEWS OR REVIEW OR CLASSIFIED OR UNKNOWN OR WEBLOG OR MICROBLOG OR UNKNOWN OR SOCIAL_MEDIA OR UNKNOWN OR VIDEO OR UNKNOWN OR FORUM OR MEMETRACKER OR UNKNOWN OR PHOTO OR UNKNOWN)))"}},"sort":{"published":{"order":"desc"}}},"index":"content_*","type":"","size":100,"from":0}',
],
];
}
/**
* @dataProvider determineIndexProvider
*
* @param array $expected Expected hose indices.
* @param array $arguments Tested method arguments.
*
* @return void
*/
public function testDetermineIndex(array $expected, array $arguments)
{
$this->assertEquals(
implode(',', $expected),
$this->call($this->index, 'determineIndex', $arguments)
);
}
/**
* @return array
*/
public function determineIndexProvider()
{
return [
'without date' => [
[ HoseIndex::HOT, HoseIndex::WARM, HoseIndex::COLD ],
[],
],
'72 days ahead' => [
[ HoseIndex::HOT, HoseIndex::WARM, HoseIndex::COLD ],
[ date_create('+ 72 days') ],
],
'60 days and 1 hour ahead' => [
[ HoseIndex::HOT, HoseIndex::WARM, HoseIndex::COLD ],
[ date_create('+ 60 days 01:00:00') ],
],
'60 days ahead' => [
[ HoseIndex::HOT, HoseIndex::WARM ],
[ date_create('+ 60 days 00:00:00') ],
],
'36 days ahead' => [
[ HoseIndex::HOT, HoseIndex::WARM ],
[ date_create('+ 36 days') ],
],
'30 days and 1 hour ahead' => [
[ HoseIndex::HOT, HoseIndex::WARM ],
[ date_create('+ 30 days 01:00:00') ],
],
'30 days ahead' => [
[ HoseIndex::HOT ],
[ date_create('+ 30 days 00:00:00') ],
],
'21 days ahead' => [
[ HoseIndex::HOT ],
[ date_create('+ 21 days') ],
],
'current date' => [
[ HoseIndex::HOT ],
[ date_create() ],
],
];
}
/**
* Sets up the fixture, for example, open a network connection.
* This method is called before a test is executed.
*
* @return void
*/
protected function setUp()
{
$this->index = new HoseIndex(
new NullLogger(),
new NullAdapter(),
'host',
'vendor',
'auth'
);
}
}