Completed
Push — fix/15025-map-block-infinite-s... ( 9a8b21...52d6c3 )
by
unknown
63:16 queued 56:01
created

Options::build_mock_options()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 1
nop 0
dl 0
loc 26
rs 9.504
c 0
b 0
f 0
1
<?php
2
/**
3
 * The trait allows the "options" mock functions to be reused.
4
 *
5
 * @package automattic/jetpack-connection
6
 */
7
8
namespace Automattic\Jetpack\Connection\Test\Mock;
9
10
use Automattic\Jetpack\Connection;
11
use phpmock\Mock;
12
use phpmock\MockBuilder;
13
14
trait Options {
15
16
	/**
17
	 * Mock for the `update_option()` function.
18
	 *
19
	 * @var Mock
20
	 */
21
	private $update_option;
22
23
	/**
24
	 * Mock for the `get_option()` function.
25
	 *
26
	 * @var Mock
27
	 */
28
	private $get_option;
29
30
	/**
31
	 * Storage for the mock options.
32
	 *
33
	 * @var array
34
	 */
35
	private $mock_options = array();
36
37
	/**
38
	 * Build mocks for the "options" functionality.
39
	 */
40
	private function build_mock_options() {
41
		$this->mock_options = array();
42
43
		$builder = new MockBuilder();
44
		$builder->setNamespace( Connection::class )
45
			->setName( 'update_option' )
46
			->setFunction(
47
				// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
48
				function ( $option, $value, $autoload = null ) {
49
					$this->mock_options[ $option ] = $value;
50
51
					return true;
52
				}
53
			);
54
		$this->update_option = $builder->build();
55
56
		$builder = new MockBuilder();
57
		$builder->setNamespace( Connection::class )
58
			->setName( 'get_option' )
59
			->setFunction(
60
				function ( $option, $default = false ) {
61
					return array_key_exists( $option, $this->mock_options ) ? $this->mock_options[ $option ] : $default;
62
				}
63
			);
64
		$this->get_option = $builder->build();
65
	}
66
67
}
68