Skip to content

Commit

Permalink
Merge pull request #189 from aik099/config-missing-tests
Browse files Browse the repository at this point in the history
Add missing tests for "Config" class
  • Loading branch information
Alexander Obuhovich committed Jun 25, 2016
2 parents a1ae707 + caad69a commit d3fb46c
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 14 deletions.
26 changes: 16 additions & 10 deletions library/QATools/QATools/PageObject/Config/Config.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,10 @@ public function __construct(array $options = array())
* @param mixed $value Config option value.
*
* @return self
* @throws ConfigException Throws exception on attempt to set non-existing option.
*/
public function setOption($name, $value)
{
if ( !isset($this->options[$name]) ) {
throw new ConfigException(
'Option "' . $name . '" doesn\'t exist in configuration',
ConfigException::TYPE_NOT_FOUND
);
}
$this->assertOptionName($name);

$this->options[$name] = $value;

Expand All @@ -77,18 +71,30 @@ public function setOption($name, $value)
* @param string $name Config option name.
*
* @return mixed
* @throws ConfigException Thrown when option with a given name doesn't exist.
*/
public function getOption($name)
{
$this->assertOptionName($name);

return $this->options[$name];
}

/**
* Checks, that option exists in config.
*
* @param string $name Option name.
*
* @return void
* @throws ConfigException Thrown when option with a given name doesn't exist.
*/
protected function assertOptionName($name)
{
if ( !isset($this->options[$name]) ) {
throw new ConfigException(
'Option "' . $name . '" doesn\'t exist in configuration',
ConfigException::TYPE_NOT_FOUND
);
}

return $this->options[$name];
}

}
45 changes: 41 additions & 4 deletions tests/QATools/QATools/PageObject/Config/ConfigTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,31 @@ public function constructorDataProvider()
return array(
array(
array(),
array('base_url' => ''),
array(
'base_url' => '',
'page_namespace_prefix' => array('\\'),
'page_url_matchers' => array(
'\\QATools\\QATools\\PageObject\\PageUrlMatcher\\ExactPageUrlMatcher',
'\\QATools\\QATools\\PageObject\\PageUrlMatcher\\RegexpPageUrlMatcher',
'\\QATools\\QATools\\PageObject\\PageUrlMatcher\\ComponentPageUrlMatcher',
),
),
),
array(
array('base_url' => 'value'),
array('base_url' => 'value'),
array(
'base_url' => 'override',
'page_namespace_prefix' => array('\\CustomNS'),
'page_url_matchers' => array(
'CustomPageUrlMatcher',
),
),
array(
'base_url' => 'override',
'page_namespace_prefix' => array('\\CustomNS'),
'page_url_matchers' => array(
'CustomPageUrlMatcher',
),
),
),
);
}
Expand Down Expand Up @@ -70,7 +90,9 @@ public function testSetAndGetOption($name, $value)
public function optionDataProvider()
{
return array(
array('base_url', 'value'),
array('base_url', 'override1'),
array('page_namespace_prefix', 'override2'),
array('page_url_matchers', 'override3'),
);
}

Expand All @@ -89,6 +111,21 @@ public function testGetOptionWithFailure(array $options, $name)
$config->getOption($name);
}

/**
* @dataProvider getOptionWithFailureDataProvider
*/
public function testSetOptionWithFailure(array $options, $name)
{
$this->setExpectedException(
'QATools\\QATools\\PageObject\\Exception\\ConfigException',
'Option "' . $name . '" doesn\'t exist in configuration',
ConfigException::TYPE_NOT_FOUND
);

$config = new Config($options);
$config->setOption($name, 'x');
}

public function getOptionWithFailureDataProvider()
{
return array(
Expand Down

0 comments on commit d3fb46c

Please sign in to comment.