tests modified, bootstrap added

This commit is contained in:
Mark 2013-12-02 15:25:21 +04:00
parent 84da8ffa89
commit d2214e4f0a
25 changed files with 2262 additions and 1179 deletions

1
tests/_bootstrap.php Normal file
View File

@ -0,0 +1 @@
<?php

View File

@ -0,0 +1,10 @@
<?php
namespace tests\_pages;
class AboutPage extends BasePage
{
public static $URL = '?r=site/about';
}

45
tests/_pages/BasePage.php Normal file
View File

@ -0,0 +1,45 @@
<?php
namespace tests\_pages;
class BasePage
{
// include url of current page
public static $URL = '';
/**
* Declare UI map for this page here. CSS or XPath allowed.
* public static $usernameField = '#username';
* public static $formSubmitButton = "#mainForm input[type=submit]";
*/
/**
* Basic route example for your current URL
* You can append any additional parameter to URL
* and use it in tests like: EditPage::route('/123-post');
*/
public static function route($param)
{
return static::$URL.$param;
}
/**
* @var
*/
protected $guy;
public function __construct($I)
{
$this->guy = $I;
}
/**
* @return $this
*/
public static function of($I)
{
return new static($I);
}
}

View File

@ -0,0 +1,63 @@
<?php
namespace tests\_pages;
class ContactPage extends BasePage
{
public static $URL = '?r=site/contact';
/**
* contact form name text field locator
* @var string
*/
public $name = 'input[name="ContactForm[name]"]';
/**
* contact form email text field locator
* @var string
*/
public $email = 'input[name="ContactForm[email]"]';
/**
* contact form subject text field locator
* @var string
*/
public $subject = 'input[name="ContactForm[subject]"]';
/**
* contact form body textarea locator
* @var string
*/
public $body = 'textarea[name="ContactForm[body]"]';
/**
* contact form verification code text field locator
* @var string
*/
public $verifyCode = 'input[name="ContactForm[verifyCode]"]';
/**
* contact form submit button
* @var string
*/
public $button = 'button[type=submit]';
/**
*
* @param array $contactData
*/
public function submit(array $contactData)
{
if (!empty($contactData))
{
$this->guy->fillField($this->name,$contactData['name']);
$this->guy->fillField($this->email,$contactData['email']);
$this->guy->fillField($this->subject,$contactData['subject']);
$this->guy->fillField($this->body,$contactData['body']);
$this->guy->fillField($this->verifyCode,$contactData['verifyCode']);
}
$this->guy->click($this->button);
}
}

View File

@ -0,0 +1,40 @@
<?php
namespace tests\_pages;
class LoginPage extends BasePage
{
public static $URL = '?r=site/login';
/**
* login form username text field locator
* @var string
*/
public $username = 'input[name="LoginForm[username]"]';
/**
* login form password text field locator
* @var string
*/
public $password = 'input[name="LoginForm[password]"]';
/**
* login form submit button locator
* @var string
*/
public $button = 'button[type=submit]';
/**
*
* @param string $username
* @param string $password
*/
public function login($username, $password)
{
$this->guy->fillField($this->username,$username);
$this->guy->fillField($this->password,$password);
$this->guy->click($this->button);
}
}

View File

@ -11,8 +11,9 @@
class_name: WebGuy class_name: WebGuy
modules: modules:
enabled: enabled:
- PhpBrowser
- WebHelper - WebHelper
- WebDriver
config: config:
PhpBrowser: WebDriver:
url: 'http://localhost/index-test.php' url: 'http://localhost/basic/web/index-test-accept.php'
browser: firefox

View File

@ -1,5 +1,7 @@
<?php <?php
use tests\_pages\AboutPage;
$I = new WebGuy($scenario); $I = new WebGuy($scenario);
$I->wantTo('ensure that about works'); $I->wantTo('ensure that about works');
$I->amOnPage('?r=site/about'); $I->amOnPage(AboutPage::$URL);
$I->see('About', 'h1'); $I->see('About', 'h1');

View File

