Passed
Pull Request — master (#136)
by None
04:09
created

ResourceIdentifierStringValueParserTest::typeToValueProvider()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 214

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 214
rs 8
c 0
b 0
f 0
cc 1
nc 1
nop 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace SCI\Tests\DataValues;
4
5
use SCI\DataValues\ResourceIdentifierStringValueParser;
6
7
/**
8
 * @covers \SCI\DataValues\ResourceIdentifierStringValueParser
9
 * @group semantic-cite
10
 *
11
 * @license GNU GPL v2+
12
 * @since 1.0
13
 *
14
 * @author mwjames
15
 */
16
class ResourceIdentifierStringValueParserTest extends \PHPUnit_Framework_TestCase {
17
18
	/**
19
	 * @dataProvider typeProvider
20
	 */
21
	public function testCanConstruct( $type ) {
22
23
		$this->assertInstanceOf(
24
			'\SCI\DataValues\ResourceIdentifierStringValueParser',
25
			new ResourceIdentifierStringValueParser( $type )
26
		);
27
	}
28
29
	/**
30
	 * @dataProvider typeToValueProvider
31
	 */
32
	public function testSetUserValue( $type, $value, $expected ) {
33
34
		$instance = new ResourceIdentifierStringValueParser( $type );
35
36
		$this->assertEquals(
37
			$expected,
38
			$instance->parse( $value )
39
		);
40
	}
41
42
	/**
43
	 * @dataProvider typeToUriProvider
44
	 */
45
	public function testGetResourceTargetUri( $type, $expected ) {
46
47
		$instance = new ResourceIdentifierStringValueParser( $type );
48
49
		$this->assertEquals(
50
			$expected,
51
			$instance->getResourceTargetUri()
52
		);
53
	}
54
55
	public function typeProvider() {
56
57
		$provider[] = [
58
			'_sci_doi',
59
			'DOI'
60
		];
61
62
		$provider[] = [
63
			'_sci_viaf',
64
			'VIAF'
65
		];
66
67
		$provider[] = [
68
			'_sci_oclc',
69
			'OCLC'
70
		];
71
72
		$provider[] = [
73
			'_sci_olid',
74
			'OLID'
75
		];
76
77
		$provider[] = [
78
			'_sci_pmcid',
79
			'PMCID'
80
		];
81
82
		$provider[] = [
83
			'_sci_pmid',
84
			'PMID'
85
		];
86
87
		return $provider;
88
	}
89
90
	public function typeToValueProvider() {
91
92
		// DOI
93
94
		$provider[] = [
95
			'_sci_doi',
96
			'foo',
97
			false,
98
		];
99
100
		$provider[] = [
101
			'_sci_doi',
102
			'10.1000.123456',
103
			false
104
		];
105
106
		$provider[] = [
107
			'_sci_doi',
108
			'10.1000/123456',
109
			true
110
		];
111
112
		$provider[] = [
113
			'_sci_doi',
114
			'10.1016.12.31/nature.S0735-1097(98)2000/12/31/34:7-7',
115
			true
116
		];
117
118
		$provider[] = [
119
			'_sci_doi',
120
			'10.1007/978-3-642-28108-2_19',
121
			true
122
		];
123
124
		$provider[] = [
125
			'_sci_doi',
126
			'10.1007.10/978-3-642-28108-2_19',
127
			true
128
		];
129
130
		$provider[] = [
131
			'_sci_doi',
132
			'10.1016/S0735-1097(98)00347-7',
133
			true
134
		];
135
136
		$provider[] = [
137
			'_sci_doi',
138
			'10.1579/0044-7447(2006)35\[89:RDUICP\]2.0.CO;2',
139
			true
140
		];
141
142
		$provider[] = [
143
			'_sci_doi',
144
			'10.1038/ejcn.2010.73',
145
			true
146
		];
147
148
		$provider[] = [
149
			'_sci_doi',
150
			'http://dx.doi.org/10.1074/jbc.M114.559054',
151
			true
152
		];
153
154
		$provider[] = [
155
			'_sci_doi',
156
			'https://doi.org/10.1074/jbc.M114.559054',
157
			true
158
		];
159
160
		// PMC
161
162
		$provider[] = [
163
			'_sci_pmcid',
164
			'foo',
165
			false,
166
		];
167
168
		$provider[] = [
169
			'_sci_pmcid',
170
			'PM123456',
171
			false
172
		];
173
174
		$provider[] = [
175
			'_sci_pmcid',
176
			'PMCID123456',
177
			false
178
		];
179
180
		$provider[] = [
181
			'_sci_pmcid',
182
			'PMC123456',
183
			true
184
		];
185
186
		// VIAF
187
188
		$provider[] = [
189
			'_sci_viaf',
190
			'foo',
191
			false,
192
		];
193
194
		$provider[] = [
195
			'_sci_viaf',
196
			'123456',
197
			true
198
		];
199
200
		$provider[] = [
201
			'_sci_viaf',
202
			'vIAf123456',
203
			true
204
		];
205
206
		$provider[] = [
207
			'_sci_viaf',
208
			'https://viaf.org/viaf/vIAf123456',
209
			true
210
		];
211
212
		// OCLC
213
214
		$provider[] = [
215
			'_sci_oclc',
216
			'foo',
217
			false,
218
		];
219
220
		$provider[] = [
221
			'_sci_oclc',
222
			'123456',
223
			true
224
		];
225
226
		$provider[] = [
227
			'_sci_oclc',
228
			'oClc123456',
229
			true
230
		];
231
232
		$provider[] = [
233
			'_sci_oclc',
234
			'https://www.worldcat.org/oclc/oClc123456',
235
			true
236
		];
237
238
		// PMID
239
240
		$provider[] = [
241
			'_sci_pmid',
242
			'foo',
243
			false,
244
		];
245
246
		$provider[] = [
247
			'_sci_pmid',
248
			'123456',
249
			true
250
		];
251
252
		$provider[] = [
253
			'_sci_pmid',
254
			'pMId123456',
255
			true
256
		];
257
258
		$provider[] = [
259
			'_sci_pmid',
260
			'https://www.ncbi.nlm.nih.gov/pubmed/pMId123456',
261
			true
262
		];
263
264
		// OLID
265
266
		$provider[] = [
267
			'_sci_olid',
268
			'foo',
269
			false,
270
		];
271
272
		$provider[] = [
273
			'_sci_olid',
274
			'123456',
275
			false
276
		];
277
278
		$provider[] = [
279
			'_sci_olid',
280
			'123456A',
281
			false
282
		];
283
284
		$provider[] = [
285
			'_sci_olid',
286
			'OL123456',
287
			true
288
		];
289
290
		$provider[] = [
291
			'_sci_olid',
292
			'OL123456M',
293
			true
294
		];
295
296
		$provider[] = [
297
			'_sci_olid',
298
			'https://openlibrary.org/books/OL123456M',
299
			true
300
		];
301
302
		return $provider;
303
	}
304
305
	public function typeToUriProvider() {
306
307
		$provider[] = [
308
			'_sci_doi',
309
			'https://doi.org/'
310
		];
311
312
		$provider[] = [
313
			'_sci_viaf',
314
			'https://viaf.org/viaf/'
315
		];
316
317
		$provider[] = [
318
			'_sci_oclc',
319
			'https://www.worldcat.org/oclc/'
320
		];
321
322
		$provider[] = [
323
			'_sci_olid',
324
			'https://openlibrary.org/books/'
325
		];
326
327
		$provider[] = [
328
			'_sci_pmcid',
329
			'https://www.ncbi.nlm.nih.gov/pmc/'
330
		];
331
332
		$provider[] = [
333
			'_sci_pmid',
334
			'https://www.ncbi.nlm.nih.gov/pubmed/'
335
		];
336
337
		return $provider;
338
	}
339
340
}
341