Completed
Push — master ( 1da492...320203 )
by Henry
07:00
created

tests/acceptance/InstallationTest.php (1 issue)

Severity

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
namespace Redaxscript\Tests;
3
4
use Facebook\WebDriver\WebDriverBy;
5
use Facebook\WebDriver\WebDriverExpectedCondition;
6
use Facebook\WebDriver\WebDriverSelect;
7
8
/**
9
 * InstallationTest
10
 *
11
 * @since 4.0.0
12
 *
13
 * @package Redaxscript
14
 * @category Tests
15
 * @author Henry Ruhs
16
 */
17
18
class InstallationTest extends TestCaseAbstract
19
{
20
	/**
21
	 * setUp
22
	 *
23
	 * @since 4.0.0
24
	 */
25
26
	public function setUp() : void
27
	{
28
		parent::setUp();
29
		$this->_driver->get('http://localhost:8000/install.php');
30
	}
31
32
	/**
33
	 * testTitle
34
	 *
35
	 * @since 4.0.0
36
	 */
37
38
	public function testTitle() : void
39
	{
40
		/* expect and actual */
41
42
		$expect = $this->_language->get('installation');
43
		$actual = $this->_driver->getTitle();
44
45
		/* compare */
46
47
		$this->assertEquals($expect, $actual);
48
	}
49
50
	/**
51
	 * testBehaviour
52
	 *
53
	 * @since 4.0.0
54
	 */
55
56
	public function testBehaviour() : void
57
	{
58
		/* setup */
59
60
		$formElement = $this->_driver->findElement(WebDriverBy::tagName('form'));
61
		$dbHostElement = $formElement->findElement(WebDriverBy::id('db-host'));
62
		$dbTypeSelect = new WebDriverSelect($formElement->findElement(WebDriverBy::id('db-type')));
63
		$dbNameElement = $formElement->findElement(WebDriverBy::id('db-name'));
64
		$dbUserElement = $formElement->findElement(WebDriverBy::id('db-user'));
65
		$dbPasswordElement = $formElement->findElement(WebDriverBy::id('db-password'));
66
		$dbPrefixElement = $formElement->findElement(WebDriverBy::id('db-prefix'));
67
		$adminNameElement = $formElement->findElement(WebDriverBy::id('admin-name'));
68
		$adminUserElement = $formElement->findElement(WebDriverBy::id('admin-user'));
69
		$adminPasswordElement = $formElement->findElement(WebDriverBy::id('admin-password'));
70
		$adminEmailElement = $formElement->findElement(WebDriverBy::id('admin-email'));
71
		$labelAccountElement =  $formElement->findElement(WebDriverBy::cssSelector('[for*="Account"]'));
72
73
		/* compare */
74
75
		$this->assertFalse($adminNameElement->isDisplayed());
76
		$this->assertFalse($adminUserElement->isDisplayed());
77
		$this->assertFalse($adminPasswordElement->isDisplayed());
78
		$this->assertFalse($adminEmailElement->isDisplayed());
79
80
		/* interact and compare */
81
82
		$dbTypeSelect->selectByValue('sqlite');
83
		$this->assertTrue($dbHostElement->isDisplayed());
84
		$this->assertFalse($dbNameElement->isDisplayed());
85
		$this->assertFalse($dbUserElement->isDisplayed());
86
		$this->assertFalse($dbPasswordElement->isDisplayed());
87
		$this->assertTrue($dbPrefixElement->isDisplayed());
88
89
		/* interact and compare */
90
91
		$dbTypeSelect->selectByValue('mysql');
92
		$this->assertTrue($dbHostElement->isDisplayed());
93
		$this->assertTrue($dbNameElement->isDisplayed());
94
		$this->assertTrue($dbUserElement->isDisplayed());
95
		$this->assertTrue($dbPasswordElement->isDisplayed());
96
		$this->assertTrue($dbPrefixElement->isDisplayed());
97
98
		/* interact and compare */
99
100
		$labelAccountElement->click();
101
		$this->assertTrue($adminNameElement->isDisplayed());
102
		$this->assertTrue($adminUserElement->isDisplayed());
103
		$this->assertTrue($adminPasswordElement->isDisplayed());
104
		$this->assertTrue($adminEmailElement->isDisplayed());
105
	}
106
107
	/**
108
	 * testInstall
109
	 *
110
	 * @since 4.0.0
111
	 */
112
113
	public function testInstall() : void
114
	{
115
		/* setup */
116
117
		$formElement = $this->_driver->findElement(WebDriverBy::tagName('form'));
118
		$dbHostElement = $formElement->findElement(WebDriverBy::id('db-host'));
119
		$dbTypeSelect = new WebDriverSelect($formElement->findElement(WebDriverBy::id('db-type')));
120
		$dbPrefixElement = $formElement->findElement(WebDriverBy::id('db-prefix'));
121
		$adminNameElement = $formElement->findElement(WebDriverBy::id('admin-name'));
122
		$adminUserElement = $formElement->findElement(WebDriverBy::id('admin-user'));
123
		$adminPasswordElement = $formElement->findElement(WebDriverBy::id('admin-password'));
124
		$adminEmailElement = $formElement->findElement(WebDriverBy::id('admin-email'));
125
		$labelAccountElement =  $formElement->findElement(WebDriverBy::cssSelector('[for*="Account"]'));
126
		$buttonElement = $formElement->findElement(WebDriverBy::tagName('button'));
127
128
		/* interact */
129
130
		$dbTypeSelect->selectByValue('sqlite');
131
		$dbHostElement->sendKeys('build/test.sqlite');
132
		$dbPrefixElement->sendKeys('test_');
133
		$labelAccountElement->click();
134
		$adminNameElement->sendKeys('Test');
135
		$adminUserElement->sendKeys('test');
136
		$adminPasswordElement->sendKeys('test');
137
		$adminEmailElement->sendKeys('[email protected]');
138
		$buttonElement->click();
139
140
		/* compare */
141
142
		$this->_driver->wait(5)->until(WebDriverExpectedCondition::urlIs('http://localhost:8000/index.php'));
0 ignored issues
show
\Facebook\WebDriver\WebD...alhost:8000/index.php') is of type object<Facebook\WebDrive...riverExpectedCondition>, but the function expects a callable.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
143
		$this->expectNotToPerformAssertions();
144
	}
145
}
146