add unit tests for params validator

This commit is contained in:
Rafal Leszczynski 2015-06-11 12:54:10 +02:00
parent 462a8fbc07
commit 96ced03f8a
2 changed files with 72 additions and 1 deletions

View file

@ -13,13 +13,16 @@ class InfoboParamsValidator {
* @param array $params * @param array $params
* @throws InvalidInfoboxParamsException * @throws InvalidInfoboxParamsException
* @todo: consider using hashmap instead of array ones validator grows * @todo: consider using hashmap instead of array ones validator grows
* @returns boolean
*/ */
public function validateParams( $params ) { public function validateParams( $params ) {
foreach ( array_keys( $params ) as $param ) { foreach ( array_keys( $params ) as $param ) {
if ( !in_array( $param, $this->$supportedParams ) ) { if ( !in_array( $param, $this->supportedParams ) ) {
throw new InvalidInfoboxParamsException( $param ); throw new InvalidInfoboxParamsException( $param );
} }
} }
return true;
} }
} }

View file

@ -0,0 +1,68 @@
<?php
class InfoboxParamsValidatorTest extends WikiaBaseTest {
private $InfoboxParamsValidator;
private $invalidParamsExpectionNname =
'Wikia\PortableInfobox\Helpers\InvalidInfoboxParamsException';
protected function setUp() {
$this->setupFile = dirname( __FILE__ ) . '/../PortableInfobox.setup.php';
parent::setUp();
$this->InfoboxParamsValidator = new \Wikia\PortableInfobox\Helpers\InfoboParamsValidator();
}
/**
* @param array $params
* @dataProvider testInfoboxParamsFailValidationDataProvider
*/
public function testInfoboxParamsFailValidation ( $params ) {
$this->setExpectedException( $this->invalidParamsExpectionNname );
$this->InfoboxParamsValidator->validateParams( $params );
}
/**
* @param array $params
* @dataProvider testInfoboxParamsPassValidationDataProvider
*/
public function testInfoboxParamsPassValidation ( $params ) {
$this->assertEquals( true, $this->InfoboxParamsValidator->validateParams( $params ) );
}
public function testInfoboxParamsFailValidationDataProvider() {
return [
[
'params' => [
'theme' => 'test',
'abc' => 'def',
'layout' => 'myLayout'
]
],
[
'params' => [
'abc' => 'def',
]
],
];
}
public function testInfoboxParamsPassValidationDataProvider() {
return [
[
'params' => [],
],
[
'params' => [
'theme' => 'test',
'theme-source' => 'loremIpsum',
'layout' => 'myLayout'
]
],
[
'params' => [
'theme' => 'test',
]
]
];
}
}