diff options
Diffstat (limited to 'tests/Formats/MrssFormatTest.php')
-rw-r--r-- | tests/Formats/MrssFormatTest.php | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/tests/Formats/MrssFormatTest.php b/tests/Formats/MrssFormatTest.php new file mode 100644 index 00000000..3becd8eb --- /dev/null +++ b/tests/Formats/MrssFormatTest.php @@ -0,0 +1,76 @@ +<?php +/** + * MrssFormat - RSS 2.0 + Media RSS + * http://www.rssboard.org/rss-specification + * http://www.rssboard.org/media-rss + */ + +namespace RssBridge\Tests\Formats; + +use FormatFactory; +use PHPUnit\Framework\TestCase; + +class MrssFormatTest extends TestCase { + const PATH_SAMPLES = __DIR__ . '/samples/'; + const PATH_EXPECTED = __DIR__ . '/samples/expectedMrssFormat/'; + + private $sample; + private $format; + private $data; + + /** + * @dataProvider sampleProvider + * @runInSeparateProcess + */ + public function testOutput($path) { + $this->setSample($path); + $this->initFormat(); + + $this->assertXmlStringEqualsXmlFile($this->sample->expected, $this->data); + } + + public function sampleProvider() { + $samples = array(); + foreach (glob(self::PATH_SAMPLES . '*.json') as $path) { + $samples[basename($path, '.json')] = array($path); + } + return $samples; + } + + private function setSample($path) { + $data = json_decode(file_get_contents($path), true); + if (isset($data['meta']) && isset($data['items'])) { + if (!empty($data['server'])) + $this->setServerVars($data['server']); + + $items = array(); + foreach($data['items'] as $item) { + $items[] = new \FeedItem($item); + } + + $this->sample = (object)array( + 'meta' => $data['meta'], + 'items' => $items, + 'expected' => self::PATH_EXPECTED . basename($path, '.json') . '.xml' + ); + } else { + $this->fail('invalid test sample: ' . basename($path, '.json')); + } + } + + private function setServerVars($list) { + $_SERVER = array_merge($_SERVER, $list); + } + + private function initFormat() { + $formatFac = new FormatFactory(); + $formatFac->setWorkingDir(PATH_LIB_FORMATS); + $this->format = $formatFac->create('Mrss'); + $this->format->setItems($this->sample->items); + $this->format->setExtraInfos($this->sample->meta); + $this->format->setLastModified(strtotime('2000-01-01 12:00:00 UTC')); + + $this->data = $this->format->stringify(); + $this->assertNotFalse(simplexml_load_string($this->data)); + } +} |