View source
<?php
namespace Behat\Mink\Tests\Driver\Form;
use Behat\Mink\Tests\Driver\TestCase;
class GeneralTest extends TestCase {
public function testIssue212() {
$session = $this
->getSession();
$session
->visit($this
->pathTo('/issue212.html'));
$field = $this
->findById('poney-button');
$this
->assertEquals('poney', $field
->getValue());
}
public function testBasicForm() {
$this
->getSession()
->visit($this
->pathTo('/basic_form.html'));
$webAssert = $this
->getAssertSession();
$page = $this
->getSession()
->getPage();
$this
->assertEquals('Basic Form Page', $webAssert
->elementExists('css', 'h1')
->getText());
$firstname = $webAssert
->fieldExists('first_name');
$lastname = $webAssert
->fieldExists('lastn');
$this
->assertEquals('Firstname', $firstname
->getValue());
$this
->assertEquals('Lastname', $lastname
->getValue());
$firstname
->setValue('Konstantin');
$page
->fillField('last_name', 'Kudryashov');
$this
->assertEquals('Konstantin', $firstname
->getValue());
$this
->assertEquals('Kudryashov', $lastname
->getValue());
$page
->findButton('Reset')
->click();
$this
->assertEquals('Firstname', $firstname
->getValue());
$this
->assertEquals('Lastname', $lastname
->getValue());
$firstname
->setValue('Konstantin');
$page
->fillField('last_name', 'Kudryashov');
$page
->findButton('Save')
->click();
if ($this
->safePageWait(5000, 'document.getElementById("first") !== null')) {
$this
->assertEquals('Anket for Konstantin', $webAssert
->elementExists('css', 'h1')
->getText());
$this
->assertEquals('Firstname: Konstantin', $webAssert
->elementExists('css', '#first')
->getText());
$this
->assertEquals('Lastname: Kudryashov', $webAssert
->elementExists('css', '#last')
->getText());
}
}
public function testFormSubmitWays($submitVia) {
$session = $this
->getSession();
$session
->visit($this
->pathTo('/basic_form.html'));
$page = $session
->getPage();
$webAssert = $this
->getAssertSession();
$firstname = $webAssert
->fieldExists('first_name');
$firstname
->setValue('Konstantin');
$page
->findButton($submitVia)
->click();
if ($this
->safePageWait(5000, 'document.getElementById("first") !== null')) {
$this
->assertEquals('Firstname: Konstantin', $webAssert
->elementExists('css', '#first')
->getText());
}
else {
$this
->fail('Form was never submitted');
}
}
public function formSubmitWaysDataProvider() {
return array(
array(
'Save',
),
array(
'input-type-image',
),
array(
'button-without-type',
),
array(
'button-type-submit',
),
);
}
public function testFormSubmit() {
$session = $this
->getSession();
$session
->visit($this
->pathTo('/basic_form.html'));
$webAssert = $this
->getAssertSession();
$webAssert
->fieldExists('first_name')
->setValue('Konstantin');
$webAssert
->elementExists('xpath', 'descendant-or-self::form[1]')
->submit();
if ($this
->safePageWait(5000, 'document.getElementById("first") !== null')) {
$this
->assertEquals('Firstname: Konstantin', $webAssert
->elementExists('css', '#first')
->getText());
}
}
public function testFormSubmitWithoutButton() {
$session = $this
->getSession();
$session
->visit($this
->pathTo('/form_without_button.html'));
$webAssert = $this
->getAssertSession();
$webAssert
->fieldExists('first_name')
->setValue('Konstantin');
$webAssert
->elementExists('xpath', 'descendant-or-self::form[1]')
->submit();
if ($this
->safePageWait(5000, 'document.getElementById("first") !== null')) {
$this
->assertEquals('Firstname: Konstantin', $webAssert
->elementExists('css', '#first')
->getText());
}
}
public function testBasicGetForm() {
$this
->getSession()
->visit($this
->pathTo('/basic_get_form.php'));
$webAssert = $this
->getAssertSession();
$page = $this
->getSession()
->getPage();
$this
->assertEquals('Basic Get Form Page', $webAssert
->elementExists('css', 'h1')
->getText());
$search = $webAssert
->fieldExists('q');
$search
->setValue('some#query');
$page
->pressButton('Find');
$div = $webAssert
->elementExists('css', 'div');
$this
->assertEquals('some#query', $div
->getText());
}
public function testAdvancedForm() {
$this
->getSession()
->visit($this
->pathTo('/advanced_form.html'));
$page = $this
->getSession()
->getPage();
$page
->fillField('first_name', 'ever');
$page
->fillField('last_name', 'zet');
$page
->pressButton('Register');
$this
->assertContains('no file', $page
->getContent());
$this
->getSession()
->visit($this
->pathTo('/advanced_form.html'));
$webAssert = $this
->getAssertSession();
$page = $this
->getSession()
->getPage();
$this
->assertEquals('ADvanced Form Page', $webAssert
->elementExists('css', 'h1')
->getText());
$firstname = $webAssert
->fieldExists('first_name');
$lastname = $webAssert
->fieldExists('lastn');
$email = $webAssert
->fieldExists('Your email:');
$select = $webAssert
->fieldExists('select_number');
$sex = $webAssert
->fieldExists('sex');
$maillist = $webAssert
->fieldExists('mail_list');
$agreement = $webAssert
->fieldExists('agreement');
$notes = $webAssert
->fieldExists('notes');
$about = $webAssert
->fieldExists('about');
$this
->assertEquals('Firstname', $firstname
->getValue());
$this
->assertEquals('Lastname', $lastname
->getValue());
$this
->assertEquals('your@email.com', $email
->getValue());
$this
->assertEquals('20', $select
->getValue());
$this
->assertEquals('w', $sex
->getValue());
$this
->assertEquals('original notes', $notes
->getValue());
$this
->assertEquals('on', $maillist
->getValue());
$this
->assertNull($agreement
->getValue());
$this
->assertTrue($maillist
->isChecked());
$this
->assertFalse($agreement
->isChecked());
$agreement
->check();
$this
->assertTrue($agreement
->isChecked());
$maillist
->uncheck();
$this
->assertFalse($maillist
->isChecked());
$select
->selectOption('thirty');
$this
->assertEquals('30', $select
->getValue());
$sex
->selectOption('m');
$this
->assertEquals('m', $sex
->getValue());
$notes
->setValue('new notes');
$this
->assertEquals('new notes', $notes
->getValue());
$about
->attachFile($this
->mapRemoteFilePath(__DIR__ . '/../../web-fixtures/some_file.txt'));
$button = $page
->findButton('Register');
$this
->assertNotNull($button);
$page
->fillField('first_name', 'Foo "item"');
$page
->fillField('last_name', 'Bar');
$page
->fillField('Your email:', 'ever.zet@gmail.com');
$this
->assertEquals('Foo "item"', $firstname
->getValue());
$this
->assertEquals('Bar', $lastname
->getValue());
$button
->press();
if ($this
->safePageWait(5000, 'document.getElementsByTagName("title") !== null')) {
$out = <<<OUT
array (
'agreement' = 'on',
'email' = 'ever.zet@gmail.com',
'first_name' = 'Foo "item"',
'last_name' = 'Bar',
'notes' = 'new notes',
'select_number' = '30',
'sex' = 'm',
'submit' = 'Register',
)
some_file.txt
1 uploaded file
OUT;
$this
->assertContains($out, $page
->getContent());
}
}
public function testMultiInput() {
$this
->getSession()
->visit($this
->pathTo('/multi_input_form.html'));
$page = $this
->getSession()
->getPage();
$webAssert = $this
->getAssertSession();
$this
->assertEquals('Multi input Test', $webAssert
->elementExists('css', 'h1')
->getText());
$first = $webAssert
->fieldExists('First');
$second = $webAssert
->fieldExists('Second');
$third = $webAssert
->fieldExists('Third');
$this
->assertEquals('tag1', $first
->getValue());
$this
->assertSame('tag2', $second
->getValue());
$this
->assertEquals('tag1', $third
->getValue());
$first
->setValue('tag2');
$this
->assertEquals('tag2', $first
->getValue());
$this
->assertSame('tag2', $second
->getValue());
$this
->assertEquals('tag1', $third
->getValue());
$second
->setValue('one');
$this
->assertEquals('tag2', $first
->getValue());
$this
->assertSame('one', $second
->getValue());
$third
->setValue('tag3');
$this
->assertEquals('tag2', $first
->getValue());
$this
->assertSame('one', $second
->getValue());
$this
->assertEquals('tag3', $third
->getValue());
$button = $page
->findButton('Register');
$this
->assertNotNull($button);
$button
->press();
$space = ' ';
$out = <<<OUT
'tags' ={<span class="php-variable">$space</span>}
array (
0 = 'tag2',
1 = 'one',
2 = 'tag3',
),
OUT;
$this
->assertContains($out, $page
->getContent());
}
public function testAdvancedFormSecondSubmit() {
$this
->getSession()
->visit($this
->pathTo('/advanced_form.html'));
$page = $this
->getSession()
->getPage();
$button = $page
->findButton('Login');
$this
->assertNotNull($button);
$button
->press();
$toSearch = array(
"'agreement' = 'off',",
"'submit' = 'Login',",
'no file',
);
$pageContent = $page
->getContent();
foreach ($toSearch as $searchString) {
$this
->assertContains($searchString, $pageContent);
}
}
public function testSubmitEmptyTextarea() {
$this
->getSession()
->visit($this
->pathTo('/empty_textarea.html'));
$page = $this
->getSession()
->getPage();
$page
->pressButton('Save');
$toSearch = array(
"'textarea' = '',",
"'submit' = 'Save',",
'no file',
);
$pageContent = $page
->getContent();
foreach ($toSearch as $searchString) {
$this
->assertContains($searchString, $pageContent);
}
}
}