Completed
Push — master ( 16ddfb...0ea243 )
by Henry
09:18
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
		/* prepare */
59
60
		$formElement = $this->_driver->findElement(WebDriverBy::tagName('form'));
61
		$dbHostElement = $formElement->findElement(WebDriverBy::id('db-host'));
62
		$dbTypeElement = $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
		/* setup */
74
75
		$dbTypeSelect = new WebDriverSelect($dbTypeElement);
76
77
		/* compare */
78
79
		$this->assertFalse($adminNameElement->isDisplayed());
80
		$this->assertFalse($adminUserElement->isDisplayed());
81
		$this->assertFalse($adminPasswordElement->isDisplayed());
82
		$this->assertFalse($adminEmailElement->isDisplayed());
83
84
		/* setup and compare */
85
86
		$dbTypeSelect->selectByValue('sqlite');
87
		$this->assertTrue($dbHostElement->isDisplayed());
88
		$this->assertFalse($dbNameElement->isDisplayed());
89
		$this->assertFalse($dbUserElement->isDisplayed());
90
		$this->assertFalse($dbPasswordElement->isDisplayed());
91
		$this->assertTrue($dbPrefixElement->isDisplayed());
92
93
		/* setup and compare */
94
95
		$dbTypeSelect->selectByValue('mysql');
96
		$this->assertTrue($dbHostElement->isDisplayed());
97
		$this->assertTrue($dbNameElement->isDisplayed());
98
		$this->assertTrue($dbUserElement->isDisplayed());
99
		$this->assertTrue($dbPasswordElement->isDisplayed());
100
		$this->assertTrue($dbPrefixElement->isDisplayed());
101
102
		/* setup and compare */
103
104
		$labelAccountElement->click();
105
		$this->assertTrue($adminNameElement->isDisplayed());
106
		$this->assertTrue($adminUserElement->isDisplayed());
107
		$this->assertTrue($adminPasswordElement->isDisplayed());
108
		$this->assertTrue($adminEmailElement->isDisplayed());
109
	}
110
111
	/**
112
	 * testInstall
113
	 *
114
	 * @since 4.0.0
115
	 */
116
117
	public function testInstall() : void
118
	{
119
		/* prepare */
120
121
		$formElement = $this->_driver->findElement(WebDriverBy::tagName('form'));
122
		$dbHostElement = $formElement->findElement(WebDriverBy::id('db-host'));
123
		$dbTypeElement = $formElement->findElement(WebDriverBy::id('db-type'));
124
		$dbPrefixElement = $formElement->findElement(WebDriverBy::id('db-prefix'));
125
		$adminNameElement = $formElement->findElement(WebDriverBy::id('admin-name'));
126
		$adminUserElement = $formElement->findElement(WebDriverBy::id('admin-user'));
127
		$adminPasswordElement = $formElement->findElement(WebDriverBy::id('admin-password'));
128
		$adminEmailElement = $formElement->findElement(WebDriverBy::id('admin-email'));
129
		$labelAccountElement =  $formElement->findElement(WebDriverBy::cssSelector('[for*="Account"]'));
130
		$buttonElement = $formElement->findElement(WebDriverBy::tagName('button'));
131
		$dbTypeSelect = new WebDriverSelect($dbTypeElement);
132
133
		/* setup */
134
135
		$dbTypeSelect->selectByValue('sqlite');
136
		$dbHostElement->sendKeys('build/test.sqlite');
137
		$dbPrefixElement->sendKeys('test_');
138
		$labelAccountElement->click();
139
		$adminNameElement->sendKeys('Test');
140
		$adminUserElement->sendKeys('test');
141
		$adminPasswordElement->sendKeys('test');
142
		$adminEmailElement->sendKeys('[email protected]');
143
		$buttonElement->click();
144
145
		/* compare */
146
147
		$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...
148
		$this->expectNotToPerformAssertions();
149
	}
150
}
151