IndexesTest   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 130
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
eloc 83
c 1
b 0
f 0
dl 0
loc 130
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A testGetIndex() 0 17 1
A testGetHasOneFields() 0 14 1
A testGetHasManyFields() 0 13 1
A testGetFacetFields() 0 10 1
A testGetIndexes() 0 58 1
1
<?php declare(strict_types = 1);
2
3
namespace Suilven\FreeTextSearch\Tests;
4
5
use SilverStripe\Dev\SapphireTest;
6
use Suilven\FreeTextSearch\Indexes;
7
8
class IndexesTest extends SapphireTest
9
{
10
    public function testGetIndex(): void
11
    {
12
        $indexes = new Indexes();
13
        $index = $indexes->getIndex('sitetree');
14
        $this->assertEquals('sitetree', $index->getName());
15
        $this->assertEquals([
16
            'Title',
17
            'Content',
18
            'ParentID',
19
            'MenuTitle',
20
            'Sort',
21
            'Created',
22
            'LastEdited',
23
        ], $index->getFields());
24
        $this->assertEquals([], $index->getHasOneFields());
25
        $this->assertEquals([], $index->getHasManyFields());
26
        $this->assertEquals([], $index->getTokens());
27
    }
28
29
30
    /**
31
     * Assert that index objects are create correctly from the configuration file
32
     */
33
    public function testGetIndexes(): void
34
    {
35
        $indexes = new Indexes();
36
        $indices = $indexes->getIndexes();
37
38
        $this->assertEquals('sitetree', $indices['sitetree']->getName());
39
        $this->assertEquals([
40
            'Title',
41
            'Content',
42
            'ParentID',
43
            'MenuTitle',
44
            'Sort',
45
            'Created',
46
            'LastEdited',
47
        ], $indices['sitetree']->getFields());
48
        $this->assertEquals([], $indices['sitetree']->getHasOneFields());
49
        $this->assertEquals([], $indices['sitetree']->getHasManyFields());
50
        $this->assertEquals([], $indices['sitetree']->getTokens());
51
52
        $this->assertEquals(['Title', 'Content'], $indices['sitetree']->getHighlightedFields());
53
        $this->assertEquals(['Link'], $indices['sitetree']->getStoredFields());
54
55
        $this->assertEquals('members', $indices['members']->getName());
56
        $this->assertEquals([
57
            'FirstName',
58
            'Surname',
59
            'Email',
60
        ], $indices['members']->getFields());
61
        $this->assertEquals([], $indices['members']->getHasOneFields());
62
        $this->assertEquals([], $indices['members']->getHasManyFields());
63
        $this->assertEquals([], $indices['members']->getTokens());
64
65
        $this->assertEquals('flickrphotos', $indices['flickrphotos']->getName());
66
        $this->assertEquals([
67
            'Title',
68
            'Description',
69
        ], $indices['flickrphotos']->getFields());
70
        $this->assertEquals(
71
            [
72
                'Photographer' => [
73
                    'relationship' => 'Photographer',
74
                    'field' => 'PathAlias',
75
                    'class' => 'Suilven\FreeTextSearch\Tests\Models\FlickrAuthor',
76
                ],
77
            ],
78
            $indices['flickrphotos']->getHasOneFields()
79
        );
80
        $this->assertEquals(['tags' =>
81
            [
82
                'relationship' => 'FlickrTags',
83
                'field' => 'RawValue',
84
                'class' => 'Suilven\FreeTextSearch\Tests\Models\FlickrTag',
85
            ]], $indices['flickrphotos']->getHasManyFields());
86
        $this->assertEquals([
87
            'Aperture',
88
            'ShutterSpeed',
89
            'ISO',
90
        ], $indices['flickrphotos']->getTokens());
91
    }
92
93
94
    public function testGetFacetFields(): void
95
    {
96
        $indexes = new Indexes();
97
98
        $this->assertEquals([
99
            'Aperture',
100
            'ShutterSpeed',
101
            'ISO',
102
            'Photographer',
103
        ], $indexes->getFacetFields('flickrphotos'));
104
    }
105
106
107
    public function testGetHasOneFields(): void
108
    {
109
        $indexes = new Indexes();
110
111
        \var_export($indexes->getHasOneFields('flickrphotos'));
112
        $this->assertEquals(
113
            [
114
                [
115
                    'name' => 'Photographer',
116
                    'relationship' => 'Photographer',
117
                    'field' => 'PathAlias',
118
                ],
119
            ],
120
            $indexes->getHasOneFields('flickrphotos')
121
        );
122
    }
123
124
125
    public function testGetHasManyFields(): void
126
    {
127
        $indexes = new Indexes();
128
129
        $this->assertEquals(
130
            [
131
                [
132
                    'name' => 'tags',
133
                    'relationship' => 'FlickrTags',
134
                    'field' => 'RawValue',
135
                ],
136
            ],
137
            $indexes->getHasManyFields('flickrphotos')
138
        );
139
    }
140
}
141