/** * @dataProvider formatterDataProvider */ public function testGetOutput($format, $item) { $formatter = new GenericResponseItemFormatter(); $keys = array_keys($item); $currentItemKey = $keys[0]; $formatter->formatter(array($currentItemKey => 'fake', 'content' => $item[$currentItemKey])); $propertyValue = $this->propertyGetValue($formatter, 'data'); $this->assertArrayHasKey($currentItemKey, $propertyValue); $this->assertArrayHasKey('content', $propertyValue); $output = $formatter->getOutput(); $outputKeys = array_keys($output); $this->assertEquals($currentItemKey, $outputKeys[0]); $this->assertEquals('fake', $output[$currentItemKey]); if ($format === 'string') { if ($item[$currentItemKey] === '') { $this->assertNull($output['content']); } else { $this->assertEquals(trim($item[$currentItemKey]), $output['content']); } } elseif ($format === 'numeric') { if ($item[$currentItemKey] === '12') { $this->assertTrue(is_int($output['content'])); } else { $this->assertTrue(is_float($output['content'])); } } elseif ($format === 'boolean') { if (strtolower($item[$currentItemKey]) === 'false') { $this->assertFalse($output['content']); } else { $this->assertTrue($output['content']); } } elseif ($format === 'datetime') { $this->assertInstanceOf('\\DateTime', $output['content']); } }
/** * @inheritdoc */ public function formatter(array $data) { $this->data = array(); $formatter = new GenericResponseItemFormatter(); if (!isset($data[0])) { $data = array($data); } foreach ($data as $item) { $formattedItem = $formatter->formatter($item)->getOutput(); $this->data[isset($formattedItem['val']) ? $formattedItem['val'] : $formattedItem['sl']] = $formattedItem['content']; } return $this; }