*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
require_once(dirname(__FILE__).'/../../bootstrap/unit.php');
$t = new lime_test(34);
class MyWidgetForm extends sfWidgetForm
{
public function render($name, $value = null, $attributes = array(), $errors = array())
{
return $this->renderTag('input', array_merge(array('name' => $name), $attributes)).$this->renderContentTag('textarea', null, array_merge(array('name' => $name), $attributes));
}
public function generateId($name, $value = null)
{
return parent::generateId($name, $value);
}
}
// __construct()
$t->diag('__construct()');
$w = new MyWidgetForm(array('id_format' => '%s'));
$t->is($w->render('foo'), '', '__construct() takes a id_format argument');
$t->is($w->render('foo', null, array('id' => 'id_foo')), '', '->render() id attributes takes precedence over auto generated ids');
$w = new MyWidgetForm(array('id_format' => false));
$t->is($w->render('foo'), '', '__construct() can disable id generation');
// ->getLabel() ->setLabel()
$t->diag('->getLabel() ->setLabel()');
$w = new MyWidgetForm();
$t->is($w->getLabel(), null, '->getLabel() returns null if no label has been defined');
$w = new MyWidgetForm(array('label' => 'foo'));
$t->is($w->getLabel(), 'foo', '->getLabel() returns the label');
$w->setLabel('bar');
$t->is($w->getLabel(), 'bar', '->setLabel() changes the label');
// ->getDefault() ->setDefault()
$t->diag('->getDefault() ->setDefault()');
$w = new MyWidgetForm();
$t->is($w->getDefault(), null, '->getDefault() returns null if no default value has been defined');
$w = new MyWidgetForm(array('default' => 'foo'));
$t->is($w->getDefault(), 'foo', '->getDefault() returns the default value');
$w->setDefault('bar');
$t->is($w->getDefault(), 'bar', '->setDefault() changes the default value for the widget');
// ->getParent() ->setParent()
$t->diag('->getParent() ->setParent()');
$w = new MyWidgetForm();
$t->is($w->getParent(), null, '->getParent() returns null if no widget schema has been defined');
$w->setParent($ws = new sfWidgetFormSchema());
$t->is($w->getParent(), $ws, '->setParent() associates a widget schema to the widget');
// ->getIdFormat() ->setIdFormat()
$t->diag('->getIdFormat() ->setIdFormat()');
$w = new MyWidgetForm();
$w->setIdFormat('id_%s');
$t->is($w->getIdFormat(), 'id_%s', '->setIdFormat() sets the format for the generated id attribute');
// ->isHidden()
$t->diag('->isHidden()');
$t->is($w->isHidden(), false, '->isHidden() returns false if a widget is not hidden');
$w->setHidden(true);
$t->is($w->isHidden(), true, '->isHidden() returns true if a widget is hidden');
// ->needsMultipartForm()
$t->diag('->needsMultipartForm()');
$t->is($w->needsMultipartForm(), false, '->needsMultipartForm() returns false if the widget does not need a multipart form');
$w = new MyWidgetForm(array('needs_multipart' => true));
$t->is($w->needsMultipartForm(), true, '->needsMultipartForm() returns false if the widget needs a multipart form');
// ->renderTag()
$t->diag('->renderTag()');
$w = new MyWidgetForm();
$t->is($w->renderTag('input'), '', '->renderTag() does not add an id if no name is given');
$t->is($w->renderTag('input', array('id' => 'foo')), '', '->renderTag() does not add an id if one is given');
$t->is($w->renderTag('input', array('name' => 'foo')), '', '->renderTag() adds an id if none is given and a name is given');
$w->setIdFormat('id_%s');
$t->is($w->renderTag('input', array('name' => 'foo')), '', '->renderTag() uses the id_format to generate an id');
sfWidget::setXhtml(false);
$t->is($w->renderTag('input'), '', '->renderTag() does not close tag if not in XHTML mode');
sfWidget::setXhtml(true);
// ->renderContentTag()
$t->diag('->renderContentTag()');
$w = new MyWidgetForm();
$t->is($w->renderContentTag('textarea'), '', '->renderContentTag() does not add an id if no name is given');
$t->is($w->renderContentTag('textarea', '', array('id' => 'foo')), '', '->renderContentTag() does not add an id if one is given');
$t->is($w->renderContentTag('textarea', '', array('name' => 'foo')), '', '->renderContentTag() adds an id if none is given and a name is given');
$w->setIdFormat('id_%s');
$t->is($w->renderContentTag('textarea', '', array('name' => 'foo')), '', '->renderContentTag() uses the id_format to generate an id');
// ->generateId()
$t->diag('->generateId()');
$w = new MyWidgetForm();
$w->setIdFormat('id_for_%s_works');
$t->is($w->generateId('foo'), 'id_for_foo_works', '->setIdFormat() sets the format of the widget id');
$t->is($w->generateId('foo[]'), 'id_for_foo_works', '->generateId() removes the [] from the name');
$t->is($w->generateId('foo[bar][]'), 'id_for_foo_bar_works', '->generateId() replaces [] with _');
$t->is($w->generateId('foo[bar][]', 'test'), 'id_for_foo_bar_test_works', '->generateId() takes the value into account if provided');
$t->is($w->generateId('_foo[bar][]', 'test'), 'id_for__foo_bar_test_works', '->generateId() leaves valid ids');
$w->setIdFormat('id');
$t->is($w->generateId('foo[bar][]', 'test'), 'foo_bar_test', '->generateId() returns the name if the id format does not contain %s');
$w->setIdFormat('%s');
$t->is($w->generateId('_foo[bar][]', 'test'), 'foo_bar_test', '->generateId() removes invalid characters');
$t->is($w->generateId('_foo@bar'), 'foo_bar', '->generateId() removes invalid characters');
$t->is($w->generateId('_____foo@bar'), 'foo_bar', '->generateId() removes invalid characters');