Completed
Push — master ( 3f5086...28f5b7 )
by mw
02:06
created

callOnSMWElasticStoreFileIndexerChangeFileBeforeIngestProcessComplete()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 19
rs 9.6333
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->callOnApprovedRevsRevisionApproved( $instance );
35
		$this->callOnApprovedRevsFileRevisionApproved( $instance );
36
37
		$this->callOnSMWLinksUpdateApprovedUpdate( $instance );
38
		$this->callOnSMWDataUpdaterSkipUpdate( $instance );
39
		$this->callOnSMWParserChangeRevision( $instance );
40
		$this->callOnSMWFactboxOverrideRevisionID( $instance );
41
		$this->callOnSMWInitProperties( $instance );
42
		$this->callOnSMWStoreUpdateDataBefore( $instance );
43
		$this->callOnSMWConfigBeforeCompletion( $instance );
44
		$this->callOnSMWElasticStoreFileIndexerChangeFileBeforeIngestProcessComplete( $instance );
45
	}
46
47
	public function callOnApprovedRevsRevisionApproved( $instance ) {
48
49
		$handler = 'ApprovedRevsRevisionApproved';
50
51
		$title = $this->getMockBuilder( '\Title' )
52
			->disableOriginalConstructor()
53
			->getMock();
54
55
		$cache = $this->getMockBuilder( '\Onoi\Cache\Cache' )
56
			->disableOriginalConstructor()
57
			->getMock();
58
59
		$cache->expects( $this->once() )
60
			->method( 'save' )
61
			->with( $this->stringContains( 'smw:parseraftertidy' ) );
62
63
		$instance->setCache( $cache );
64
65
		$this->assertTrue(
66
			$instance->isRegistered( $handler )
67
		);
68
69
		$output = '';
70
		$rev_id = 42;
71
		$content = '';
72
73
		$this->assertThatHookIsExcutable(
74
			$instance->getHandlers( $handler ),
75
			[ $output, $title, $rev_id, $content ]
76
		);
77
	}
78
79
	public function callOnApprovedRevsFileRevisionApproved( $instance ) {
80
81
		$handler = 'ApprovedRevsFileRevisionApproved';
82
83
		$title = $this->getMockBuilder( '\Title' )
84
			->disableOriginalConstructor()
85
			->getMock();
86
87
		$cache = $this->getMockBuilder( '\Onoi\Cache\Cache' )
88
			->disableOriginalConstructor()
89
			->getMock();
90
91
		$cache->expects( $this->once() )
92
			->method( 'save' )
93
			->with( $this->stringContains( 'smw:parseraftertidy' ) );
94
95
		$instance->setCache( $cache );
96
97
		$this->assertTrue(
98
			$instance->isRegistered( $handler )
99
		);
100
101
		$parser = '';
102
		$timestamp = 42;
103
		$sha1 = '1001';
104
105
		$this->assertThatHookIsExcutable(
106
			$instance->getHandlers( $handler ),
107
			[ $parser, $title, $timestamp, $sha1 ]
108
		);
109
	}
110
111
	public function callOnSMWLinksUpdateApprovedUpdate( $instance ) {
112
113
		$handler = 'SMW::LinksUpdate::ApprovedUpdate';
114
115
		$title = $this->getMockBuilder( '\Title' )
116
			->disableOriginalConstructor()
117
			->getMock();
118
119
		$this->assertTrue(
120
			$instance->isRegistered( $handler )
121
		);
122
123
		$rev = 0;
124
125
		$this->assertThatHookIsExcutable(
126
			$instance->getHandlers( $handler ),
127
			[ $title, $rev ]
128
		);
129
	}
130
131
	public function callOnSMWDataUpdaterSkipUpdate( $instance ) {
132
133
		$handler = 'SMW::DataUpdater::SkipUpdate';
134
135
		$title = $this->getMockBuilder( '\Title' )
136
			->disableOriginalConstructor()
137
			->getMock();
138
139
		$this->assertTrue(
140
			$instance->isRegistered( $handler )
141
		);
142
143
		$rev = 0;
144
145
		$this->assertThatHookIsExcutable(
146
			$instance->getHandlers( $handler ),
147
			[ $title, $rev ]
148
		);
149
	}
