Completed
Pull Request — master (#47)
by no
05:37 queued 03:01
created

MultilingualTextValueTest   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 127
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 2
Bugs 0 Features 2
Metric Value
wmc 10
c 2
b 0
f 2
lcom 0
cbo 3
dl 0
loc 127
rs 10

10 Methods

Rating   Name   Duplication   Size   Complexity  
A validConstructorArgumentsProvider() 0 20 1
B invalidConstructorArgumentsProvider() 0 31 1
A testNewFromArray() 0 5 1
A testNewFromArrayWithInvalidArray() 0 4 1
A getClass() 0 3 1
A invalidArrayProvider() 0 8 1
A testGetSortKey() 0 4 1
A getSortKeyProvider() 0 12 1
A testGetTexts() 0 7 1
A testGetValue() 0 3 1
1
<?php
2
3
namespace DataValues\Tests;
4
5
use DataValues\MonolingualTextValue;
6
use DataValues\MultilingualTextValue;
7
8
/**
9
 * @covers DataValues\MultilingualTextValue
10
 *
11
 * @since 0.1
12
 *
13
 * @group DataValue
14
 * @group DataValueExtensions
15
 *
16
 * @license GPL-2.0+
17
 * @author Jeroen De Dauw < [email protected] >
18
 */
19
class MultilingualTextValueTest extends DataValueTest {
20
21
	/**
22
	 * @see DataValueTest::getClass
23
	 *
24
	 * @return string
25
	 */
26
	public function getClass() {
27
		return 'DataValues\MultilingualTextValue';
28
	}
29
30
	public function validConstructorArgumentsProvider() {
31
		return array(
32
			array( array() ),
33
			array( array(
34
				new MonolingualTextValue( 'en', 'foo' ),
35
			) ),
36
			array( array(
37
				new MonolingualTextValue( 'en', 'foo' ),
38
				new MonolingualTextValue( 'de', 'foo' ),
39
			) ),
40
			array( array(
41
				new MonolingualTextValue( 'en', 'foo' ),
42
				new MonolingualTextValue( 'de', 'bar' ),
43
			) ),
44
			array( array(
45
				new MonolingualTextValue( 'en', 'foo' ),
46
				new MonolingualTextValue( 'de', ' foo bar baz foo bar baz foo bar baz foo bar baz foo bar baz foo bar baz ' ),
47
			) ),
48
		);
49
	}
50
51
	public function invalidConstructorArgumentsProvider() {
52
		return array(
53
			array( array( 42 ) ),
54
			array( array( false ) ),
55
			array( array( true ) ),
56
			array( array( null ) ),
57
			array( array( array() ) ),
58
			array( array( 'foo' ) ),
59
60
			array( array( 42 => 'foo' ) ),
61
			array( array( '' => 'foo' ) ),
62
			array( array( 'en' => 42 ) ),
63
			array( array( 'en' => null ) ),
64
			array( array( 'en' => true ) ),
65
			array( array( 'en' => array() ) ),
66
			array( array( 'en' => 4.2 ) ),
67
68
			array( array(
69
				new MonolingualTextValue( 'en', 'foo' ),
70
				false,
71
			) ),
72
			array( array(
73
				new MonolingualTextValue( 'en', 'foo' ),
74
				'foobar',
75
			) ),
76
			array( array(
77
				new MonolingualTextValue( 'en', 'foo' ),
78
				new MonolingualTextValue( 'en', 'bar' ),
79
			) ),
80
		);
81
	}
82
83
	public function testNewFromArray() {
84
		$array = array( array( 'text' => 'foo', 'language' => 'en' ) );
85
		$value = MultilingualTextValue::newFromArray( $array );
86
		$this->assertSame( $array, $value->getArrayValue() );
87
	}
88
89
	/**
90
	 * @dataProvider invalidArrayProvider
91
	 */
92
	public function testNewFromArrayWithInvalidArray( array $array ) {
93
		$this->setExpectedException( 'DataValues\IllegalValueException' );
94
		MultilingualTextValue::newFromArray( $array );
95
	}
96
97
	public function invalidArrayProvider() {
98
		return array(
99
			array( array( null ) ),
100
			array( array( '' ) ),
101
			array( array( array() ) ),
102
			array( array( array( 'en', 'foo' ) ) ),
103
		);
104
	}
105
106
	/**
107
	 * @dataProvider getSortKeyProvider
108
	 */
109
	public function testGetSortKey( array $monolingualValues, $expected ) {
110
		$value = new MultilingualTextValue( $monolingualValues );
111
		$this->assertSame( $expected, $value->getSortKey() );
112
	}
113
114
	public function getSortKeyProvider() {
115
		return array(
116
			array( array(), '' ),
117
			array( array(
118
				new MonolingualTextValue( 'en', 'foo' ),
119
			), 'enfoo' ),
120
			array( array(
121
				new MonolingualTextValue( 'en', 'foo' ),
122
				new MonolingualTextValue( 'de', 'bar' ),
123
			), 'enfoo' ),
124
		);
125
	}
126
127
	/**
128
	 * @dataProvider instanceProvider
129
	 */
130
	public function testGetTexts( MultilingualTextValue $texts, array $arguments ) {
131
		$actual = $texts->getTexts();
132
133
		$this->assertInternalType( 'array', $actual );
134
		$this->assertContainsOnlyInstancesOf( '\DataValues\MonolingualTextValue', $actual );
135
		$this->assertEquals( $arguments[0], array_values( $actual ) );
136
	}
137
138
	/**
139
	 * @dataProvider instanceProvider
140
	 */
141
	public function testGetValue( MultilingualTextValue $texts, array $arguments ) {
142
		$this->assertInstanceOf( $this->getClass(), $texts->getValue() );
143
	}
144
145
}
146