@ -1,10 +1,16 @@
<?php <?php
use tests\_pages\ContactPage;
$I = new WebGuy($scenario); $I = new WebGuy($scenario);
$I->wantTo('ensure that contact works'); $I->wantTo('ensure that contact works');
$I->amOnPage('?r=site/contact'); $contactPage = ContactPage::of($I);
$I->amOnPage(ContactPage::$URL);
$I->see('Contact', 'h1'); $I->see('Contact', 'h1');
$I->submitForm('#contact-form', []); $I->amGoingTo('submit contact form with no data');
$contactPage->submit([]);
$I->expectTo('see validations errors');
$I->see('Contact', 'h1'); $I->see('Contact', 'h1');
$I->see('Name cannot be blank'); $I->see('Name cannot be blank');
$I->see('Email cannot be blank'); $I->see('Email cannot be blank');
@ -12,25 +18,29 @@ $I->see('Subject cannot be blank');
$I->see('Body cannot be blank'); $I->see('Body cannot be blank');
$I->see('The verification code is incorrect'); $I->see('The verification code is incorrect');
$I->submitForm('#contact-form', [ $I->amGoingTo('submit contact form with not correct email');
'ContactForm[name]' => 'tester', $contactPage->submit([
'ContactForm[email]' => 'tester.email', 'name' => 'tester',
'ContactForm[subject]' => 'test subject', 'email' => 'tester.email',
'ContactForm[body]' => 'test content', 'subject' => 'test subject',
'ContactForm[verifyCode]' => 'testme', 'body' => 'test content',
'verifyCode' => 'testme',
]); ]);
$I->expectTo('see that email adress is wrong');
$I->dontSee('Name cannot be blank', '.help-inline'); $I->dontSee('Name cannot be blank', '.help-inline');
$I->see('Email is not a valid email address.'); $I->see('Email is not a valid email address.');
$I->dontSee('Subject cannot be blank', '.help-inline'); $I->dontSee('Subject cannot be blank', '.help-inline');
$I->dontSee('Body cannot be blank', '.help-inline'); $I->dontSee('Body cannot be blank', '.help-inline');
$I->dontSee('The verification code is incorrect', '.help-inline'); $I->dontSee('The verification code is incorrect', '.help-inline');
$I->submitForm('#contact-form', [ $I->amGoingTo('submit contact form with correct data');
'ContactForm[name]' => 'tester', $contactPage->submit([
'ContactForm[email]' => 'tester@example.com', 'name' => 'tester',
'ContactForm[subject]' => 'test subject', 'email' => 'tester@example.com',
'ContactForm[body]' => 'test content', 'subject' => 'test subject',
'ContactForm[verifyCode]' => 'testme', 'body' => 'test content',
'verifyCode' => 'testme',
]); ]);
$I->wait(3);
$I->dontSeeElement('#contact-form'); $I->dontSeeElement('#contact-form');
$I->see('Thank you for contacting us. We will respond to you as soon as possible.'); $I->see('Thank you for contacting us. We will respond to you as soon as possible.');

View File

@ -1,23 +1,26 @@
<?php <?php
use tests\_pages\LoginPage;
$I = new WebGuy($scenario); $I = new WebGuy($scenario);
$I->wantTo('ensure that login works'); $I->wantTo('ensure that login works');
$I->amOnPage('?r=site/login'); $loginPage = LoginPage::of($I);
$I->amOnPage(LoginPage::$URL);
$I->see('Login', 'h1'); $I->see('Login', 'h1');
$I->submitForm('#login-form', []); $I->amGoingTo('try to login with empty credentials');
$I->dontSee('Logout (admin)'); $loginPage->login('', '');
$I->see('Username cannot be blank'); $I->expectTo('see validations errors');
$I->see('Password cannot be blank'); $I->see('Username cannot be blank.');
$I->see('Password cannot be blank.');
$I->submitForm('#login-form', [ $I->amGoingTo('try to login with wrong credentials');
'LoginForm[username]' => 'admin', $loginPage->login('admin', 'wrong');
'LoginForm[password]' => 'wrong', $I->expectTo('see validations errors');
]); $I->see('Incorrect username or password.');
$I->dontSee('Logout (admin)');
$I->see('Incorrect username or password');
$I->submitForm('#login-form', [ $I->amGoingTo('try to login with correct credentials');
'LoginForm[username]' => 'admin', $loginPage->login('admin', 'admin');
'LoginForm[password]' => 'admin', $I->wait(3);
]); $I->expectTo('see user info');
$I->see('Logout (admin)'); $I->see('Logout (admin)');

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +1,11 @@
<?php <?php
// Here you can initialize variables that will for your tests // Here you can initialize variables that will for your tests
$config = require(__DIR__.'/../yii_bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
$config,
require(__DIR__ . '/../../config/codeception/acceptance.php')
);
$application = new yii\web\Application($config);

View File

@ -5,11 +5,11 @@
# (tip: better to use with frameworks). # (tip: better to use with frameworks).
# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES. # RUN `build` COMMAND AFTER ADDING/REMOVING MODULES.
#basic/web/index-test-func.php
class_name: TestGuy class_name: TestGuy
modules: modules:
enabled: [Filesystem, TestHelper, Yii2] enabled: [Filesystem, TestHelper, Yii2]
config: config:
Yii2: Yii2:
entryScript: 'web/index-test.php' entryScript: 'web/index-test-func.php'
url: 'http://localhost/' url: 'http://localhost/'

View File

