JsonLdResourceFormatterTest::getInstance()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace PPP\Wikidata\ValueFormatters;
4
5
use DataValues\MonolingualTextValue;
6
use DataValues\TimeValue;
7
use PPP\DataModel\JsonLdResourceNode;
8
use PPP\Wikidata\ValueFormatters\JsonLd\JsonLdFormatterTestBase;
9
use PPP\Wikidata\WikibaseResourceNode;
10
use ValueFormatters\FormatterOptions;
11
use Wikibase\DataModel\Entity\EntityIdValue;
12
use Wikibase\DataModel\Entity\ItemId;
13
use Wikibase\DataModel\Entity\PropertyId;
14
use Wikibase\DataModel\Snak\PropertyValueSnak;
15
16
/**
17
 * @covers PPP\Wikidata\ValueFormatters\JsonLdResourceFormatter
18
 *
19
 * @licence AGPLv3+
20
 * @author Thomas Pellissier Tanon
21
 */
22
class JsonLdResourceFormatterTest extends JsonLdFormatterTestBase {
23
24
	/**
25
	 * @see JsonLdFormatterTestBase::validProvider
26
	 */
27
	public function validProvider() {
28
		$withNameArrayFormatter = $this->getMock('PPP\Wikidata\ValueFormatters\JsonLd\JsonLdDataValueFormatter');
29
		$withNameArrayFormatter->expects($this->once())
30
			->method('format')
31
			->with($this->equalTo(new EntityIdValue(new ItemId('Q1'))))
32
			->will($this->returnValue((object) array('@type' => 'Thing', 'name' => array('foo'))));
33
34
		$withNameObjectFormatter = $this->getMock('PPP\Wikidata\ValueFormatters\JsonLd\JsonLdDataValueFormatter');
35
		$withNameObjectFormatter->expects($this->once())
36
			->method('format')
37
			->with($this->equalTo(new EntityIdValue(new ItemId('Q1'))))
38
			->will($this->returnValue((object) array(
39
				'@type' => 'Thing',
40
				'name' => (object) array('@language' => 'en', '@value' => 'foo'),
41
				'@reverse' => (object) array()
42
			)));
43
44
		$withOtherLanguageNameFormatter = $this->getMock('PPP\Wikidata\ValueFormatters\JsonLd\JsonLdDataValueFormatter');
45
		$withOtherLanguageNameFormatter->expects($this->once())
46
			->method('format')
47
			->with($this->equalTo(new EntityIdValue(new ItemId('Q1'))))
48
			->will($this->returnValue((object) array(
49
				'@type' => 'Thing',
50
				'name' => (object) array('@language' => 'fr', '@value' => 'foo')
51
			)));
52
53
		$snakFormatterMock = $this->getMock('ValueFormatters\ValueFormatter');
54
		$snakFormatterMock->expects($this->any())
55
			->method('format')
56
			->with($this->equalTo(new PropertyValueSnak(new PropertyId('P21'), new EntityIdValue(new ItemId('Q1')))))
57
			->willReturn(array(
58
				'http://schema.org/gender' => (object) array('name' => 'foo')
59
			));
60
61
62
		$snakEmptyFormatterMock = $this->getMock('ValueFormatters\ValueFormatter');
63
		$snakEmptyFormatterMock->expects($this->any())
64
			->method('format')
65
			->with($this->equalTo(new PropertyValueSnak(new PropertyId('P21'), new EntityIdValue(new ItemId('Q1')))))
66
			->willReturn(array());
67
68
		$withTypeLiteralFormatter = $this->getMock('PPP\Wikidata\ValueFormatters\JsonLd\JsonLdDataValueFormatter');
69
		$withTypeLiteralFormatter->expects($this->once())
70
			->method('format')
71
			->with($this->equalTo(new TimeValue('+1952-03-11T00:00:00Z', 0, 0, 0, TimeValue::PRECISION_DAY, 'http://www.wikidata.org/entity/Q1985786')))
72
			->will($this->returnValue((object) array('@type' => 'Date', '@value' => '1952-03-11')));
73
74
		$withoutTypeLiteralFormatter = $this->getMock('PPP\Wikidata\ValueFormatters\JsonLd\JsonLdDataValueFormatter');
75
		$withoutTypeLiteralFormatter->expects($this->once())
76
			->method('format')
77
			->with($this->equalTo(new MonolingualTextValue('en', 'foo')))
78
			->will($this->returnValue((object) array('@language' => 'en', '@value' => 'foo')));
79
80
		return array(
81
			array(
82
				new WikibaseResourceNode(
83
					'',
84
					new EntityIdValue(new ItemId('Q1')),
85
					new ItemId('Q1'),
86
					new PropertyId('P21')
87
				),
88
				new JsonLdResourceNode(
89
					'foo',
90
					(object) array(
91
						'@context' => 'http://schema.org',
92
						'@type' => 'Thing',
93
						'name' => array('foo'),
94
						'@reverse' => (object) array(
95
							'http://schema.org/gender' => array((object) array('name' => 'foo'))
96
						)
97
					)
98
				),
99
				null,
100
				new JsonLdResourceFormatter($withNameArrayFormatter, $snakFormatterMock, new FormatterOptions())
101
			),
102
			array(
103
				new WikibaseResourceNode(
104
					'',
105
					new EntityIdValue(new ItemId('Q1')),
106
					new ItemId('Q1'),
107
					new PropertyId('P21')
108
				),
109
				new JsonLdResourceNode(
110
					'foo',
111
					(object) array(
112
						'@context' => 'http://schema.org',
113
						'@type' => 'Thing',
114
						'name' => (object) array('@language' => 'en', '@value' => 'foo'),
115
						'@reverse' => (object) array(
116
							'http://schema.org/gender' => array((object) array('name' => 'foo'))
117
						)
118
					)
119
				),
120
				null,
121
				new JsonLdResourceFormatter($withNameObjectFormatter, $snakFormatterMock, new FormatterOptions())
122
			),
123
			array(
124
				new WikibaseResourceNode(
125
					'',
126
					new EntityIdValue(new ItemId('Q1'))
127
				),
128
				new JsonLdResourceNode(
129
					'foo',
130
					(object) array(
131
						'@context' => 'http://schema.org',
132
						'@type' => 'Thing',
133
						'name' => (object) array('@language' => 'fr', '@value' => 'foo')
134
					)
135
				),
136
				null,
137
				new JsonLdResourceFormatter($withOtherLanguageNameFormatter, $snakFormatterMock, new FormatterOptions())
138
			),
139
			array(
140
				new WikibaseResourceNode(
141
					'',
142
					new TimeValue('+1952-03-11T00:00:00Z', 0, 0, 0, TimeValue::PRECISION_DAY, 'http://www.wikidata.org/entity/Q1985786')
143
				),
144
				new JsonLdResourceNode(
145
					'1952-03-11',
146
					(object) array(
147
						'@context' => 'http://schema.org',
148
						'@type' => 'Date',
149
						'http://www.w3.org/1999/02/22-rdf-syntax-ns#value' => (object) array(
150
							'@type' => 'Date',
151
							'@value' => '1952-03-11'
152
						)
153
					)
154
				),
155
				null,
156
				new JsonLdResourceFormatter($withTypeLiteralFormatter, $snakFormatterMock, new FormatterOptions())
157
			),
158
			array(
159
				new WikibaseResourceNode(
160
					'',
161
					new MonolingualTextValue('en', 'foo'),
162
					new ItemId('Q1'),
163
					new PropertyId('P21')
164
				),
165
				new JsonLdResourceNode(
166
					'foo',
167
					(object) array(
168
						'@context' => 'http://schema.org',
169
						'@type' => 'Text',
170
						'http://www.w3.org/1999/02/22-rdf-syntax-ns#value' => (object) array(
171
							'@language' => 'en',
172
							'@value' => 'foo'
173
						)
174
					)
175
				),
176
				null,
177
				new JsonLdResourceFormatter($withoutTypeLiteralFormatter, $snakEmptyFormatterMock, new FormatterOptions())
178
			),
179
		);
180
	}
181
182
	/**
183
	 * @see JsonLdFormatterTestBase::getInstance
184
	 */
185
	protected function getInstance(FormatterOptions $options = null) {
186
		return null;
187
	}
188
}
189