Completed
Push — master ( b0210e...94c755 )
by Matthew
04:42
created

LocatorControllerExtensionTest::testCustomScript()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 0
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
1
<?php
2
3
namespace Dynamic\Locator\React\Tests\Extensions;
4
5
use Dynamic\Locator\Location;
6
use Dynamic\Locator\Locator;
7
use Dynamic\Locator\LocatorController;
8
use Dynamic\SilverStripeGeocoder\GoogleGeocoder;
9
use SilverStripe\Core\Config\Config;
10
use SilverStripe\Core\Injector\Injector;
11
use SilverStripe\Dev\SapphireTest;
12
use SilverStripe\View\Requirements;
13
14
/**
15
 * Class LocatorControllerExtensionTest
16
 */
17
class LocatorControllerExtensionTest extends SapphireTest
18
{
19
20
    protected static $fixture_file = '../fixtures.yml';
21
22
    /**
23
     *
24
     */
25
    public function testInit()
26
    {
27
        Config::modify()->set(GoogleGeocoder::class, 'geocoder_api_key', 'YYYY');
28
29
        $locator = Locator::create();
30
        $locator->Autocomplete = true;
31
        $controller = LocatorController::create($locator);
32
        $controller->doInit();
33
34
        $requirements = Requirements::backend()->getJavascript();
35
        $blocked = Requirements::backend()->getBlocked();
36
        $this->assertArrayHasKey('https://maps.google.com/maps/api/js?key=YYYY', $blocked);
37
        $this->assertArrayHasKey('https://maps.google.com/maps/api/js?key=YYYY&libraries=places', $requirements);
38
    }
39
40
    /**
41
     *
42
     */
43
    public function testCustomScript()
44
    {
45
        $requirements = Requirements::get_custom_scripts();
46
        $this->assertArrayNotHasKey('react-locator', $requirements);
47
48
        $controller = LocatorController::create(Locator::create());
49
        $controller->customScript();
50
        $requirements = Requirements::get_custom_scripts();
51
        $this->assertArrayHasKey('react-locator', $requirements);
52
    }
53
54
    /**
55
     * Tests categoriesString()
56
     */
57
    public function testCategoriesString()
58
    {
59
        /** @var Locator $locator */
60
        $locator = Injector::inst()->create(Locator::class);
61
        /** @var LocatorController $controller */
62
        $controller = LocatorController::create($locator);
0 ignored issues
show
Bug introduced by
$locator of type Dynamic\Locator\Locator is incompatible with the type array expected by parameter $args of SilverStripe\View\ViewableData::create(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

62
        $controller = LocatorController::create(/** @scrutinizer ignore-type */ $locator);
Loading history...
63
64
        $string = $controller->categoriesString($locator->Categories());
65
        $this->assertEquals('[]', $string);
66
67
        /** @var Locator $locator */
68
        $locator = $this->objFromFixture(Locator::class, 'locator1');
69
        // load locations
70
        $this->objFromFixture(Location::class, 'dynamic');
71
        $this->objFromFixture(Location::class, 'silverstripe');
72
        $this->objFromFixture(Location::class, '3sheeps');
73
        $this->objFromFixture(Location::class, 'Lambeau');
74
        // redo controller
75
        $controller = LocatorController::create($locator);
76
77
        $string = $controller->categoriesString($locator->Categories());
78
        $this->assertEquals("[{
79
                'ID': 1,
80
                'Name': 'Service'
81
            },{
82
                'ID': 4,
83
                'Name': 'Technology'
84
            }]", $string);
85
    }
86
}
87