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

testGetFieldIntrospection()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 32
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 20
c 3
b 0
f 0
dl 0
loc 32
rs 9.6
cc 1
nc 1
nop 0
1
<?php
2
3
4
namespace Firesphere\SolrSearch\Tests;
5
6
use CircleCITestIndex;
7
use Firesphere\SolrSearch\Helpers\SearchIntrospection;
8
use Page;
9
use SilverStripe\Admin\ModelAdmin;
10
use SilverStripe\CMS\Model\RedirectorPage;
11
use SilverStripe\CMS\Model\SiteTree;
12
use SilverStripe\CMS\Model\VirtualPage;
13
use SilverStripe\Dev\Debug;
14
use SilverStripe\Dev\SapphireTest;
15
use SilverStripe\ErrorPage\ErrorPage;
16
17
class SearchIntrospectionTest extends SapphireTest
18
{
19
    /**
20
     * @var SearchIntrospection
21
     */
22
    protected $introspection;
23
24
    public function testIsSubclassOf()
25
    {
26
        $this->assertTrue(SearchIntrospection::isSubclassOf(Page::class, [SiteTree::class, Page::class]));
27
        $this->assertFalse(SearchIntrospection::isSubclassOf(ModelAdmin::class, [SiteTree::class, Page::class]));
28
    }
29
30
    public function testHierarchy()
31
    {
32
        // Expected Hierarchy is all pagetypes, including the test ones
33
        $expected = [
34
            SiteTree::class,
35
            Page::class,
36
            TestPage::class,
37
            ErrorPage::class,
38
            RedirectorPage::class,
39
            VirtualPage::class,
40
        ];
41
42
        $test = SearchIntrospection::getHierarchy(Page::class, true, false);
43
        $this->assertEquals($expected, $test);
44
        $test2 = SearchIntrospection::getHierarchy(Page::class, false, true);
45
        $this->assertEquals([SiteTree::class], $test2);
46
        $test3 = SearchIntrospection::getHierarchy(Page::class, false, false);
47
        $this->assertEquals([SiteTree::class, Page::class], $test3);
48
    }
49
50
    public function testGetFieldIntrospection()
51
    {
52
        $index = new CircleCITestIndex();
53
54
        $factory = new SearchIntrospection();
55
        $factory->setIndex($index);
56
        $expected = [
57
            SiteTree::class . '_Content' =>
58
                [
59
                    'name'         => SiteTree::class . '_Content',
60
                    'field'        => 'Content',
61
                    'fullfield'    => 'Content',
62
                    'origin'       => SiteTree::class,
63
                    'class'        => SiteTree::class,
64
                    'lookup_chain' =>
65
                        [
66
                            0 =>
67
                                [
68
                                    'call'     => 'property',
69
                                    'property' => 'Content',
70
                                ],
71
                        ],
72
                    'type'         => 'HTMLText',
73
                    'multi_valued' => false,
74
                ],
75
        ];
76
77
        $result = $factory->getFieldIntrospection('Content');
78
        $this->assertEquals($expected, $result);
79
        $found = $factory->getFound();
80
81
        $this->assertEquals($expected, $found[SiteTree::class . '_Content']);
82
    }
83
84
    protected function setUp()
85
    {
86
        $this->introspection = new SearchIntrospection();
87
        $this->introspection->setIndex(new CircleCITestIndex());
88
89
        return parent::setUp();
90
    }
91
}
92