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

MultilingualTextValueTest   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 128
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 128
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 invalidArrayProvider() 0 9 1
A testGetSortKey() 0 4 1
A getSortKeyProvider() 0 12 1
A getClass() 0 3 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 ) {
93
		$this->setExpectedException( 'DataValues\IllegalValueException' );
94
		MultilingualTextValue::newFromArray( $array );
95
	}
96
97
	public function invalidArrayProvider() {
98
		return array(
99
			array( null ),
100
			array( '' ),
101
			array( array( null ) ),
102
			array( array( '' ) ),
103
			array( array( array() ) ),
104
		);
105
	}
106
107
	/**
108
	 * @dataProvider getSortKeyProvider
109
	 */
110
	public function testGetSortKey( array $monolingualValues, $expected ) {
111
		$value = new MultilingualTextValue( $monolingualValues );
112
		$this->assertSame( $expected, $value->getSortKey() );
113
	}
114
115
	public function getSortKeyProvider() {
116
		return array(
117
			array( array(), '' ),
118
			array( array(
119
				new MonolingualTextValue( 'en', 'foo' ),
120
			), 'enfoo' ),
121
			array( array(
122
				new MonolingualTextValue( 'en', 'foo' ),
123
				new MonolingualTextValue( 'de', 'bar' ),
124
			), 'enfoo' ),
125
		);
126
	}
127
128
	/**
129
	 * @dataProvider instanceProvider
130
	 */
131
	public function testGetTexts( MultilingualTextValue $texts, array $arguments ) {
132
		$actual = $texts->getTexts();
133
134
		$this->assertInternalType( 'array', $actual );
135
		$this->assertContainsOnlyInstancesOf( '\DataValues\MonolingualTextValue', $actual );
136
		$this->assertEquals( $arguments[0], array_values( $actual ) );
137
	}
138
139
	/**
140
	 * @dataProvider instanceProvider
141
	 */
142
	public function testGetValue( MultilingualTextValue $texts, array $arguments ) {
143
		$this->assertInstanceOf( $this->getClass(), $texts->getValue() );
144
	}
145
146
}
147