Chris@0
|
1 <?php
|
Chris@0
|
2 namespace Consolidation\OutputFormatters;
|
Chris@0
|
3
|
Chris@0
|
4 use Consolidation\OutputFormatters\StructuredData\RowsOfFields;
|
Chris@0
|
5 use Consolidation\OutputFormatters\StructuredData\PropertyList;
|
Chris@0
|
6 use Consolidation\OutputFormatters\Exception\IncompatibleDataException;
|
Chris@0
|
7
|
Chris@0
|
8 class IncompatibleDataTests extends \PHPUnit_Framework_TestCase
|
Chris@0
|
9 {
|
Chris@0
|
10 protected $formatterManager;
|
Chris@0
|
11
|
Chris@0
|
12 function setup() {
|
Chris@0
|
13 $this->formatterManager = new FormatterManager();
|
Chris@0
|
14 }
|
Chris@0
|
15
|
Chris@0
|
16 protected function assertIncompatibleDataMessage($expected, $formatter, $data)
|
Chris@0
|
17 {
|
Chris@0
|
18 $e = new IncompatibleDataException($formatter, $data, $formatter->validDataTypes());
|
Chris@0
|
19 $this->assertEquals($expected, $e->getMessage());
|
Chris@0
|
20 }
|
Chris@0
|
21
|
Chris@0
|
22 public function testIncompatibleData()
|
Chris@0
|
23 {
|
Chris@0
|
24 $tableFormatter = $this->formatterManager->getFormatter('table');
|
Chris@0
|
25
|
Chris@0
|
26 $this->assertIncompatibleDataMessage('Data provided to Consolidation\OutputFormatters\Formatters\TableFormatter must be either an instance of Consolidation\OutputFormatters\StructuredData\RowsOfFields or an instance of Consolidation\OutputFormatters\StructuredData\PropertyList. Instead, a string was provided.', $tableFormatter, 'a string');
|
Chris@0
|
27 $this->assertIncompatibleDataMessage('Data provided to Consolidation\OutputFormatters\Formatters\TableFormatter must be either an instance of Consolidation\OutputFormatters\StructuredData\RowsOfFields or an instance of Consolidation\OutputFormatters\StructuredData\PropertyList. Instead, an instance of Consolidation\OutputFormatters\FormatterManager was provided.', $tableFormatter, $this->formatterManager);
|
Chris@0
|
28 $this->assertIncompatibleDataMessage('Data provided to Consolidation\OutputFormatters\Formatters\TableFormatter must be either an instance of Consolidation\OutputFormatters\StructuredData\RowsOfFields or an instance of Consolidation\OutputFormatters\StructuredData\PropertyList. Instead, an array was provided.', $tableFormatter, []);
|
Chris@0
|
29 $this->assertIncompatibleDataMessage('Data provided to Consolidation\OutputFormatters\Formatters\TableFormatter must be either an instance of Consolidation\OutputFormatters\StructuredData\RowsOfFields or an instance of Consolidation\OutputFormatters\StructuredData\PropertyList. Instead, an instance of Consolidation\OutputFormatters\StructuredData\PropertyList was provided.', $tableFormatter, new PropertyList([]));
|
Chris@0
|
30 }
|
Chris@0
|
31
|
Chris@0
|
32 /**
|
Chris@0
|
33 * @expectedException \Exception
|
Chris@0
|
34 * @expectedExceptionMessage Undescribable data error: NULL
|
Chris@0
|
35 */
|
Chris@0
|
36 public function testUndescribableData()
|
Chris@0
|
37 {
|
Chris@0
|
38 $tableFormatter = $this->formatterManager->getFormatter('table');
|
Chris@0
|
39 $data = $tableFormatter->validate(null);
|
Chris@0
|
40 $this->assertEquals('Will throw before comparing.', $data);
|
Chris@0
|
41 }
|
Chris@0
|
42
|
Chris@0
|
43 /**
|
Chris@0
|
44 * @expectedException \Exception
|
Chris@0
|
45 * @expectedExceptionMessage Data provided to Consolidation\OutputFormatters\Formatters\TableFormatter must be either an instance of Consolidation\OutputFormatters\StructuredData\RowsOfFields or an instance of Consolidation\OutputFormatters\StructuredData\PropertyList. Instead, a string was provided.
|
Chris@0
|
46 */
|
Chris@0
|
47 public function testInvalidTableData()
|
Chris@0
|
48 {
|
Chris@0
|
49 $tableFormatter = $this->formatterManager->getFormatter('table');
|
Chris@0
|
50 $data = $tableFormatter->validate('bad data type');
|
Chris@0
|
51 $this->assertEquals('Will throw before comparing.', $data);
|
Chris@0
|
52 }
|
Chris@0
|
53
|
Chris@0
|
54 /**
|
Chris@0
|
55 * @expectedException \Exception
|
Chris@0
|
56 * @expectedExceptionMessage Data provided to Consolidation\OutputFormatters\Formatters\SectionsFormatter must be an instance of Consolidation\OutputFormatters\StructuredData\RowsOfFields. Instead, a string was provided.
|
Chris@0
|
57 */
|
Chris@0
|
58 public function testInvalidSectionsData()
|
Chris@0
|
59 {
|
Chris@0
|
60 $tableFormatter = $this->formatterManager->getFormatter('sections');
|
Chris@0
|
61 $data = $tableFormatter->validate('bad data type');
|
Chris@0
|
62 $this->assertEquals('Will throw before comparing.', $data);
|
Chris@0
|
63 }
|
Chris@0
|
64 }
|