Completed
Push — master ( 0e0e3a...a2bd2c )
by Simon
01:31
created

GoogleMapsFieldTest::testGetSetExtraFields()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 27
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 27
rs 8.8571
cc 1
eloc 18
nc 1
nop 0
1
<?php
2
3
namespace Firesphere\GoogleMapsField\Tests;
4
5
use Firesphere\GoogleMapsField\Forms\GoogleMapsField;
6
use SilverStripe\Core\Convert;
7
use SilverStripe\Dev\SapphireTest;
8
use SilverStripe\SiteConfig\SiteConfig;
9
use SilverStripe\View\Requirements;
10
11
class GoogleMapsFieldTest extends SapphireTest
12
{
13
    public function testConstruct()
14
    {
15
        $field = GoogleMapsField::create('TestField');
16
17
        $attr = $field->getAttribute('data-mapsfield');
18
19
        $this->assertEquals('mapsfield', $attr);
20
    }
21
22
    public function testField()
23
    {
24
        /** @var GoogleMapsField $field */
25
        $field = GoogleMapsField::create('TestField');
26
27
        $field->Field([]);
28
29
        $config = SiteConfig::current_site_config();
30
31
        $requiredJs = Requirements::backend()->getJavascript();
32
33
        $this->assertArrayHasKey(
34
            'https://maps.googleapis.com/maps/api/js?key=' . $config->MapsBrowserKey . '&libraries=places',
35
            $requiredJs
36
        );
37
    }
38
39
    public function testCustomOptions()
40
    {
41
        /** @var GoogleMapsField $field */
42
        $field = GoogleMapsField::create('Test', 'Test');
43
44
        $field->setCustomOptions(['option' => 'option1']);
45
46
        $this->assertEquals(Convert::array2json(['option' => 'option1']), $field->getCustomOptions());
47
    }
48
49
    public function testGetHiddenFields()
50
    {
51
        $field = GoogleMapsField::create('Test');
52
53
        $fields = '<input type="hidden" name="GoogleMapsLatField" class="hidden" id="GoogleMapsLatField" /><input type="hidden" name="GoogleMapsLngField" class="hidden" id="GoogleMapsLngField" /><input type="hidden" name="subpremise" class="hidden" id="subpremise" /><input type="hidden" name="street_number" class="hidden" id="street_number" /><input type="hidden" name="route" class="hidden" id="route" /><input type="hidden" name="sublocality_level_1" class="hidden" id="sublocality_level_1" /><input type="hidden" name="locality" class="hidden" id="locality" /><input type="hidden" name="administrative_area_level_1" class="hidden" id="administrative_area_level_1" /><input type="hidden" name="country" class="hidden" id="country" /><input type="hidden" name="postal_code" class="hidden" id="postal_code" />';
54
55
        $this->assertEquals($fields, $field->getHiddenFields());
56
    }
57
58
    public function testGetSetExtraFields()
59
    {
60
        $field = GoogleMapsField::create('Test');
61
62
        $extraFields = $field->getExtraFields();
63
64
        $expected = [
65
            'GoogleMapsLatField',
66
            'GoogleMapsLngField',
67
            'subpremise',
68
            'street_number',
69
            'route',
70
            'sublocality_level_1',
71
            'locality',
72
            'administrative_area_level_1',
73
            'country',
74
            'postal_code'
75
        ];
76
77
        $this->assertEquals($expected, $extraFields);
78
79
        $field->setExtraFields(['GoogleMapsLatField', 'GoogleMapsLngField']);
80
81
        $extraFields = $field->getExtraFields();
82
83
        $this->assertEquals(['GoogleMapsLatField', 'GoogleMapsLngField'], $extraFields);
84
    }
85
86
    public function testAddExtraFields()
87
    {
88
        $field = GoogleMapsField::create('Test');
89
90
        $extraFields = $field->getExtraFields();
91
92
        $expected = [
93
            'GoogleMapsLatField',
94
            'GoogleMapsLngField',
95
            'subpremise',
96
            'street_number',
97
            'route',
98
            'sublocality_level_1',
99
            'locality',
100
            'administrative_area_level_1',
101
            'country',
102
            'postal_code'
103
        ];
104
105
        $this->assertEquals($expected, $extraFields);
106
107
        $field->addExtraField('premise');
108
109
        $extraFields = $field->getExtraFields();
110
111
        $this->assertEquals(array_merge($expected, ['premise']), $extraFields);
112
    }
113
}
114