GoogleMapsFieldTest   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 113
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 6
c 3
b 0
f 0
lcom 1
cbo 6
dl 0
loc 113
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A testConstruct() 0 8 1
A testField() 0 16 1
A testCustomOptions() 0 9 1
A testGetHiddenFields() 0 18 1
B testGetSetExtraFields() 0 27 1
B testAddExtraFields() 0 27 1
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" />'
54
            . '<input type="hidden" name="GoogleMapsLngField" class="hidden" id="GoogleMapsLngField" />'
55
            . '<input type="hidden" name="subpremise" class="hidden" id="subpremise" />'
56
            . '<input type="hidden" name="street_number" class="hidden" id="street_number" />'
57
            . '<input type="hidden" name="route" class="hidden" id="route" />'
58
            . '<input type="hidden" name="sublocality_level_1" class="hidden" id="sublocality_level_1" />'
59
            . '<input type="hidden" name="locality" class="hidden" id="locality" />'
60
            . '<input type="hidden" name="administrative_area_level_1" class="hidden"'
61
            . ' id="administrative_area_level_1" />'
62
            . '<input type="hidden" name="country" class="hidden" id="country" />'
63
            . '<input type="hidden" name="postal_code" class="hidden" id="postal_code" />';
64
65
        $this->assertEquals($fields, $field->getHiddenFields());
66
    }
67
68
    public function testGetSetExtraFields()
69
    {
70
        $field = GoogleMapsField::create('Test');
71
72
        $extraFields = $field->getExtraFields();
73
74
        $expected = [
75
            'GoogleMapsLatField',
76
            'GoogleMapsLngField',
77
            'subpremise',
78
            'street_number',
79
            'route',
80
            'sublocality_level_1',
81
            'locality',
82
            'administrative_area_level_1',
83
            'country',
84
            'postal_code'
85
        ];
86
87
        $this->assertEquals($expected, $extraFields);
88
89
        $field->setExtraFields(['GoogleMapsLatField', 'GoogleMapsLngField']);
90
91
        $extraFields = $field->getExtraFields();
92
93
        $this->assertEquals(['GoogleMapsLatField', 'GoogleMapsLngField'], $extraFields);
94
    }
95
96
    public function testAddExtraFields()
97
    {
98
        $field = GoogleMapsField::create('Test');
99
100
        $extraFields = $field->getExtraFields();
101
102
        $expected = [
103
            'GoogleMapsLatField',
104
            'GoogleMapsLngField',
105
            'subpremise',
106
            'street_number',
107
            'route',
108
            'sublocality_level_1',
109
            'locality',
110
            'administrative_area_level_1',
111
            'country',
112
            'postal_code'
113
        ];
114
115
        $this->assertEquals($expected, $extraFields);
116
117
        $field->addExtraField('premise');
118
119
        $extraFields = $field->getExtraFields();
120
121
        $this->assertEquals(array_merge($expected, ['premise']), $extraFields);
122
    }
123
}
124