150
151
	public function callOnSMWParserChangeRevision( $instance ) {
152
153
		$handler = 'SMW::Parser::ChangeRevision';
154
155
		$title = $this->getMockBuilder( '\Title' )
156
			->disableOriginalConstructor()
157
			->getMock();
158
159
		$this->assertTrue(
160
			$instance->isRegistered( $handler )
161
		);
162
163
		$revision = null;
164
165
		$this->assertThatHookIsExcutable(
166
			$instance->getHandlers( $handler ),
167
			[ $title, &$revision ]
168
		);
169
	}
170
171
	public function callOnSMWFactboxOverrideRevisionID( $instance ) {
172
173
		$handler = 'SMW::Factbox::OverrideRevisionID';
174
175
		$title = $this->getMockBuilder( '\Title' )
176
			->disableOriginalConstructor()
177
			->getMock();
178
179
		$this->assertTrue(
180
			$instance->isRegistered( $handler )
181
		);
182
183
		$latestRevID = 0;
184
185
		$this->assertThatHookIsExcutable(
186
			$instance->getHandlers( $handler ),
187
			[ $title, &$latestRevID ]
188
		);
189
	}
190
191
	public function callOnSMWInitProperties( $instance ) {
192
193
		$handler = 'SMW::Property::initProperties';
194
195
		$propertyRegistry = $this->getMockBuilder( '\SMW\PropertyRegistry' )
196
			->disableOriginalConstructor()
197
			->getMock();
198
199
		$this->assertTrue(
200
			$instance->isRegistered( $handler )
201
		);
202
203
		$this->assertThatHookIsExcutable(
204
			$instance->getHandlers( $handler ),
205
			[ $propertyRegistry ]
206
		);
207
	}
208
209
	public function callOnSMWStoreUpdateDataBefore( $instance ) {
210
211
		$handler = 'SMWStore::updateDataBefore';
212
213
		$store = $this->getMockBuilder( '\SMW\Store' )
214
			->disableOriginalConstructor()
215
			->getMockForAbstractClass();
216
217
		$semanticData = $this->getMockBuilder( '\SMW\SemanticData' )
218
			->disableOriginalConstructor()
219
			->getMock();
220
221
		$this->assertTrue(
222
			$instance->isRegistered( $handler )
223
		);
224
225
		$this->assertThatHookIsExcutable(
226
			$instance->getHandlers( $handler ),
227
			[ $store, $semanticData ]
228
		);
229
	}
230
231
	public function callOnSMWConfigBeforeCompletion( $instance ) {
232
233
		$handler = 'SMW::Config::BeforeCompletion';
234
235
		$this->assertTrue(
236
			$instance->isRegistered( $handler )
237
		);
238
239
		$config = [
240
			'smwgImportFileDirs' => []
241
		];
242
243
		$this->assertThatHookIsExcutable(
244
			$instance->getHandlers( $handler ),
245
			[ &$config ]
246
		);
247
248
		$this->assertArrayHasKey(
249
			'sar',
250
			$config['smwgImportFileDirs']
251
		);
252
	}
253
254
	public function callOnSMWElasticStoreFileIndexerChangeFileBeforeIngestProcessComplete( $instance ) {
255
256
		$handler = 'SMW::ElasticStore::FileIndexer::ChangeFileBeforeIngestProcessComplete';
257
258
		$this->assertTrue(
259
			$instance->isRegistered( $handler )
260
		);
261
262
		$title = $this->getMockBuilder( '\Title' )
263
			->disableOriginalConstructor()
264
			->getMock();
265
266
		$file = null;
267
268
		$this->assertThatHookIsExcutable(
269
			$instance->getHandlers( $handler ),
270
			[ $title, &$file ]
271
		);
272
	}
273
274
	private function assertThatHookIsExcutable( $hooks, $arguments ) {
275
276
		if ( is_callable( $hooks ) ) {
277
			$hooks = [ $hooks ];
278
		}
279
280
		foreach ( $hooks as $hook ) {
281
282
			$this->assertInternalType(
283
				'boolean',
284
				call_user_func_array( $hook, $arguments )
285
			);
286
		}
287
	}
288
289
}
290