@ -1,5 +1,8 @@
<?php <?php
use tests\_pages\AboutPage;
$I = new TestGuy($scenario); $I = new TestGuy($scenario);
$I->wantTo('ensure that about works'); $I->wantTo('ensure that about works');
$I->amOnPage('?r=site/about'); $I->amOnPage(AboutPage::$URL);
$I->see('About', 'h1'); $I->see('About', 'h1');

View File

@ -1,10 +1,16 @@
<?php <?php
use tests\functional\_pages\ContactPage;
$I = new TestGuy($scenario); $I = new TestGuy($scenario);
$I->wantTo('ensure that contact works'); $I->wantTo('ensure that contact works');
$I->amOnPage('?r=site/contact'); $contactPage = ContactPage::of($I);
$I->amOnPage(ContactPage::$URL);
$I->see('Contact', 'h1'); $I->see('Contact', 'h1');
$I->submitForm('#contact-form', []); $I->amGoingTo('submit contact form with no data');
$contactPage->submit([]);
$I->expectTo('see validations errors');
$I->see('Contact', 'h1'); $I->see('Contact', 'h1');
$I->see('Name cannot be blank'); $I->see('Name cannot be blank');
$I->see('Email cannot be blank'); $I->see('Email cannot be blank');
@ -12,25 +18,28 @@ $I->see('Subject cannot be blank');
$I->see('Body cannot be blank'); $I->see('Body cannot be blank');
$I->see('The verification code is incorrect'); $I->see('The verification code is incorrect');
$I->submitForm('#contact-form', [ $I->amGoingTo('submit contact form with not correct email');
'ContactForm[name]' => 'tester', $contactPage->submit([
'ContactForm[email]' => 'tester.email', 'name' => 'tester',
'ContactForm[subject]' => 'test subject', 'email' => 'tester.email',
'ContactForm[body]' => 'test content', 'subject' => 'test subject',
'ContactForm[verifyCode]' => 'testme', 'body' => 'test content',
'verifyCode' => 'testme',
]); ]);
$I->expectTo('see that email adress is wrong');
$I->dontSee('Name cannot be blank', '.help-inline'); $I->dontSee('Name cannot be blank', '.help-inline');
$I->see('Email is not a valid email address.'); $I->see('Email is not a valid email address.');
$I->dontSee('Subject cannot be blank', '.help-inline'); $I->dontSee('Subject cannot be blank', '.help-inline');
$I->dontSee('Body cannot be blank', '.help-inline'); $I->dontSee('Body cannot be blank', '.help-inline');
$I->dontSee('The verification code is incorrect', '.help-inline'); $I->dontSee('The verification code is incorrect', '.help-inline');
$I->submitForm('#contact-form', [ $I->amGoingTo('submit contact form with correct data');
'ContactForm[name]' => 'tester', $contactPage->submit([
'ContactForm[email]' => 'tester@example.com', 'name' => 'tester',
'ContactForm[subject]' => 'test subject', 'email' => 'tester@example.com',
'ContactForm[body]' => 'test content', 'subject' => 'test subject',
'ContactForm[verifyCode]' => 'testme', 'body' => 'test content',
'verifyCode' => 'testme',
]); ]);
$I->dontSeeElement('#contact-form'); $I->dontSeeElement('#contact-form');
$I->see('Thank you for contacting us. We will respond to you as soon as possible.'); $I->see('Thank you for contacting us. We will respond to you as soon as possible.');

View File

@ -1,23 +1,25 @@
<?php <?php
use tests\functional\_pages\LoginPage;
$I = new TestGuy($scenario); $I = new TestGuy($scenario);
$I->wantTo('ensure that login works'); $I->wantTo('ensure that login works');
$I->amOnPage('?r=site/login'); $loginPage = LoginPage::of($I);
$I->amOnPage(LoginPage::$URL);
$I->see('Login', 'h1'); $I->see('Login', 'h1');
$I->submitForm('#login-form', []); $I->amGoingTo('try to login with empty credentials');
$I->dontSee('Logout (admin)'); $loginPage->login('', '');
$I->see('Username cannot be blank'); $I->expectTo('see validations errors');
$I->see('Password cannot be blank'); $I->see('Username cannot be blank.');
$I->see('Password cannot be blank.');
$I->submitForm('#login-form', [ $I->amGoingTo('try to login with wrong credentials');
'LoginForm[username]' => 'admin', $loginPage->login('admin', 'wrong');
'LoginForm[password]' => 'wrong', $I->expectTo('see validations errors');
]); $I->see('Incorrect username or password.');
$I->dontSee('Logout (admin)');
$I->see('Incorrect username or password');
$I->submitForm('#login-form', [ $I->amGoingTo('try to login with correct credentials');
'LoginForm[username]' => 'admin', $loginPage->login('admin', 'admin');
'LoginForm[password]' => 'admin', $I->expectTo('see user info');
]);
$I->see('Logout (admin)'); $I->see('Logout (admin)');

