StatementGuidValidatorTest   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 103
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 10
lcom 1
cbo 3
dl 0
loc 103
rs 10
c 0
b 0
f 0

10 Methods

Rating   Name   Duplication   Size   Complexity  
A newStatementGuidValidator() 0 3 1
A testValidate() 0 6 1
A validateProvider() 0 10 1
A testValidateInvalid() 0 6 1
A validateInvalidProvider() 0 18 1
A testValidateFormat() 0 6 1
A testInvalidFormat() 0 6 1
A invalidFormatProvider() 0 7 1
A testValidateInvalidPrefixedId() 0 7 1
A validateInvalidPrefixedIdProvider() 0 6 1
1
<?php
2
3
namespace Wikibase\DataModel\Services\Tests\Statement;
4
5
use PHPUnit\Framework\TestCase;
6
use Wikibase\DataModel\Entity\ItemIdParser;
7
use Wikibase\DataModel\Services\Statement\StatementGuidValidator;
8
9
/**
10
 * @covers \Wikibase\DataModel\Services\Statement\StatementGuidValidator
11
 *
12
 * @license GPL-2.0-or-later
13
 * @author Katie Filbert < [email protected] >
14
 */
15
class StatementGuidValidatorTest extends TestCase {
16
17
	private function newStatementGuidValidator() {
18
		return new StatementGuidValidator( new ItemIdParser() );
19
	}
20
21
	/**
22
	 * @dataProvider validateProvider
23
	 */
24
	public function testValidate( $guid ) {
25
		$validator = $this->newStatementGuidValidator();
26
		$isValid = $validator->validate( $guid );
27
28
		$this->assertTrue( $isValid, "Assert that statement guid $guid is valid" );
29
	}
30
31
	public function validateProvider() {
32
		return [
33
			[ 'q60$5083E43C-228B-4E3E-B82A-4CB20A22A3FB' ],
34
			[ 'q604192$5672A3B1-7693-4DF9-ADE8-8FC13E095604' ],
35
			[ 'q37$a212184b-434c-7e90-dd26-29eda5ee2580' ],
36
			[ 'Q60$5083E43C-228B-4E3E-B82A-4CB20A22A3FA' ],
37
			[ 'Q604192$5672A3B1-7693-4DF9-ADE8-8FC13E095603' ],
38
			[ 'Q37$a212184b-434c-7e90-dd26-29eda5ee2581' ]
39
		];
40
	}
41
42
	/**
43
	 * @dataProvider validateInvalidProvider
44
	 */
45
	public function testValidateInvalid( $guid ) {
46
		$validator = $this->newStatementGuidValidator();
47
		$isValid = $validator->validate( $guid );
48
49
		$this->assertFalse( $isValid, "Assert that statement guid $guid is invalid" );
50
	}
51
52
	public function validateInvalidProvider() {
53
		return [
54
			[ "Q1$00000000-0000-0000-0000-000000000000\n" ],
55
			[ 'q60$5083E43C-228B-4E3E-B82A-4CB20A22A3F' ],
56
			[ 'q60$5083E43C-228B-4E3E-B82A-$4CB20A22A3FB' ],
57
			[ '$q60$5083E43C-228B-4E3E-B82A-4CB20A22A3FB' ],
58
			[ '5083E43C-228B-4E3E-B82A-4CB20A22A3FB' ],
59
			[ 9000 ],
60
			[ 'q604192$56723B1-7693-4DF9-ADE8-8FC13E095604' ],
61
			[ 'q604192$5672w3B1-693-4DF9-ADE8-8FC13E095604' ],
62
			[ 'q604192$5672w3B1-6935-4F9-ADE8-8FC13E095604' ],
63
			[ 'q604192$5672w3B1-6935-4DF9-AD8-8FC13E095604' ],
64
			[ 'q604192$5672w3B1-6935-4DF9-ADE8-8FC13E09604' ],
65
			[ 'q604192$5672A3B1--7693-4DF9-ADE8-8FC13E095604' ],
66
			[ 'foo' ],
67
			[ 'q12345' ]
68
		];
69
	}
70
71
	/**
72
	 * @dataProvider validateProvider
73
	 */
74
	public function testValidateFormat( $guid ) {
75
		$validator = $this->newStatementGuidValidator();
76
		$isValid = $validator->validate( $guid );
77
78
		$this->assertTrue( $isValid, "Assert that statement guid $guid has a valid format." );
79
	}
80
81
	/**
82
	 * @dataProvider invalidFormatProvider
83
	 */
84
	public function  testInvalidFormat( $guid ) {
85
		$validator = $this->newStatementGuidValidator();
86
		$isValid = $validator->validate( $guid );
87
88
		$this->assertFalse( $isValid, "Assert that statement guid $guid has an invalid format." );
89
	}
90
91
	public function invalidFormatProvider() {
92
		return [
93
			[ 'q12345' ],
94
			[ 'q$1$2$3' ],
95
			[ '$q60$5083E43C-228B-4E3E-B82A-4CB20A22A3FB' ]
96
		];
97
	}
98
99
	/**
100
	 * @dataProvider validateInvalidPrefixedIdProvider
101
	 */
102
	public function testValidateInvalidPrefixedId( $guid ) {
103
		$validator = $this->newStatementGuidValidator();
104
105
		$isValid = $validator->validate( $guid );
106
107
		$this->assertFalse( $isValid, 'Assert that statement guid prefix is invalid' );
108
	}
109
110
	public function validateInvalidPrefixedIdProvider() {
111
		return [
112
			[ '060$5083E43C-228B-4E3E-B82A-4CB20A22A3FB' ],
113
			[ 'a060$5083E43C-228B-4E3E-B82A-4CB20A22A3FB' ]
114
		];
115
	}
116
117
}
118