cakephp2-php8/vendors/simpletest/test/form_test.php
pies da79dff7d7 - merged in Brego's SimpleTest implementation, fixed some of the tests (the Folder test fails to delete one of the test directories on my system, so it's not perfectly clean yet)
- Dispatcher sets a Controller::here variable with the real URL used to access the page, so that tag generators can that use an url (linkTo and formTag for example) use the real url, not guess it from the controller and action names which often fails
- Log class works more reliably and a LogError() shortcut function was added
- Nstring class added, to store string-related functions (there are just four yet, including a random password generator and an string-to-array splitter
- SimpleTest library (with Rephlux) included in /vendors; I've tweaked SimpleScorer::inCli() function, because it didn't work on my setup, it should work everywhere now (it checks for empty REQUEST_METHOD, which should only be empty in CLI)

git-svn-id: https://svn.cakephp.org/repo/trunk/cake@248 3807eeeb-6ff5-0310-8944-8be069107fe0
2005-06-18 23:26:35 +00:00

326 lines
No EOL
16 KiB
PHP

<?php
// $Id$
require_once(dirname(__FILE__) . '/../form.php');
require_once(dirname(__FILE__) . '/../encoding.php');
class TestOfForm extends UnitTestCase {
function testFormAttributes() {
$tag = &new SimpleFormTag(array('method' => 'GET', 'action' => 'here.php', 'id' => '33'));
$form = &new SimpleForm($tag, new SimpleUrl('http://host/a/index.html'));
$this->assertEqual($form->getMethod(), 'get');
$this->assertEqual(
$form->getAction(),
new SimpleUrl('http://host/a/here.php'));
$this->assertIdentical($form->getId(), '33');
$this->assertNull($form->getValue('a'));
}
function testEmptyAction() {
$tag = &new SimpleFormTag(array('method' => 'GET', 'action' => '', 'id' => '33'));
$form = &new SimpleForm($tag, new SimpleUrl('http://host/a/index.html'));
$this->assertEqual(
$form->getAction(),
new SimpleUrl('http://host/a/index.html'));
}
function testMissingAction() {
$tag = &new SimpleFormTag(array('method' => 'GET', 'id' => '33'));
$form = &new SimpleForm($tag, new SimpleUrl('http://host/a/index.html'));
$this->assertEqual(
$form->getAction(),
new SimpleUrl('http://host/a/index.html'));
}
function testRootAction() {
$tag = &new SimpleFormTag(array('method' => 'GET', 'action' => '/', 'id' => '33'));
$form = &new SimpleForm($tag, new SimpleUrl('http://host/a/index.html'));
$this->assertEqual(
$form->getAction(),
new SimpleUrl('http://host/'));
}
function testDefaultFrameTargetOnForm() {
$tag = &new SimpleFormTag(array('method' => 'GET', 'action' => 'here.php', 'id' => '33'));
$form = &new SimpleForm($tag, new SimpleUrl('http://host/a/index.html'));
$form->setDefaultTarget('frame');
$expected = new SimpleUrl('http://host/a/here.php');
$expected->setTarget('frame');
$this->assertEqual($form->getAction(), $expected);
}
function testTextWidget() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$form->addWidget(new SimpleTextTag(
array('name' => 'me', 'type' => 'text', 'value' => 'Myself')));
$this->assertIdentical($form->getValue('me'), 'Myself');
$this->assertTrue($form->setField('me', 'Not me'));
$this->assertFalse($form->setField('not_present', 'Not me'));
$this->assertIdentical($form->getValue('me'), 'Not me');
$this->assertNull($form->getValue('not_present'));
}
function testTextWidgetById() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$form->addWidget(new SimpleTextTag(
array('name' => 'me', 'type' => 'text', 'value' => 'Myself', 'id' => 50)));
$this->assertIdentical($form->getValueById(50), 'Myself');
$this->assertTrue($form->setFieldById(50, 'Not me'));
$this->assertIdentical($form->getValueById(50), 'Not me');
}
function testSubmitEmpty() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$this->assertIdentical($form->submit(), new SimpleFormEncoding());
}
function testSubmitButton() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('http://host'));
$form->addWidget(new SimpleSubmitTag(
array('type' => 'submit', 'name' => 'go', 'value' => 'Go!', 'id' => '9')));
$this->assertTrue($form->hasSubmitName('go'));
$this->assertEqual($form->getValue('go'), 'Go!');
$this->assertEqual($form->getValueById(9), 'Go!');
$this->assertEqual(
$form->submitButtonByName('go'),
new SimpleFormEncoding(array('go' => 'Go!')));
$this->assertEqual(
$form->submitButtonByLabel('Go!'),
new SimpleFormEncoding(array('go' => 'Go!')));
$this->assertEqual(
$form->submitButtonById(9),
new SimpleFormEncoding(array('go' => 'Go!')));
}
function testSubmitWithAdditionalParameters() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('http://host'));
$form->addWidget(new SimpleSubmitTag(
array('type' => 'submit', 'name' => 'go', 'value' => 'Go!', 'id' => '9')));
$this->assertEqual(
$form->submitButtonByName('go', array('a' => 'A')),
new SimpleFormEncoding(array('go' => 'Go!', 'a' => 'A')));
$this->assertEqual(
$form->submitButtonByLabel('Go!', array('a' => 'A')),
new SimpleFormEncoding(array('go' => 'Go!', 'a' => 'A')));
$this->assertEqual(
$form->submitButtonById(9, array('a' => 'A')),
new SimpleFormEncoding(array('go' => 'Go!', 'a' => 'A')));
}
function testSubmitButtonWithLabelOfSubmit() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('http://host'));
$form->addWidget(new SimpleSubmitTag(
array('type' => 'submit', 'name' => 'test', 'value' => 'Submit', 'id' => '9')));
$this->assertTrue($form->hasSubmitName('test'));
$this->assertEqual($form->getValue('test'), 'Submit');
$this->assertEqual($form->getValueById(9), 'Submit');
$this->assertEqual(
$form->submitButtonByName('test'),
new SimpleFormEncoding(array('test' => 'Submit')));
$this->assertEqual(
$form->submitButtonByLabel('Submit'),
new SimpleFormEncoding(array('test' => 'Submit')));
$this->assertEqual(
$form->submitButtonById(9),
new SimpleFormEncoding(array('test' => 'Submit')));
}
function testSubmitButtonWithWhitespacePaddedLabelOfSubmit() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('http://host'));
$form->addWidget(new SimpleSubmitTag(
array('type' => 'submit', 'name' => 'test', 'value' => ' Submit ', 'id' => '9')));
$this->assertEqual($form->getValue('test'), ' Submit ');
$this->assertEqual($form->getValueById(9), ' Submit ');
$this->assertEqual(
$form->submitButtonByLabel('Submit'),
new SimpleFormEncoding(array('test' => ' Submit ')));
}
function testImageSubmitButton() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$form->addWidget(new SimpleImageSubmitTag(array(
'type' => 'image',
'src' => 'source.jpg',
'name' => 'go',
'alt' => 'Go!',
'id' => '9')));
$this->assertTrue($form->hasImageLabel('Go!'));
$this->assertEqual(
$form->submitImageByLabel('Go!', 100, 101),
new SimpleFormEncoding(array('go.x' => 100, 'go.y' => 101)));
$this->assertTrue($form->hasImageName('go'));
$this->assertEqual(
$form->submitImageByName('go', 100, 101),
new SimpleFormEncoding(array('go.x' => 100, 'go.y' => 101)));
$this->assertTrue($form->hasImageId(9));
$this->assertEqual(
$form->submitImageById(9, 100, 101),
new SimpleFormEncoding(array('go.x' => 100, 'go.y' => 101)));
}
function testImageSubmitButtonWithAdditionalData() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$form->addWidget(new SimpleImageSubmitTag(array(
'type' => 'image',
'src' => 'source.jpg',
'name' => 'go',
'alt' => 'Go!',
'id' => '9')));
$this->assertEqual(
$form->submitImageByLabel('Go!', 100, 101, array('a' => 'A')),
new SimpleFormEncoding(array('go.x' => 100, 'go.y' => 101, 'a' => 'A')));
$this->assertTrue($form->hasImageName('go'));
$this->assertEqual(
$form->submitImageByName('go', 100, 101, array('a' => 'A')),
new SimpleFormEncoding(array('go.x' => 100, 'go.y' => 101, 'a' => 'A')));
$this->assertTrue($form->hasImageId(9));
$this->assertEqual(
$form->submitImageById(9, 100, 101, array('a' => 'A')),
new SimpleFormEncoding(array('go.x' => 100, 'go.y' => 101, 'a' => 'A')));
}
function testButtonTag() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('http://host'));
$widget = &new SimpleButtonTag(
array('type' => 'submit', 'name' => 'go', 'value' => 'Go', 'id' => '9'));
$widget->addContent('Go!');
$form->addWidget($widget);
$this->assertTrue($form->hasSubmitName('go'));
$this->assertTrue($form->hasSubmitLabel('Go!'));
$this->assertEqual(
$form->submitButtonByName('go'),
new SimpleFormEncoding(array('go' => 'Go')));
$this->assertEqual(
$form->submitButtonByLabel('Go!'),
new SimpleFormEncoding(array('go' => 'Go')));
$this->assertEqual(
$form->submitButtonById(9),
new SimpleFormEncoding(array('go' => 'Go')));
}
function testSingleSelectFieldSubmitted() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$select = &new SimpleSelectionTag(array('name' => 'a'));
$select->addTag(new SimpleOptionTag(
array('value' => 'aaa', 'selected' => '')));
$form->addWidget($select);
$this->assertIdentical(
$form->submit(),
new SimpleFormEncoding(array('a' => 'aaa')));
}
function testUnchecked() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$form->addWidget(new SimpleCheckboxTag(
array('name' => 'me', 'type' => 'checkbox')));
$this->assertIdentical($form->getValue('me'), false);
$this->assertTrue($form->setField('me', 'on'));
$this->assertEqual($form->getValue('me'), 'on');
$this->assertFalse($form->setField('me', 'other'));
$this->assertEqual($form->getValue('me'), 'on');
}
function testChecked() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$form->addWidget(new SimpleCheckboxTag(
array('name' => 'me', 'value' => 'a', 'type' => 'checkbox', 'checked' => '')));
$this->assertIdentical($form->getValue('me'), 'a');
$this->assertFalse($form->setField('me', 'on'));
$this->assertEqual($form->getValue('me'), 'a');
$this->assertTrue($form->setField('me', false));
$this->assertEqual($form->getValue('me'), false);
}
function testSingleUncheckedRadioButton() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$form->addWidget(new SimpleRadioButtonTag(
array('name' => 'me', 'value' => 'a', 'type' => 'radio')));
$this->assertIdentical($form->getValue('me'), false);
$this->assertTrue($form->setField('me', 'a'));
$this->assertIdentical($form->getValue('me'), 'a');
}
function testSingleCheckedRadioButton() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$form->addWidget(new SimpleRadioButtonTag(
array('name' => 'me', 'value' => 'a', 'type' => 'radio', 'checked' => '')));
$this->assertIdentical($form->getValue('me'), 'a');
$this->assertFalse($form->setField('me', 'other'));
}
function testUncheckedRadioButtons() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$form->addWidget(new SimpleRadioButtonTag(
array('name' => 'me', 'value' => 'a', 'type' => 'radio')));
$form->addWidget(new SimpleRadioButtonTag(
array('name' => 'me', 'value' => 'b', 'type' => 'radio')));
$this->assertIdentical($form->getValue('me'), false);
$this->assertTrue($form->setField('me', 'a'));
$this->assertIdentical($form->getValue('me'), 'a');
$this->assertTrue($form->setField('me', 'b'));
$this->assertIdentical($form->getValue('me'), 'b');
$this->assertFalse($form->setField('me', 'c'));
$this->assertIdentical($form->getValue('me'), 'b');
}
function testCheckedRadioButtons() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$form->addWidget(new SimpleRadioButtonTag(
array('name' => 'me', 'value' => 'a', 'type' => 'radio')));
$form->addWidget(new SimpleRadioButtonTag(
array('name' => 'me', 'value' => 'b', 'type' => 'radio', 'checked' => '')));
$this->assertIdentical($form->getValue('me'), 'b');
$this->assertTrue($form->setField('me', 'a'));
$this->assertIdentical($form->getValue('me'), 'a');
}
function testMultipleFieldsWithSameKey() {
$form = &new SimpleForm(
new SimpleFormTag(array()),
new SimpleUrl('htp://host'));
$form->addWidget(new SimpleCheckboxTag(
array('name' => 'a', 'type' => 'checkbox', 'value' => 'me')));
$form->addWidget(new SimpleCheckboxTag(
array('name' => 'a', 'type' => 'checkbox', 'value' => 'you')));
$this->assertIdentical($form->getValue('a'), false);
$this->assertTrue($form->setField('a', 'me'));
$this->assertIdentical($form->getValue('a'), 'me');
}
}
?>