Passed
Pull Request — master (#223)
by Nic
02:34
created

LocatorControllerTest::testLocationSearch()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 11
nc 1
nop 0
dl 0
loc 15
rs 9.9
c 0
b 0
f 0
1
<?php
2
3
namespace Dynamic\Locator\Tests\Page;
4
5
use Dynamic\Locator\Model\LocationCategory;
6
use Dynamic\Locator\Page\Locator;
7
use Dynamic\Locator\Page\LocatorController;
8
use SilverStripe\Dev\FunctionalTest;
9
use SilverStripe\Forms\FieldList;
10
use SilverStripe\Forms\Form;
11
use SilverStripe\View\ViewableData;
12
13
/**
14
 * Class LocatorControllerTest
15
 * @package Dynamic\Locator\Tests
16
 */
17
class LocatorControllerTest extends FunctionalTest
18
{
19
20
    /**
21
     * @var string
22
     */
23
    protected static $fixture_file = 'locatorcontrollerfixture.yml';
24
25
    /**
26
     * @var bool
27
     */
28
    protected static $use_draft_site = true;
29
30
    /**
31
     *
32
     */
33
    public function testIndex()
34
    {
35
        $locator = $this->objFromFixture(Locator::class, 'locator1');
36
        $controller = LocatorController::create($locator);
37
        $this->assertInstanceOf(ViewableData::class, $controller->index($controller->getRequest()));
38
    }
39
40
    /**
41
     *
42
     */
43
    public function testXml()
44
    {
45
        /** @var Locator $locator */
46
        $locator = $this->objFromFixture(Locator::class, 'locator1');
47
        $page = $this->get($locator->Link('xml'));
48
49
        $this->assertEquals(200, $page->getStatusCode());
50
        $this->assertEquals('application/xml', $page->getHeader('content-type'));
51
52
        $dom = new \DOMDocument();
53
        // true if it loads, false if it doesn't
54
        $valid = $dom->loadXML($page->getBody());
55
        $this->assertTrue($valid);
56
    }
57
58
    /**
59
     *
60
     */
61
    public function testJson()
62
    {
63
        /** @var Locator $locator */
64
        $locator = $this->objFromFixture(Locator::class, 'locator1');
65
        $page = $this->get($locator->Link('json'));
66
67
        $this->assertEquals(200, $page->getStatusCode());
68
        $this->assertEquals('application/json', $page->getHeader('content-type'));
69
70
        $json = json_decode($page->getBody());
71
        // if it is null its not valid
72
        $this->assertNotNull($json);
73
    }
74
75
    /**
76
     *
77
     */
78
    public function testLocationSearch()
79
    {
80
        $locator = $this->objFromFixture(Locator::class, 'locator1');
81
        $object = LocatorController::create($locator);
82
        $form = $object->LocationSearch();
83
        $this->assertInstanceOf(Form::class, $form);
84
85
        $category = $this->objFromFixture(LocationCategory::class, 'service');
86
        $category2 = $this->objFromFixture(LocationCategory::class, 'manufacturing');
87
        $locator->Categories()->add($category);
88
        $locator->Categories()->add($category2);
89
90
        $form = $object->LocationSearch();
91
        $fields = $form->Fields();
92
        $this->assertInstanceOf(FieldList::class, $fields);
93
    }
94
}
95