IndexCreatorFactoryTest::testFactory()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 41
Code Lines 30

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 30
c 1
b 0
f 0
dl 0
loc 41
rs 9.44
cc 1
nc 1
nop 0
1
<?php declare(strict_types = 1);
2
3
namespace Suilven\FreeTextSearch\Tests\Factory;
4
5
use SilverStripe\Dev\SapphireTest;
6
use Suilven\FreeTextSearch\Factory\IndexCreatorFactory;
7
use Suilven\FreeTextSearch\Helper\SpecsHelper;
8
use Suilven\FreeTextSearch\Tests\Mock\IndexCreator;
9
10
class IndexCreatorFactoryTest extends SapphireTest
11
{
12
    protected static $fixture_file = ['tests/fixtures/sitetree.yml'];
13
14
    public function testFactory(): void
15
    {
16
        $factory = new IndexCreatorFactory();
17
18
        /** @var \Suilven\FreeTextSearch\Tests\Mock\IndexCreator $indexCreator */
19
        $indexCreator = $factory->getIndexCreator();
20
        $this->assertInstanceOf('Suilven\FreeTextSearch\Interfaces\IndexCreator', $indexCreator);
21
        $this->assertInstanceOf('Suilven\FreeTextSearch\Tests\Mock\IndexCreator', $indexCreator);
22
23
        $indexCreator->createIndex('sitetree');
24
25
        $this->assertEquals('sitetree', IndexCreator::getIndexName());
26
27
        $this->assertEquals(['Link'], $indexCreator->getIndexStoredFields());
28
29
        $helper = new SpecsHelper();
30
        $this->assertEquals([
31
            'Title' => 'Varchar',
32
            'Content' => 'HTMLText',
33
            'ParentID' => 'ForeignKey',
34
            'MenuTitle' => 'Varchar',
35
            'Sort' => 'Int',
36
            'Created' => 'DBDatetime',
37
            'LastEdited' => 'DBDatetime',
38
            'Link' => 'Varchar',
39
        ], $helper->getFieldSpecs('sitetree'));
40
41
        $this->assertEquals([
42
            'FirstName' => 'Varchar',
43
            'Surname' => 'Varchar',
44
            'Email' => 'Varchar',
45
        ], $helper->getFieldSpecs('members'));
46
47
        $this->assertEquals([
48
            'Title' => 'Varchar',
49
            'Description' => 'HTMLText',
50
            'Aperture' => 'Float',
51
            'ShutterSpeed' => 'Varchar',
52
            'ISO' => 'Int',
53
            // @todo test fails here with missing link
54
        ], $helper->getFieldSpecs('flickrphotos'));
55
    }
56
}
57