diff options
Diffstat (limited to 'tests/Formats/BaseFormatTest.php')
-rw-r--r-- | tests/Formats/BaseFormatTest.php | 116 |
1 files changed, 61 insertions, 55 deletions
diff --git a/tests/Formats/BaseFormatTest.php b/tests/Formats/BaseFormatTest.php index 94da7b04..ace4d3ea 100644 --- a/tests/Formats/BaseFormatTest.php +++ b/tests/Formats/BaseFormatTest.php @@ -5,59 +5,65 @@ namespace RssBridge\Tests\Formats; use PHPUnit\Framework\TestCase; use FormatFactory; -abstract class BaseFormatTest extends TestCase { - protected const PATH_SAMPLES = __DIR__ . '/samples/'; - - /** - * @return array<string, array{string, string}> - */ - public function sampleProvider() { - $samples = []; - foreach (glob(self::PATH_SAMPLES . '*.json') as $path) { - $name = basename($path, '.json'); - $samples[$name] = [ - $name, - $path, - ]; - } - return $samples; - } - - /** - * Cannot be part of the sample returned by sampleProvider since this modifies $_SERVER - * and thus needs to be run in a separate process to avoid side effects. - */ - protected function loadSample(string $path): \stdClass { - $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); - } - - return (object)array( - 'meta' => $data['meta'], - 'items' => $items, - ); - } else { - $this->fail('invalid test sample: ' . basename($path, '.json')); - } - } - - private function setServerVars(array $list): void { - $_SERVER = array_merge($_SERVER, $list); - } - - protected function formatData(string $formatName, \stdClass $sample): string { - $formatFac = new FormatFactory(); - $format = $formatFac->create($formatName); - $format->setItems($sample->items); - $format->setExtraInfos($sample->meta); - $format->setLastModified(strtotime('2000-01-01 12:00:00 UTC')); - - return $format->stringify(); - } +abstract class BaseFormatTest extends TestCase +{ + protected const PATH_SAMPLES = __DIR__ . '/samples/'; + + /** + * @return array<string, array{string, string}> + */ + public function sampleProvider() + { + $samples = []; + foreach (glob(self::PATH_SAMPLES . '*.json') as $path) { + $name = basename($path, '.json'); + $samples[$name] = [ + $name, + $path, + ]; + } + return $samples; + } + + /** + * Cannot be part of the sample returned by sampleProvider since this modifies $_SERVER + * and thus needs to be run in a separate process to avoid side effects. + */ + protected function loadSample(string $path): \stdClass + { + $data = json_decode(file_get_contents($path), true); + if (isset($data['meta']) && isset($data['items'])) { + if (!empty($data['server'])) { + $this->setServerVars($data['server']); + } + + $items = []; + foreach ($data['items'] as $item) { + $items[] = new \FeedItem($item); + } + + return (object)[ + 'meta' => $data['meta'], + 'items' => $items, + ]; + } else { + $this->fail('invalid test sample: ' . basename($path, '.json')); + } + } + + private function setServerVars(array $list): void + { + $_SERVER = array_merge($_SERVER, $list); + } + + protected function formatData(string $formatName, \stdClass $sample): string + { + $formatFac = new FormatFactory(); + $format = $formatFac->create($formatName); + $format->setItems($sample->items); + $format->setExtraInfos($sample->meta); + $format->setLastModified(strtotime('2000-01-01 12:00:00 UTC')); + + return $format->stringify(); + } } |