document = new DocumentElement($this->session); } /** * @group legacy */ public function testGetSession() { $this->assertEquals($this->session, $this->document->getSession()); } public function testFindAll() { $xpath = 'h3[a]'; $css = 'h3 > a'; $this->driver ->expects($this->exactly(2)) ->method('find') ->will($this->returnValueMap(array( array('//html/'.$xpath, array(2, 3, 4)), array('//html/'.$css, array(1, 2)), ))); $this->selectors ->expects($this->exactly(2)) ->method('selectorToXpath') ->will($this->returnValueMap(array( array('xpath', $xpath, $xpath), array('css', $css, $css), ))); $this->assertEquals(3, count($this->document->findAll('xpath', $xpath))); $this->assertEquals(2, count($this->document->findAll('css', $css))); } public function testFind() { $this->driver ->expects($this->exactly(3)) ->method('find') ->with('//html/h3[a]') ->will($this->onConsecutiveCalls(array(2, 3, 4), array(1, 2), array())); $xpath = 'h3[a]'; $css = 'h3 > a'; $this->selectors ->expects($this->exactly(3)) ->method('selectorToXpath') ->will($this->returnValueMap(array( array('xpath', $xpath, $xpath), array('xpath', $xpath, $xpath), array('css', $css, $xpath), ))); $this->assertEquals(2, $this->document->find('xpath', $xpath)); $this->assertEquals(1, $this->document->find('css', $css)); $this->assertNull($this->document->find('xpath', $xpath)); } public function testFindField() { $this->mockNamedFinder( '//field', array('field1', 'field2', 'field3'), array('field', 'some field') ); $this->assertEquals('field1', $this->document->findField('some field')); $this->assertEquals(null, $this->document->findField('some field')); } public function testFindLink() { $this->mockNamedFinder( '//link', array('link1', 'link2', 'link3'), array('link', 'some link') ); $this->assertEquals('link1', $this->document->findLink('some link')); $this->assertEquals(null, $this->document->findLink('some link')); } public function testFindButton() { $this->mockNamedFinder( '//button', array('button1', 'button2', 'button3'), array('button', 'some button') ); $this->assertEquals('button1', $this->document->findButton('some button')); $this->assertEquals(null, $this->document->findButton('some button')); } public function testFindById() { $xpath = '//*[@id=some-item-2]'; $this->mockNamedFinder($xpath, array(array('id2', 'id3'), array()), array('id', 'some-item-2')); $this->assertEquals('id2', $this->document->findById('some-item-2')); $this->assertEquals(null, $this->document->findById('some-item-2')); } public function testHasSelector() { $this->driver ->expects($this->exactly(2)) ->method('find') ->with('//html/some xpath') ->will($this->onConsecutiveCalls(array('id2', 'id3'), array())); $this->selectors ->expects($this->exactly(2)) ->method('selectorToXpath') ->with('xpath', 'some xpath') ->will($this->returnValue('some xpath')); $this->assertTrue($this->document->has('xpath', 'some xpath')); $this->assertFalse($this->document->has('xpath', 'some xpath')); } public function testHasContent() { $this->mockNamedFinder( '//some content', array('item1', 'item2'), array('content', 'some content') ); $this->assertTrue($this->document->hasContent('some content')); $this->assertFalse($this->document->hasContent('some content')); } public function testHasLink() { $this->mockNamedFinder( '//link', array('link1', 'link2', 'link3'), array('link', 'some link') ); $this->assertTrue($this->document->hasLink('some link')); $this->assertFalse($this->document->hasLink('some link')); } public function testHasButton() { $this->mockNamedFinder( '//button', array('button1', 'button2', 'button3'), array('button', 'some button') ); $this->assertTrue($this->document->hasButton('some button')); $this->assertFalse($this->document->hasButton('some button')); } public function testHasField() { $this->mockNamedFinder( '//field', array('field1', 'field2', 'field3'), array('field', 'some field') ); $this->assertTrue($this->document->hasField('some field')); $this->assertFalse($this->document->hasField('some field')); } public function testHasCheckedField() { $checkbox = $this->getMockBuilder('Behat\Mink\Element\NodeElement') ->disableOriginalConstructor() ->getMock(); $checkbox ->expects($this->exactly(2)) ->method('isChecked') ->will($this->onConsecutiveCalls(true, false)); $this->mockNamedFinder( '//field', array(array($checkbox), array(), array($checkbox)), array('field', 'some checkbox'), 3 ); $this->assertTrue($this->document->hasCheckedField('some checkbox')); $this->assertFalse($this->document->hasCheckedField('some checkbox')); $this->assertFalse($this->document->hasCheckedField('some checkbox')); } public function testHasUncheckedField() { $checkbox = $this->getMockBuilder('Behat\Mink\Element\NodeElement') ->disableOriginalConstructor() ->getMock(); $checkbox ->expects($this->exactly(2)) ->method('isChecked') ->will($this->onConsecutiveCalls(true, false)); $this->mockNamedFinder( '//field', array(array($checkbox), array(), array($checkbox)), array('field', 'some checkbox'), 3 ); $this->assertFalse($this->document->hasUncheckedField('some checkbox')); $this->assertFalse($this->document->hasUncheckedField('some checkbox')); $this->assertTrue($this->document->hasUncheckedField('some checkbox')); } public function testHasSelect() { $this->mockNamedFinder( '//select', array('select'), array('select', 'some select field') ); $this->assertTrue($this->document->hasSelect('some select field')); $this->assertFalse($this->document->hasSelect('some select field')); } public function testHasTable() { $this->mockNamedFinder( '//table', array('table'), array('table', 'some table') ); $this->assertTrue($this->document->hasTable('some table')); $this->assertFalse($this->document->hasTable('some table')); } public function testClickLink() { $node = $this->getMockBuilder('Behat\Mink\Element\NodeElement') ->disableOriginalConstructor() ->getMock(); $node ->expects($this->once()) ->method('click'); $this->mockNamedFinder( '//link', array($node), array('link', 'some link') ); $this->document->clickLink('some link'); $this->setExpectedException('Behat\Mink\Exception\ElementNotFoundException'); $this->document->clickLink('some link'); } public function testClickButton() { $node = $this->getMockBuilder('Behat\Mink\Element\NodeElement') ->disableOriginalConstructor() ->getMock(); $node ->expects($this->once()) ->method('press'); $this->mockNamedFinder( '//button', array($node), array('button', 'some button') ); $this->document->pressButton('some button'); $this->setExpectedException('Behat\Mink\Exception\ElementNotFoundException'); $this->document->pressButton('some button'); } public function testFillField() { $node = $this->getMockBuilder('Behat\Mink\Element\NodeElement') ->disableOriginalConstructor() ->getMock(); $node ->expects($this->once()) ->method('setValue') ->with('some val'); $this->mockNamedFinder( '//field', array($node), array('field', 'some field') ); $this->document->fillField('some field', 'some val'); $this->setExpectedException('Behat\Mink\Exception\ElementNotFoundException'); $this->document->fillField('some field', 'some val'); } public function testCheckField() { $node = $this->getMockBuilder('Behat\Mink\Element\NodeElement') ->disableOriginalConstructor() ->getMock(); $node ->expects($this->once()) ->method('check'); $this->mockNamedFinder( '//field', array($node), array('field', 'some field') ); $this->document->checkField('some field'); $this->setExpectedException('Behat\Mink\Exception\ElementNotFoundException'); $this->document->checkField('some field'); } public function testUncheckField() { $node = $this->getMockBuilder('Behat\Mink\Element\NodeElement') ->disableOriginalConstructor() ->getMock(); $node ->expects($this->once()) ->method('uncheck'); $this->mockNamedFinder( '//field', array($node), array('field', 'some field') ); $this->document->uncheckField('some field'); $this->setExpectedException('Behat\Mink\Exception\ElementNotFoundException'); $this->document->uncheckField('some field'); } public function testSelectField() { $node = $this->getMockBuilder('Behat\Mink\Element\NodeElement') ->disableOriginalConstructor() ->getMock(); $node ->expects($this->once()) ->method('selectOption') ->with('option2'); $this->mockNamedFinder( '//field', array($node), array('field', 'some field') ); $this->document->selectFieldOption('some field', 'option2'); $this->setExpectedException('Behat\Mink\Exception\ElementNotFoundException'); $this->document->selectFieldOption('some field', 'option2'); } public function testAttachFileToField() { $node = $this->getMockBuilder('Behat\Mink\Element\NodeElement') ->disableOriginalConstructor() ->getMock(); $node ->expects($this->once()) ->method('attachFile') ->with('/path/to/file'); $this->mockNamedFinder( '//field', array($node), array('field', 'some field') ); $this->document->attachFileToField('some field', '/path/to/file'); $this->setExpectedException('Behat\Mink\Exception\ElementNotFoundException'); $this->document->attachFileToField('some field', '/path/to/file'); } public function testGetContent() { $expects = 'page content'; $this->driver ->expects($this->once()) ->method('getContent') ->will($this->returnValue($expects)); $this->assertEquals($expects, $this->document->getContent()); } public function testGetText() { $expects = 'val1'; $this->driver ->expects($this->once()) ->method('getText') ->with('//html') ->will($this->returnValue($expects)); $this->assertEquals($expects, $this->document->getText()); } public function testGetHtml() { $expects = 'val1'; $this->driver ->expects($this->once()) ->method('getHtml') ->with('//html') ->will($this->returnValue($expects)); $this->assertEquals($expects, $this->document->getHtml()); } public function testGetOuterHtml() { $expects = 'val1'; $this->driver ->expects($this->once()) ->method('getOuterHtml') ->with('//html') ->will($this->returnValue($expects)); $this->assertEquals($expects, $this->document->getOuterHtml()); } }