mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2024-11-22 09:35:28 +03:00
[FormatImplementationTest] Add unit tests for format implementations (#1008)
This commit is contained in:
parent
f65a4076ba
commit
11a39af35c
1 changed files with 44 additions and 0 deletions
44
tests/FormatImplementationTest.php
Normal file
44
tests/FormatImplementationTest.php
Normal file
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
require_once __DIR__ . '/../lib/rssbridge.php';
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class FormatImplementationTest extends TestCase {
|
||||
private $class;
|
||||
private $obj;
|
||||
|
||||
/**
|
||||
* @dataProvider dataFormatsProvider
|
||||
*/
|
||||
public function testClassName($path) {
|
||||
$this->setFormat($path);
|
||||
$this->assertTrue($this->class === ucfirst($this->class), 'class name must start with uppercase character');
|
||||
$this->assertEquals(0, substr_count($this->class, ' '), 'class name must not contain spaces');
|
||||
$this->assertStringEndsWith('Format', $this->class, 'class name must end with "Format"');
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider dataFormatsProvider
|
||||
*/
|
||||
public function testClassType($path) {
|
||||
$this->setFormat($path);
|
||||
$this->assertInstanceOf(FormatInterface::class, $this->obj);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public function dataFormatsProvider() {
|
||||
$formats = array();
|
||||
foreach (glob(PATH_LIB_FORMATS . '*.php') as $path) {
|
||||
$formats[basename($path, '.php')] = array($path);
|
||||
}
|
||||
return $formats;
|
||||
}
|
||||
|
||||
private function setFormat($path) {
|
||||
require_once $path;
|
||||
$this->class = basename($path, '.php');
|
||||
$this->assertTrue(class_exists($this->class), 'class ' . $this->class . ' doesn\'t exist');
|
||||
$this->obj = new $this->class();
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue