invalidLanguageLinkProvider()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 16
rs 9.7333
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace SIL\Tests;
4
5
use SIL\SiteLanguageLinkModifier;
6
use SIL\InterlanguageLink;
7
8
use SMW\DIWikiPage;
9
use SMWDIBlob as DIBlob;
10
11
use Title;
12
13
/**
14
 * @covers \SIL\SiteLanguageLinkModifier
15
 *
16
 * @group semantic-interlanguage-links
17
 *
18
 * @license GNU GPL v2+
19
 * @since 1.0
20
 *
21
 * @author mwjames
22
 */
23
class SiteLanguageLinkModifierTest extends \PHPUnit_Framework_TestCase {
24
25
	public function testCanConstruct() {
26
27
		$titleForExternalLanguageLink = $this->getMockBuilder( '\Title' )
28
			->disableOriginalConstructor()
29
			->getMock();
30
31
		$titleToTargetLink = $this->getMockBuilder( '\Title' )
32
			->disableOriginalConstructor()
33
			->getMock();
34
35
		$this->assertInstanceOf(
36
			'\SIL\SiteLanguageLinkModifier',
37
			new SiteLanguageLinkModifier( $titleForExternalLanguageLink, $titleToTargetLink )
38
		);
39
	}
40
41
	public function testModifyLanguageLinkForNoTextEntry() {
42
43
		$titleForExternalLanguageLink = $this->getMockBuilder( '\Title' )
44
			->disableOriginalConstructor()
45
			->getMock();
46
47
		$titleToTargetLink = $this->getMockBuilder( '\Title' )
48
			->disableOriginalConstructor()
49
			->getMock();
50
51
		$languageLink = [];
52
53
		$instance = new SiteLanguageLinkModifier(
54
			$titleForExternalLanguageLink,
55
			$titleToTargetLink
56
		);
57
58
		$this->assertFalse(
59
			$instance->modifyLanguageLink( $languageLink )
60
		);
61
62
		$this->assertEmpty(
63
			$languageLink
64
		);
65
	}
66
67
	/**
68
	 * @dataProvider invalidLanguageLinkProvider
69
	 */
70
	public function testModifyLanguageLinkForInvalidSilEntry( $languageLink, $expected ) {
71
72
		$titleForExternalLanguageLink = $this->getMockBuilder( '\Title' )
73
			->disableOriginalConstructor()
74
			->getMock();
75
76
		$titleToTargetLink = $this->getMockBuilder( '\Title' )
77
			->disableOriginalConstructor()
78
			->getMock();
79
80
		$instance = new SiteLanguageLinkModifier(
81
			$titleForExternalLanguageLink,
82
			$titleToTargetLink
83
		);
84
85
		$this->assertFalse(
86
			$instance->modifyLanguageLink( $languageLink )
87
		);
88
89
		$this->assertEquals(
90
			$expected,
91
			$languageLink
92
		);
93
	}
94
95
	/**
96
	 * @dataProvider validLanguageLinkProvider
97
	 */
98
	public function testModifyLanguageLinkForValidSilEntry( $languageLink, $expected ) {
99
100
		$titleForExternalLanguageLink = $this->getMockBuilder( '\Title' )
101
			->disableOriginalConstructor()
102
			->getMock();
103
104
		$titleToTargetLink = $this->getMockBuilder( '\Title' )
105
			->disableOriginalConstructor()
106
			->getMock();
107
108
		$instance = new SiteLanguageLinkModifier(
109
			$titleForExternalLanguageLink,
110
			$titleToTargetLink
111
		);
112
113
		$this->assertTrue(
114
			$instance->modifyLanguageLink( $languageLink )
115
		);
116
117
		$this->assertContains(
118
			$expected,
119
			$languageLink
120
		);
121
	}
122
123
	public function invalidLanguageLinkProvider() {
124
125
		$provider = [];
126
127
		$provider[] = [
128
			[ 'text' => 'no:sil:entry' ],
129
			[ 'text' => 'no:sil:entry' ]
130
		];
131
132
		$provider[] = [
133
			[ 'text' => 'Foo' ],
134
			[ 'text' => 'Foo' ]
135
		];
136
137
		return $provider;
138
	}
139
140
	public function validLanguageLinkProvider() {
141
142
		$provider = [];
143
144
		$provider[] = [
145
			[ 'text' => 'sil:en:Foo' ],
146
			'English'
147
		];
148
149
		$provider[] = [
150
			[ 'text' => 'sil:en:vi:Foo' ],
151
			'English'
152
		];
153
154
		$provider[] = [
155
			[ 'text' => 'sil:ja:ja:ノート:Foo' ],
156
			'日本語'
157
		];
158
159
		return $provider;
160
	}
161
162
}
163