This repository has been archived on 2025-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
drupalcampbristol/vendor/behat/mink/tests/SessionTest.php

313 lines
7.8 KiB
PHP

<?php
namespace Behat\Mink\Tests;
use Behat\Mink\Session;
class SessionTest extends \PHPUnit_Framework_TestCase
{
/**
* @var \PHPUnit_Framework_MockObject_MockObject
*/
private $driver;
private $selectorsHandler;
/**
* Session.
*
* @var Session
*/
private $session;
protected function setUp()
{
$this->driver = $this->getMockBuilder('Behat\Mink\Driver\DriverInterface')->getMock();
$this->selectorsHandler = $this->getMockBuilder('Behat\Mink\Selector\SelectorsHandler')->getMock();
$this->session = new Session($this->driver, $this->selectorsHandler);
}
public function testGetDriver()
{
$this->assertSame($this->driver, $this->session->getDriver());
}
public function testGetPage()
{
$this->assertInstanceOf('Behat\Mink\Element\DocumentElement', $this->session->getPage());
}
public function testGetSelectorsHandler()
{
$this->assertSame($this->selectorsHandler, $this->session->getSelectorsHandler());
}
public function testInstantiateWithoutOptionalDeps()
{
$session = new Session($this->driver);
$this->assertInstanceOf('Behat\Mink\Selector\SelectorsHandler', $session->getSelectorsHandler());
}
public function testIsStarted()
{
$this->driver->expects($this->once())
->method('isStarted')
->will($this->returnValue(true));
$this->assertTrue($this->session->isStarted());
}
public function testStart()
{
$this->driver->expects($this->once())
->method('start');
$this->session->start();
}
public function testStop()
{
$this->driver->expects($this->once())
->method('stop');
$this->session->stop();
}
public function testRestart()
{
$this->driver->expects($this->at(0))
->method('stop');
$this->driver->expects($this->at(1))
->method('start');
$this->session->restart();
}
public function testVisit()
{
$this->driver
->expects($this->once())
->method('visit')
->with($url = 'some_url');
$this->session->visit($url);
}
public function testReset()
{
$this->driver
->expects($this->once())
->method('reset');
$this->session->reset();
}
public function testSetBasicAuth()
{
$this->driver->expects($this->once())
->method('setBasicAuth')
->with('user', 'pass');
$this->session->setBasicAuth('user', 'pass');
}
public function testSetRequestHeader()
{
$this->driver->expects($this->once())
->method('setRequestHeader')
->with('name', 'value');
$this->session->setRequestHeader('name', 'value');
}
public function testGetResponseHeaders()
{
$this->driver
->expects($this->once())
->method('getResponseHeaders')
->will($this->returnValue($ret = array(2, 3, 4)));
$this->assertEquals($ret, $this->session->getResponseHeaders());
}
/**
* @dataProvider provideResponseHeader
*/
public function testGetResponseHeader($expected, $name, array $headers)
{
$this->driver->expects($this->once())
->method('getResponseHeaders')
->willReturn($headers);
$this->assertSame($expected, $this->session->getResponseHeader($name));
}
public function provideResponseHeader()
{
return array(
array('test', 'Mink', array('Mink' => 'test')),
array('test', 'mink', array('Mink' => 'test')),
array('test', 'Mink', array('mink' => 'test')),
array('test', 'Mink', array('Mink' => array('test', 'test2'))),
array(null, 'other', array('Mink' => 'test')),
);
}
public function testSetCookie()
{
$this->driver->expects($this->once())
->method('setCookie')
->with('name', 'value');
$this->session->setCookie('name', 'value');
}
public function testGetCookie()
{
$this->driver->expects($this->once())
->method('getCookie')
->with('name')
->will($this->returnValue('value'));
$this->assertEquals('value', $this->session->getCookie('name'));
}
public function testGetStatusCode()
{
$this->driver
->expects($this->once())
->method('getStatusCode')
->will($this->returnValue($ret = 404));
$this->assertEquals($ret, $this->session->getStatusCode());
}
public function testGetCurrentUrl()
{
$this->driver
->expects($this->once())
->method('getCurrentUrl')
->will($this->returnValue($ret = 'http://some.url'));
$this->assertEquals($ret, $this->session->getCurrentUrl());
}
public function testGetScreenshot()
{
$this->driver->expects($this->once())
->method('getScreenshot')
->will($this->returnValue('screenshot'));
$this->assertEquals('screenshot', $this->session->getScreenshot());
}
public function testGetWindowNames()
{
$this->driver->expects($this->once())
->method('getWindowNames')
->will($this->returnValue($names = array('window 1', 'window 2')));
$this->assertEquals($names, $this->session->getWindowNames());
}
public function testGetWindowName()
{
$this->driver->expects($this->once())
->method('getWindowName')
->will($this->returnValue('name'));
$this->assertEquals('name', $this->session->getWindowName());
}
public function testReload()
{
$this->driver->expects($this->once())
->method('reload');
$this->session->reload();
}
public function testBack()
{
$this->driver->expects($this->once())
->method('back');
$this->session->back();
}
public function testForward()
{
$this->driver->expects($this->once())
->method('forward');
$this->session->forward();
}
public function testSwitchToWindow()
{
$this->driver->expects($this->once())
->method('switchToWindow')
->with('test');
$this->session->switchToWindow('test');
}
public function testSwitchToIFrame()
{
$this->driver->expects($this->once())
->method('switchToIFrame')
->with('test');
$this->session->switchToIFrame('test');
}
public function testExecuteScript()
{
$this->driver
->expects($this->once())
->method('executeScript')
->with($arg = 'JS');
$this->session->executeScript($arg);
}
public function testEvaluateScript()
{
$this->driver
->expects($this->once())
->method('evaluateScript')
->with($arg = 'JS func')
->will($this->returnValue($ret = '23'));
$this->assertEquals($ret, $this->session->evaluateScript($arg));
}
public function testWait()
{
$this->driver
->expects($this->once())
->method('wait')
->with(1000, 'function () {}');
$this->session->wait(1000, 'function () {}');
}
public function testResizeWindow()
{
$this->driver->expects($this->once())
->method('resizeWindow')
->with(800, 600, 'test');
$this->session->resizeWindow(800, 600, 'test');
}
public function testMaximizeWindow()
{
$this->driver->expects($this->once())
->method('maximizeWindow')
->with('test');
$this->session->maximizeWindow('test');
}
}