Passed
Pull Request — master (#3)
by Gordon
01:51
created

BulkTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 25
dl 0
loc 50
rs 10
c 0
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A testIndexAllDocumentsSiteTree() 0 37 1
A setUp() 0 7 1
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: gordon
5
 * Date: 24/3/2561
6
 * Time: 20:36 น.
7
 */
8
9
namespace Suilven\ManticoreSearch\Tests\Service;
10
11
use SilverStripe\Dev\SapphireTest;
12
use Suilven\FreeTextSearch\Indexes;
13
use Suilven\ManticoreSearch\Helper\IndexingHelper;
14
use Suilven\ManticoreSearch\Service\Indexer;
15
use Suilven\ManticoreSearch\Service\Searcher;
16
use Suilven\ManticoreSearch\Service\Suggester;
17
use Suilven\ManticoreSearch\Tests\Models\FlickrPhoto;
18
19
class BulkTest extends SapphireTest
20
{
21
    protected static $fixture_file = 'tests/fixtures/sitetree.yml';
22
23
    public function setUp()
24
    {
25
        parent::setUp();
26
        $indexesService = new Indexes();
27
        $indexesObj = $indexesService->getIndexes();
28
        $indexer = new Indexer($indexesObj);
0 ignored issues
show
Bug introduced by
$indexesObj of type Suilven\FreeTextSearch\Index[]|array is incompatible with the type Suilven\FreeTextSearch\Indexes expected by parameter $indexes of Suilven\ManticoreSearch\...\Indexer::__construct(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

28
        $indexer = new Indexer(/** @scrutinizer ignore-type */ $indexesObj);
Loading history...
29
        $indexer->reconfigureIndexes();
30
    }
31
32
    public function testIndexAllDocumentsSiteTree()
33
    {
34
        // index all SiteTree objects
35
        $helper = new IndexingHelper();
36
        $helper->bulkIndex('SilverStripe\CMS\Model\SiteTree');
37
38
39
        // search against them
40
        $searcher = new Searcher();
41
        $searcher->setIndex('sitetree');
42
        $results = $searcher->search('sodium');
43
44
        // assert number of results
45
        $this->assertEquals(4, sizeof($results));
46
47
        // assert IDs and that sodium is in the result set somewhere
48
        $this->assertEquals(34, $results[0]->ID);
49
50
        // @todo Why is ->title returning #34 here?
51
        $this->assertContains('Sodium', $results[0]->menutitle);
52
53
        $this->assertEquals(17, $results[1]->ID);
54
        $this->assertContains('sodium', $results[1]->content);
55
56
        $this->assertEquals(20, $results[2]->ID);
57
        $this->assertContains('sodium', $results[2]->content);
58
59
        $this->assertEquals(22, $results[3]->ID);
60
        $this->assertContains('sodium', $results[3]->content);
61
62
63
        // now do a suggest
64
        /** @var Suggester $suggester */
65
        $suggester = new Suggester();
66
        $suggester->setIndex('sitetree');
67
        $suggestions = $suggester->suggest('chessbored');
68
        $this->assertEquals(['chessboard'], $suggestions);
69
    }
70
}
71