Passed
Push — hans/code-cleanup ( ca2456...0eaecc )
by Simon
05:29
created

FieldResolverTest::testGetFieldIntrospection()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 24
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

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