View File

@ -440,6 +440,25 @@ class TestGuy extends \Codeception\AbstractGuy
} }
/**
* This method is generated.
* Documentation taken from corresponding module.
* ----------------------------------------------
*
*
* @see Codeception\Module::getName()
* @return \Codeception\Maybe
*/
public function getName() {
$this->scenario->addStep(new \Codeception\Step\Action('getName', func_get_args()));
if ($this->scenario->running()) {
$result = $this->scenario->runStep();
return new Maybe($result);
}
return new Maybe();
}
/** /**
* This method is generated. * This method is generated.
* Documentation taken from corresponding module. * Documentation taken from corresponding module.

View File

@ -1,2 +1,10 @@
<?php <?php
// Here you can initialize variables that will for your tests
$config = require(__DIR__.'/../yii_bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
$config,
require(__DIR__ . '/../../config/codeception/functional.php')
);
$application = new yii\web\Application($config);

View File

@ -0,0 +1,56 @@
<?php
namespace tests\functional\_pages;
class ContactPage extends \tests\_pages\ContactPage
{
/**
* contact form name text field locator
* @var string
*/
public $name = 'ContactForm[name]';
/**
* contact form email text field locator
* @var string
*/
public $email = 'ContactForm[email]';
/**
* contact form subject text field locator
* @var string
*/
public $subject = 'ContactForm[subject]';
/**
* contact form body textarea locator
* @var string
*/
public $body = 'ContactForm[body]';
/**
* contact form verification code text field locator
* @var string
*/
public $verifyCode = 'ContactForm[verifyCode]';
/**
*
* @param array $contactData
*/
public function submit(array $contactData)
{
if (empty($contactData))
$this->guy->submitForm('#contact-form',[]);
else
$this->guy->submitForm('#contact-form',[
$this->name => $contactData['name'],
$this->email => $contactData['email'],
$this->subject => $contactData['subject'],
$this->body => $contactData['body'],
$this->verifyCode => $contactData['verifyCode'],
]);
}
}

View File

@ -0,0 +1,33 @@
<?php
namespace tests\functional\_pages;
class LoginPage extends \tests\_pages\LoginPage
{
/**
* login form username text field locator
* @var string
*/
public $username = 'LoginForm[username]';
/**
* login form password text field locator
* @var string
*/
public $password = 'LoginForm[password]';
/**
*
* @param string $username
* @param string $password
*/
public function login($username, $password)
{
$this->guy->submitForm('#login-form',[
$this->username => $username,
$this->password => $password,
]);
}
}

View File

@ -26,5 +26,22 @@ use Codeception\Module\CodeHelper;
class CodeGuy extends \Codeception\AbstractGuy class CodeGuy extends \Codeception\AbstractGuy
{ {
/**
* This method is generated.
* Documentation taken from corresponding module.
* ----------------------------------------------
*
*
* @see Codeception\Module::getName()
* @return \Codeception\Maybe
*/
public function getName() {
$this->scenario->addStep(new \Codeception\Step\Action('getName', func_get_args()));
if ($this->scenario->running()) {
$result = $this->scenario->runStep();
return new Maybe($result);
}
return new Maybe();
}
} }

View File

@ -1,2 +1,10 @@
<?php <?php
// Here you can initialize variables that will for your tests
$config = require(__DIR__.'/../yii_bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
$config,
require(__DIR__ . '/../../config/codeception/unit.php')
);
$application = new yii\web\Application($config);

View File

@ -0,0 +1,16 @@
<?php
namespace tests\unit\models;
class ContactFormTest extends \PHPUnit_Framework_TestCase
{
protected function setUp()
{
}
protected function tearDown()
{
}
}

View File

@ -0,0 +1,16 @@
<?php
namespace tests\unit\models;
class LoginFormTest extends \PHPUnit_Framework_TestCase
{
protected function setUp()
{
}
protected function tearDown()
{
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace tests\unit\models;
#use yii\test\DbTestTrait;
class UserTest extends \PHPUnit_Framework_TestCase
{
use DbTestTrait;
protected function setUp()
{
/*
* you can load fixtures in this way
*
$this->loadFixtures([
'tbl_user',
]);
*/
}
protected function tearDown()
{
}
}

10
tests/yii_bootstrap.php Normal file
View File

@ -0,0 +1,10 @@
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
require_once(__DIR__ . '/../vendor/autoload.php');
require_once(__DIR__ . '/../vendor/yiisoft/yii2/yii/Yii.php');
return require(__DIR__ . '/../config/web.php');