testCanConstruct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.9
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace SIL\Tests;
4
5
use SIL\InterwikiLanguageLinkFetcher;
6
use SIL\PropertyRegistry;
7
8
use Title;
9
10
/**
11
 * @covers \SIL\InterwikiLanguageLinkFetcher
12
 *
13
 * @group semantic-interlanguage-links
14
 *
15
 * @license GNU GPL v2+
16
 * @since 1.0
17
 *
18
 * @author mwjames
19
 */
20
class InterwikiLanguageLinkFetcherTest extends \PHPUnit_Framework_TestCase {
21
22
	public function testCanConstruct() {
23
24
		$languageLinkAnnotator = $this->getMockBuilder( '\SIL\LanguageLinkAnnotator' )
25
			->disableOriginalConstructor()
26
			->getMock();
27
28
		$this->assertInstanceOf(
29
			'\SIL\InterwikiLanguageLinkFetcher',
30
			new InterwikiLanguageLinkFetcher( $languageLinkAnnotator )
31
		);
32
	}
33
34
	public function testEmptyLanguageLinks() {
35
36
		$languageLinkAnnotator = $this->getMockBuilder( '\SIL\LanguageLinkAnnotator' )
37
			->disableOriginalConstructor()
38
			->getMock();
39
40
		$languageLinkAnnotator->expects( $this->never() )
41
			->method( 'addAnnotationForInterwikiLanguageLink' );
42
43
		$parserOutput = new \ParserOutput();
44
		$parserOutput->setLanguageLinks( [] );
45
46
		$instance = new InterwikiLanguageLinkFetcher( $languageLinkAnnotator );
47
		$instance->fetchLanguagelinksFromParserOutput( $parserOutput );
48
	}
49
50
	public function testIgnoreSILLink() {
51
52
		$languageLinkAnnotator = $this->getMockBuilder( '\SIL\LanguageLinkAnnotator' )
53
			->disableOriginalConstructor()
54
			->getMock();
55
56
		$languageLinkAnnotator->expects( $this->never() )
57
			->method( 'addAnnotationForInterwikiLanguageLink' );
58
59
		$parserOutput = new \ParserOutput();
60
		$parserOutput->setLanguageLinks( [ 'sil:en:Foo' ] );
61
62
		$instance = new InterwikiLanguageLinkFetcher( $languageLinkAnnotator );
63
		$instance->fetchLanguagelinksFromParserOutput( $parserOutput );
64
	}
65
66
	public function testInvalidInterwikiLink() {
67
68
		$languageLinkAnnotator = $this->getMockBuilder( '\SIL\LanguageLinkAnnotator' )
69
			->disableOriginalConstructor()
70
			->getMock();
71
72
		$languageLinkAnnotator->expects( $this->never() )
73
			->method( 'addAnnotationForInterwikiLanguageLink' );
74
75
		$parserOutput = new \ParserOutput();
76
		$parserOutput->setLanguageLinks( [ 'invalid:Foo' ] );
77
78
		$instance = new InterwikiLanguageLinkFetcher( $languageLinkAnnotator );
79
		$instance->fetchLanguagelinksFromParserOutput( $parserOutput );
80
	}
81
82
	public function testValidInterwikiLink() {
83
84
		$parserData = $this->getMockBuilder( '\SMW\ParserData' )
85
			->disableOriginalConstructor()
86
			->getMock();
87
88
		$languageLinkAnnotator = $this->getMockBuilder( '\SIL\LanguageLinkAnnotator' )
89
			->setConstructorArgs( [ $parserData ] )
90
			->getMock();
91
92
		$languageLinkAnnotator->expects( $this->once() )
93
			->method( 'addAnnotationForInterwikiLanguageLink' );
94
95
		$title = $this->getMockBuilder( '\Title' )
96
			->disableOriginalConstructor()
97
			->getMock();
98
99
		$title->expects( $this->any() )
100
			->method( 'getInterwiki' )
101
			->will( $this->returnValue( 'en' ) );
102
103
		$parserOutput = new \ParserOutput();
104
		$parserOutput->setLanguageLinks( [ $title ] );
105
106
		$instance = new InterwikiLanguageLinkFetcher( $languageLinkAnnotator );
107
		$instance->fetchLanguagelinksFromParserOutput( $parserOutput );
108
	}
109
110
}
111