Completed
Push — master ( bc2207...6c16a9 )
by mw
02:41
created

HooksTest::callOnSMWInitProperties()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 17
rs 9.7
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace SMW\ApprovedRevs\Tests;
4
5
use SMW\ApprovedRevs\Hooks;
6
7
/**
8
 * @covers \SMW\ApprovedRevs\Hooks
9
 * @group semantic-approved-revs
10
 *
11
 * @license GNU GPL v2+
12
 * @since 1.0
13
 *
14
 * @author mwjames
15
 */
16
class HooksTest extends \PHPUnit_Framework_TestCase {
17
18
	public function testCanConstruct() {
19
20
		$config =  [];
0 ignored issues
show
Unused Code introduced by
$config is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
21
22
		$this->assertInstanceOf(
23
			Hooks::class,
24
			new Hooks()
25
		);
26
	}
27
28
	public function testRegister() {
29
30
		$instance = new Hooks();
31
		$instance->deregister();
32
		$instance->register();
33
34
		$this->callOnSMWLinksUpdateApprovedUpdate( $instance );
35
		$this->callOnSMWDataUpdaterSkipUpdate( $instance );
36
		$this->callOnSMWParserChangeRevision( $instance );
37
		$this->callOnSMWFactboxOverrideRevisionID( $instance );
38
		$this->callOnSMWInitProperties( $instance );
39
		$this->callOnSMWStoreUpdateDataBefore( $instance );
40
	}
41
42
	public function callOnSMWLinksUpdateApprovedUpdate( $instance ) {
43
44
		$handler = 'SMW::LinksUpdate::ApprovedUpdate';
45
46
		$title = $this->getMockBuilder( '\Title' )
47
			->disableOriginalConstructor()
48
			->getMock();
49
50
		$this->assertTrue(
51
			$instance->isRegistered( $handler )
52
		);
53
54
		$rev = 0;
55
56
		$this->assertThatHookIsExcutable(
57
			$instance->getHandlers( $handler ),
58
			[ $title, $rev ]
59
		);
60
	}
61
62
	public function callOnSMWDataUpdaterSkipUpdate( $instance ) {
63
64
		$handler = 'SMW::DataUpdater::SkipUpdate';
65
66
		$title = $this->getMockBuilder( '\Title' )
67
			->disableOriginalConstructor()
68
			->getMock();
69
70
		$this->assertTrue(
71
			$instance->isRegistered( $handler )
72
		);
73
74
		$rev = 0;
75
76
		$this->assertThatHookIsExcutable(
77
			$instance->getHandlers( $handler ),
78
			[ $title, $rev ]
79
		);
80
	}
81
82
	public function callOnSMWParserChangeRevision( $instance ) {
83
84
		$handler = 'SMW::Parser::ChangeRevision';
85
86
		$title = $this->getMockBuilder( '\Title' )
87
			->disableOriginalConstructor()
88
			->getMock();
89
90
		$this->assertTrue(
91
			$instance->isRegistered( $handler )
92
		);
93
94
		$revision = null;
95
96
		$this->assertThatHookIsExcutable(
97
			$instance->getHandlers( $handler ),
98
			[ $title, &$revision ]
99
		);
100
	}
101
102
	public function callOnSMWFactboxOverrideRevisionID( $instance ) {
103
104
		$handler = 'SMW::Factbox::OverrideRevisionID';
105
106
		$title = $this->getMockBuilder( '\Title' )
107
			->disableOriginalConstructor()
108
			->getMock();
109
110
		$this->assertTrue(
111
			$instance->isRegistered( $handler )
112
		);
113
114
		$latestRevID = 0;
115
116
		$this->assertThatHookIsExcutable(
117
			$instance->getHandlers( $handler ),
118
			[ $title, &$latestRevID ]
119
		);
120
	}
121
122
	public function callOnSMWInitProperties( $instance ) {
123
124
		$handler = 'SMW::Property::initProperties';
125
126
		$propertyRegistry = $this->getMockBuilder( '\SMW\PropertyRegistry' )
127
			->disableOriginalConstructor()
128
			->getMock();
129
130
		$this->assertTrue(
131
			$instance->isRegistered( $handler )
132
		);
133
134
		$this->assertThatHookIsExcutable(
135
			$instance->getHandlers( $handler ),
136
			[ $propertyRegistry ]
137
		);
138
	}
139
140
	public function callOnSMWStoreUpdateDataBefore( $instance ) {
141
142
		$handler = 'SMWStore::updateDataBefore';
143
144
		$store = $this->getMockBuilder( '\SMW\Store' )
145
			->disableOriginalConstructor()
146
			->getMockForAbstractClass();
147
148
		$semanticData = $this->getMockBuilder( '\SMW\SemanticData' )
149
			->disableOriginalConstructor()
150
			->getMock();
151
152
		$this->assertTrue(
153
			$instance->isRegistered( $handler )
154
		);
155
156
		$this->assertThatHookIsExcutable(
157
			$instance->getHandlers( $handler ),
158
			[ $store, $semanticData ]
159
		);
160
	}
161
162
	private function assertThatHookIsExcutable( $hooks, $arguments ) {
163
164
		if ( is_callable( $hooks ) ) {
165
			$hooks = [ $hooks ];
166
		}
167
168
		foreach ( $hooks as $hook ) {
169
170
			$this->assertInternalType(
171
				'boolean',
172
				call_user_func_array( $hook, $arguments )
173
			);
174
		}
175
	}
176
177
}
178