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

invalidConstructorArgumentsProvider()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 31
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 31
rs 8.8571
cc 1
eloc 24
nc 1
nop 0
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