Completed
Push — master ( 934849...10255c )
by Daryl
01:34
created

TestCase::setReflectionPropertyValue()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
rs 9.4285
cc 1
eloc 4
nc 1
nop 3
1
<?php
2
3
namespace Clubdeuce\WPLib\Components\GoogleMaps\Tests;
4
use Mockery\Mock;
5
6
/**
7
 * Class TestCase
8
 * @package Clubdeuce\WPLib\Components\GoogleMaps\Tests
9
 */
10
class TestCase extends \WP_UnitTestCase {
11
12
    /**
13
     * @param $class
14
     * @param $property
15
     * @return mixed
16
     */
17
    public function getReflectionPropertyValue( $class, $property )
18
    {
19
        $reflection = new \ReflectionProperty( $class, $property );
20
        $reflection->setAccessible( true );
21
        return $reflection->getValue( $class );
22
    }
23
24
    /**
25
     * @param $class
26
     * @param $property
27
     * @param $value
28
     */
29
    public function setReflectionPropertyValue( $class, $property, $value )
30
    {
31
        $reflection = new \ReflectionProperty( $class, $property );
32
        $reflection->setAccessible( true );
33
        return $reflection->setValue( $class, $value );
34
    }
35
36
    /**
37
     * @param $class
38
     * @param $method
39
     * @return mixed
40
     */
41 View Code Duplication
    public function reflectionMethodInvoke( $class, $method )
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
42
    {
43
        $reflection = new \ReflectionMethod( $class, $method );
44
        $reflection->setAccessible( true );
45
        if (is_string($class)) {
46
            $class = null;
0 ignored issues
show
Coding Style introduced by
Consider using a different name than the parameter $class. This often makes code more readable.
Loading history...
47
        }
48
        return $reflection->invoke( $class );
49
    }
50
51
    /**
52
     * @param $class
53
     * @param $method
54
     * @param $args
55
     * @return mixed
56
     */
57 View Code Duplication
    public function reflectionMethodInvokeArgs( $class, $method, $args )
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
58
    {
59
        $reflection = new \ReflectionMethod( $class, $method );
60
        $reflection->setAccessible( true );
61
        if (is_string($class)) {
62
            $class = null;
0 ignored issues
show
Coding Style introduced by
Consider using a different name than the parameter $class. This often makes code more readable.
Loading history...
63
        }
64
        return $reflection->invoke( $class, $args );
65
    }
66
67
	/**
68
	 * @return string
69
	 */
70
    protected function get_sample_response() {
71
72
    	return file_get_contents( __DIR__ . '/geocoder-response.json' );
73
74
    }
75
76
	/**
77
	 * @return Mock
78
	 */
79
    protected function getMockGeocoder() {
80
81
	    /**
82
	     * @var Mock $geocoder
83
	     */
84
    	$geocoder = \Mockery::mock('\Clubdeuce\WPLib\Components\GoogleMaps\Geocoder');
85
	    $geocoder->shouldReceive('geocode')->andReturn($this->getMockLocation());
86
87
	    return $geocoder;
88
    }
89
90
	/**
91
	 * @return Mock
92
	 */
93
    protected function getMockLocation() {
94
	    /**
95
	     * @var Mock $location
96
	     */
97
    	$location = \Mockery::mock('\Clubdeuce\WPLib\Components\GoogleMape\Location');
98
	    $location->shouldReceive('address')->andReturn('1600 Amphitheatre Parkway, Mountain View, CA 94043, USA');
99
	    $location->shouldReceive('formatted_address')->andReturn('1600 Amphitheatre Parkway, Mountain View, CA 94043, USA');
100
	    $location->shouldReceive('state')->andReturn('CA');
101
	    $location->shouldReceive('zip_code')->andReturn('94043');
102
	    $location->shouldReceive('latitude')->andReturn(37.4224764);
103
	    $location->shouldReceive('longitude')->andReturn(-122.0842499);
104
	    $location->shouldReceive('place_id')->andReturn('ChIJ2eUgeAK6j4ARbn5u_wAGqWA');
105
	    $location->shouldReceive('type')->andReturn('street_address');
106
	    $location->shouldReceive('viewport')->andReturn(array(
107
	    	'northeast' => array(
108
			    'lat'   => 37.4238253802915,
109
			    'lng'   => -122.0829009197085
110
		    ),
111
		    'sourhwest' => array(
112
			    'lat'   => 37.4211274197085,
113
                'lng'   => -122.0855988802915
114
		    )
115
	    ));
116
117
	    return $location;
118
    }
119
}