Преглед на файлове

Acceptance test refactoring - Contact form (#2)

* directory _support should exists before build with ignore inside

* added test for contact page availability

* added test for empty contact form submit

* added test for submit contact form

* remove test contact page

* delete old contact page test

* test index-test instead index

* change stage description
Oleg Kostiushko преди 9 години
родител
ревизия
75a273eb40

+ 0 - 26
tests/codeception/_pages/ContactPage.php

@@ -1,26 +0,0 @@
-<?php
-
-namespace tests\codeception\_pages;
-
-use yii\codeception\BasePage;
-
-/**
- * Represents contact page
- * @property \AcceptanceTester|\FunctionalTester $actor
- */
-class ContactPage extends BasePage
-{
-    public $route = 'site/contact';
-
-    /**
-     * @param array $contactData
-     */
-    public function submit(array $contactData)
-    {
-        foreach ($contactData as $field => $value) {
-            $inputType = $field === 'body' ? 'textarea' : 'input';
-            $this->actor->fillField($inputType . '[name="ContactForm[' . $field . ']"]', $value);
-        }
-        $this->actor->click('contact-button');
-    }
-}

+ 2 - 0
tests/codeception/_support/.gitignore

@@ -0,0 +1,2 @@
+*
+!.gitignore

+ 0 - 57
tests/codeception/acceptance/ContactCept.php

@@ -1,57 +0,0 @@
-<?php
-
-use tests\codeception\_pages\ContactPage;
-
-/* @var $scenario Codeception\Scenario */
-
-$I = new AcceptanceTester($scenario);
-$I->wantTo('ensure that contact works');
-
-$contactPage = ContactPage::openBy($I);
-
-$I->see('Contact', 'h1');
-
-$I->amGoingTo('submit contact form with no data');
-$contactPage->submit([]);
-if (method_exists($I, 'wait')) {
-    $I->wait(3); // only for selenium
-}
-$I->expectTo('see validations errors');
-$I->see('Contact', 'h1');
-$I->see('Name cannot be blank');
-$I->see('Email cannot be blank');
-$I->see('Subject cannot be blank');
-$I->see('Body cannot be blank');
-$I->see('The verification code is incorrect');
-
-$I->amGoingTo('submit contact form with not correct email');
-$contactPage->submit([
-    'name' => 'tester',
-    'email' => 'tester.email',
-    'subject' => 'test subject',
-    'body' => 'test content',
-    'verifyCode' => 'testme',
-]);
-if (method_exists($I, 'wait')) {
-    $I->wait(3); // only for selenium
-}
-$I->expectTo('see that email address is wrong');
-$I->dontSee('Name cannot be blank', '.help-inline');
-$I->see('Email is not a valid email address.');
-$I->dontSee('Subject cannot be blank', '.help-inline');
-$I->dontSee('Body cannot be blank', '.help-inline');
-$I->dontSee('The verification code is incorrect', '.help-inline');
-
-$I->amGoingTo('submit contact form with correct data');
-$contactPage->submit([
-    'name' => 'tester',
-    'email' => 'tester@example.com',
-    'subject' => 'test subject',
-    'body' => 'test content',
-    'verifyCode' => 'testme',
-]);
-if (method_exists($I, 'wait')) {
-    $I->wait(3); // only for selenium
-}
-$I->dontSeeElement('#contact-form');
-$I->see('Thank you for contacting us. We will respond to you as soon as possible.');

+ 33 - 0
tests/codeception/acceptance/ContactCest.php

@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * Class ContactCest
+ */
+class ContactCest
+{
+    public function _before(\AcceptanceTester $I)
+    {
+        $I->amOnPage('index-test.php?r=site%2Fcontact');
+    }
+    
+    public function contactPageWorks(AcceptanceTester $I)
+    {
+        $I->wantTo('ensure that contact page works');
+        $I->see('Contact', 'h1');
+    }
+
+    public function contactFormCanBeSubmitted(AcceptanceTester $I)
+    {
+        $I->amGoingTo('submit contact form with correct data');
+        $I->fillField('#contactform-name', 'tester');
+        $I->fillField('#contactform-email', 'tester@example.com');
+        $I->fillField('#contactform-subject', 'test subject');
+        $I->fillField('#contactform-body', 'test content');
+        $I->fillField('#contactform-verifycode', 'testme');
+
+        $I->click('contact-button');
+
+        $I->dontSeeElement('#contact-form');
+        $I->see('Thank you for contacting us. We will respond to you as soon as possible.');
+    }
+}