aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/selenium/catalog/AccountTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/phpunit/selenium/catalog/AccountTest.php')
-rw-r--r--tests/phpunit/selenium/catalog/AccountTest.php320
1 files changed, 320 insertions, 0 deletions
diff --git a/tests/phpunit/selenium/catalog/AccountTest.php b/tests/phpunit/selenium/catalog/AccountTest.php
new file mode 100644
index 0000000..10edf84
--- /dev/null
+++ b/tests/phpunit/selenium/catalog/AccountTest.php
@@ -0,0 +1,320 @@
+<?php
+
+class CatalogAccountTest extends OpenCartSeleniumTest {
+
+
+ /**
+ * @before
+ */
+ protected function setupTest() {
+ $this->setBrowser('firefox');
+ $this->setBrowserUrl(HTTP_SERVER);
+ }
+
+ /**
+ * @after
+ */
+ protected function completeTest() {
+ $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE, DB_PORT);
+ $db->query("DELETE FROM " . DB_PREFIX . "customer");
+ $db->query("DELETE FROM " . DB_PREFIX . "address");
+ }
+
+ public function testNewsletterSubscription() {
+ $this->doRegistration();
+
+ $this->url("index.php?route=account/newsletter");
+ $this->byCssSelector('input[value="1"]')->click();
+ $this->byCssSelector('input[value="Continue"]')->click();
+ $this->url("index.php?route=account/newsletter");
+ $element = $this->byCssSelector('input[value="1"]');
+ $this->assertEquals('true', $element->attribute('checked'));
+
+ $this->byCssSelector('input[value="0"]')->click();
+ $this->byCssSelector('input[value="Continue"]')->click();
+ $this->url("index.php?route=account/newsletter");
+ $element = $this->byCssSelector('input[value="0"]');
+ $this->assertEquals('true', $element->attribute('checked'));
+ }
+
+ public function testAddAddress() {
+ $this->doRegistration();
+ $this->url("index.php?route=account/address/add");
+
+ $this->clickOnElement('input-firstname');
+ $this->keys('Firstname');
+
+ $this->clickOnElement('input-lastname');
+ $this->keys('Lastname');
+
+ $this->clickOnElement('input-company');
+ $this->keys('Company');
+
+ $this->clickOnElement('input-address-1');
+ $this->keys('Address 1');
+
+ $this->clickOnElement('input-address-2');
+ $this->keys('Address 2');
+
+ $this->clickOnElement('input-city');
+ $this->keys('City');
+
+ $this->clickOnElement('input-postcode');
+ $this->keys('000 000');
+
+ $this->byCssSelector('#input-country option[value="222"]')->click();
+ $this->byCssSelector('#input-zone option[value="3608"]')->click();
+
+ $this->byCssSelector('input[value="Continue"]')->click();
+
+ $this->waitUntil(function() {
+ if (strpos($this->url(), 'account/address') !== False) {
+ return true;
+ }
+ }, 3000);
+
+ $this->byCssSelector('table.table-hover tr:last-child td:last-child .btn-info')->click();
+
+ $this->waitUntil(function() {
+ if (strpos($this->url(), 'account/address/edit') !== False) {
+ return true;
+ }
+ }, 3000);
+
+ $this->byId('input-firstname')->clear();
+ $this->clickOnElement('input-firstname');
+ $this->keys('Firstname2');
+
+ $this->byId('input-lastname')->clear();
+ $this->clickOnElement('input-lastname');
+ $this->keys('Lastname2');
+
+ $this->byId('input-company')->clear();
+ $this->clickOnElement('input-company');
+ $this->keys('Company2');
+
+ $this->byId('input-address-1')->clear();
+ $this->clickOnElement('input-address-1');
+ $this->keys('Address 12');
+
+ $this->byId('input-address-2')->clear();
+ $this->clickOnElement('input-address-2');
+ $this->keys('Address 22');
+
+ $this->byId('input-city')->clear();
+ $this->clickOnElement('input-city');
+ $this->keys('City2');
+
+ $this->byId('input-postcode')->clear();
+ $this->clickOnElement('input-postcode');
+ $this->keys('999 999');
+
+ $this->byCssSelector('#input-country option[value="223"]')->click();
+
+ $this->waitUntil(function() {
+ if ($this->byCssSelector('#input-zone option[value="3624"]')) {
+ return true;
+ }
+ }, 3000);
+
+ $this->byCssSelector('#input-zone option[value="3624"]')->click();
+
+ $this->byCssSelector('input[value="Continue"]')->click();
+
+ $this->waitUntil(function() {
+ if (strpos($this->url(), 'account/address') !== False) {
+ return true;
+ }
+ }, 3000);
+
+ $this->byCssSelector('table.table-hover tr:last-child td:last-child .btn-info')->click();
+
+ $firstname = $this->byId('input-firstname')->value();
+ $this->assertEquals('Firstname2', $firstname);
+
+ $lastname = $this->byId('input-lastname')->value();
+ $this->assertEquals('Lastname2', $lastname);
+
+ $company = $this->byId('input-company')->value();
+ $this->assertEquals('Company2', $company);
+
+ $address1 = $this->byId('input-address-1')->value();
+ $this->assertEquals('Address 12', $address1);
+
+ $address2 = $this->byId('input-address-2')->value();
+ $this->assertEquals('Address 22', $address2);
+
+ $city = $this->byId('input-city')->value();
+ $this->assertEquals('City2', $city);
+
+ $postcode = $this->byId('input-postcode')->value();
+ $this->assertEquals('999 999', $postcode);
+
+ $country = $this->byId('input-country')->value();
+ $this->assertEquals('223', $country);
+
+ $zone = $this->byId('input-zone')->value();
+ $this->assertEquals('3624', $zone);
+ }
+
+ public function testChangePassword() {
+ $this->doRegistration();
+
+ $this->url("index.php?route=account/password");
+
+ $this->clickOnElement('input-password');
+ $this->keys('new-password');
+
+ $this->clickOnElement('input-confirm');
+ $this->keys('new-password');
+
+ $this->byCssSelector('input[value="Continue"]')->click();
+
+ $this->url('index.php?route=account/logout');
+ $this->url('index.php?route=account/login');
+
+ $this->clickOnElement('input-email');
+ $this->keys('john.smith@example.com');
+
+ $this->clickOnElement('input-password');
+ $this->keys('new-password');
+
+ $this->byCssSelector('input[value="Login"]')->click();
+
+ $this->waitUntil(function(){
+ if (strpos($this->url(), 'account/account') !== False) {
+ return true;
+ }
+ }, 3000);
+ }
+
+ public function testInformationEditing() {
+ $this->doRegistration();
+
+ $this->url("index.php?route=account/edit");
+
+ $this->byId('input-firstname')->clear();
+ $this->clickOnElement('input-firstname');
+ $this->keys('John-New');
+
+ $this->byId('input-lastname')->clear();
+ $this->clickOnElement('input-lastname');
+ $this->keys('Smith-New');
+
+ $this->byId('input-email')->clear();
+ $this->clickOnElement('input-email');
+ $this->keys('john.smith.new@example.com');
+
+ $this->byId('input-telephone')->clear();
+ $this->clickOnElement('input-telephone');
+ $this->keys('000000000');
+
+ $this->byCssSelector('input[value="Continue"]')->click();
+
+ $this->url("index.php?route=account/edit");
+
+ $firstname = $this->byId('input-firstname')->value();
+ $this->assertEquals('John-New', $firstname);
+
+ $lastname = $this->byId('input-lastname')->value();
+ $this->assertEquals('Smith-New', $lastname);
+
+ $email = $this->byId('input-email')->value();
+ $this->assertEquals('john.smith.new@example.com', $email);
+
+ $telephone = $this->byId('input-telephone')->value();
+ $this->assertEquals('000000000', $telephone);
+ }
+
+ public function testLogin() {
+ $this->doRegistration();
+ $this->url('index.php?route=account/logout');
+ $this->url('index.php?route=account/login');
+
+ $this->clickOnElement('input-email');
+ $this->keys('john.smith@example.com');
+
+ $this->clickOnElement('input-password');
+ $this->keys('password123456');
+
+ $this->byCssSelector('input[value="Login"]')->click();
+
+ $this->waitUntil(function(){
+ if (strpos($this->url(), 'account/account') !== False) {
+ return true;
+ }
+ }, 3000);
+ }
+
+ public function testFailedLogin() {
+ $this->doRegistration();
+ $this->url('index.php?route=account/logout');
+ $this->url('index.php?route=account/login');
+
+ $this->clickOnElement('input-email');
+ $this->keys('john.smith@example.com');
+
+ $this->clickOnElement('input-password');
+ $this->keys('incorrect password');
+
+ $this->byCssSelector('input[value="Login"]')->click();
+
+ $this->waitUntil(function(){
+ if (strpos($this->url(), 'account/login') !== False) {
+ return true;
+ }
+ }, 3000);
+
+ $this->byCssSelector('.alert-danger');
+ }
+
+ private function doRegistration() {
+ $this->url('index.php?route=account/register');
+
+ $this->clickOnElement('input-firstname');
+ $this->keys('John');
+
+ $this->clickOnElement('input-lastname');
+ $this->keys('Smith');
+
+ $this->clickOnElement('input-email');
+ $this->keys('john.smith@example.com');
+
+ $this->clickOnElement('input-telephone');
+ $this->keys('0123456789');
+
+ $this->clickOnElement('input-address-1');
+ $this->keys('Address 1');
+
+ $this->clickOnElement('input-address-2');
+ $this->keys('Address 2');
+
+ $this->clickOnElement('input-city');
+ $this->keys('City');
+
+ $this->clickOnElement('input-postcode');
+ $this->keys('000 000');
+
+ $countryElement = $this->byCssSelector('#input-country option[value="222"]');
+ $countryElement->click();
+
+ $countyElement = $this->byCssSelector('#input-zone option[value="3608"]');
+ $countyElement->click();
+
+ $this->clickOnElement('input-password');
+ $this->keys('password123456');
+
+ $this->clickOnElement('input-confirm');
+ $this->keys('password123456');
+
+ $this->byCssSelector('input[name="agree"]')->click();
+
+ $this->byCssSelector('input[value="Continue"]')->click();
+
+ $this->waitUntil(function(){
+ if (strpos($this->url(), 'account/success') !== False) {
+ return true;
+ }
+ }, 3000);
+ }
+}