Passed
Push — sheepy/introspection ( 000d40...b6b869 )
by Marco
02:43
created

QueryComponentFactoryTest::testEscapeTerms()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 6
c 0
b 0
f 0
dl 0
loc 12
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
4
namespace Firesphere\SolrSearch\Tests;
5
6
use CircleCITestIndex;
7
use Firesphere\SolrSearch\Factories\QueryComponentFactory;
8
use Firesphere\SolrSearch\Indexes\BaseIndex;
9
use Firesphere\SolrSearch\Queries\BaseQuery;
10
use SilverStripe\Core\Injector\Injector;
11
use SilverStripe\Dev\SapphireTest;
12
use Solarium\Core\Query\Helper;
13
14
class QueryComponentFactoryTest extends SapphireTest
15
{
16
17
    /**
18
     * @var QueryComponentFactory
19
     */
20
    protected $factory;
21
22
    public function testBuildQuery()
23
    {
24
        $index = new CircleCITestIndex();
25
        $query = new BaseQuery();
26
        $clientQuery = $index->getClient()->createSelect();
27
        $query->addTerm('Home');
28
        $query->addField('SiteTree_Title');
29
        $query->addFilter('SiteTree_Title', 'Home');
30
        $query->addExclude('SiteTree_Title', 'Contact');
31
        $query->addBoostedField('SiteTree_Content', [], 2);
32
33
        $this->factory->setQuery($query);
34
        $this->factory->setIndex($index);
35
        $this->factory->setClientQuery($clientQuery);
36
        $this->factory->setHelper($clientQuery->getHelper());
37
        $this->factory->setQueryArray(['Home']);
38
39
        $this->factory->buildQuery();
40
41
        $expected = ['Home', 'SiteTree_Content:Home^2.0'];
42
        $this->assertEquals($expected, $this->factory->getQueryArray());
43
        $this->assertEquals(['SiteTree_Title'], $this->factory->getClientQuery()->getFields());
44
        $this->assertCount(3, $this->factory->getClientQuery()->getFilterQueries());
45
        $this->assertInstanceOf(Helper::class, $this->factory->getHelper());
46
        $this->assertInstanceOf(BaseIndex::class, $this->factory->getIndex());
47
        $this->assertInstanceOf(BaseQuery::class, $this->factory->getQuery());
48
    }
49
50
51
    public function testEscapeTerms()
52
    {
53
        $term = '"test me" help';
54
55
        $helper = $this->factory->getIndex()->getClient()->createSelect()->getHelper();
56
57
        $escaped = $this->factory->escapeSearch($term, $helper);
58
        $this->assertEquals('"\"test me\"" help', $escaped);
59
60
        $term = 'help me';
61
62
        $this->assertEquals('help me', $this->factory->escapeSearch($term, $helper));
63
    }
64
65
66
    protected function setUp()
67
    {
68
        $this->factory = new QueryComponentFactory();
69
        $this->factory->setIndex(Injector::inst()->get(CircleCITestIndex::class));
70
71
        return parent::setUp();
72
    }
73
}
74