Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
95 lines (85 sloc) 2.54 KB
<?php
/*
* This file is part of the symfony package.
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/**
* sfTesterPropel implements tests for Propel classes.
*
* @package symfony
* @subpackage test
* @author Fabien Potencier <fabien.potencier@symfony-project.com>
* @version SVN: $Id: sfTesterPropel.class.php 21908 2009-09-11 12:06:21Z fabien $
*/
class sfTesterPropel extends sfTester
{
/**
* Prepares the tester.
*/
public function prepare()
{
}
/**
* Initializes the tester.
*/
public function initialize()
{
}
/**
* Tests a model.
*
* @param string $model The model class name
* @param array|Criteria $criteria A Criteria object or an array of conditions
* @param string $value The value to test
*
* @return sfTestFunctionalBase|sfTester
*/
public function check($model, $criteria, $value = true)
{
if (null === $criteria)
{
$criteria = new Criteria();
}
if (is_array($criteria))
{
$conditions = $criteria;
$criteria = new Criteria();
foreach ($conditions as $column => $condition)
{
$column = call_user_func(array(constant($model.'::PEER'), 'translateFieldName'), $column, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME);
$operator = Criteria::EQUAL;
if ('!' == $condition[0])
{
$operator = false !== strpos($condition, '%') ? Criteria::NOT_LIKE : Criteria::NOT_EQUAL;
$condition = substr($condition, 1);
}
else if (false !== strpos($condition, '%'))
{
$operator = Criteria::LIKE;
}
$criteria->add($column, $condition, $operator);
}
}
$objects = call_user_func(array(constant($model.'::PEER'), 'doSelect'), $criteria);
if (false === $value)
{
$this->tester->is(count($objects), 0, sprintf('no %s object that matches the criteria has been found', $model));
}
else if (true === $value)
{
$this->tester->cmp_ok(count($objects), '>', 0, sprintf('%s objects that matches the criteria have been found', $model));
}
else if (is_int($value))
{
$this->tester->is(count($objects), $value, sprintf('"%s" %s objects have been found', $value, $model));
}
else
{
throw new InvalidArgumentException('The "check()" method does not takes this kind of argument.');
}
return $this->getObjectToReturn();
}
}
Jump to Line
Something went wrong with that request. Please try again.