Qiang Xue
12 years ago
29 changed files with 1704 additions and 41 deletions
@ -0,0 +1,18 @@ |
|||||||
|
paths: |
||||||
|
tests: tests |
||||||
|
log: tests/_log |
||||||
|
data: tests/_data |
||||||
|
helpers: tests/_helpers |
||||||
|
settings: |
||||||
|
bootstrap: _bootstrap.php |
||||||
|
suite_class: \PHPUnit_Framework_TestSuite |
||||||
|
colors: true |
||||||
|
memory_limit: 1024M |
||||||
|
log: true |
||||||
|
modules: |
||||||
|
config: |
||||||
|
Db: |
||||||
|
dsn: '' |
||||||
|
user: '' |
||||||
|
password: '' |
||||||
|
dump: tests/_data/dump.sql |
@ -0,0 +1,7 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
$config = require(__DIR__ . '/web.php'); |
||||||
|
|
||||||
|
// ... customize $config for the "test" environment here... |
||||||
|
|
||||||
|
return $config; |
@ -0,0 +1 @@ |
|||||||
|
/* Replace this file with actual dump of your database */ |
@ -0,0 +1,8 @@ |
|||||||
|
<?php |
||||||
|
namespace Codeception\Module; |
||||||
|
|
||||||
|
// here you can define custom functions for CodeGuy |
||||||
|
|
||||||
|
class CodeHelper extends \Codeception\Module |
||||||
|
{ |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
<?php |
||||||
|
namespace Codeception\Module; |
||||||
|
|
||||||
|
// here you can define custom functions for TestGuy |
||||||
|
|
||||||
|
class TestHelper extends \Codeception\Module |
||||||
|
{ |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
<?php |
||||||
|
namespace Codeception\Module; |
||||||
|
|
||||||
|
// here you can define custom functions for WebGuy |
||||||
|
|
||||||
|
class WebHelper extends \Codeception\Module |
||||||
|
{ |
||||||
|
} |
@ -0,0 +1,18 @@ |
|||||||
|
# Codeception Test Suite Configuration |
||||||
|
|
||||||
|
# suite for acceptance tests. |
||||||
|
# perform tests in browser using the Selenium-like tools. |
||||||
|
# powered by Mink (http://mink.behat.org). |
||||||
|
# (tip: that's what your customer will see). |
||||||
|
# (tip: test your ajax and javascript by one of Mink drivers). |
||||||
|
|
||||||
|
# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES. |
||||||
|
|
||||||
|
class_name: WebGuy |
||||||
|
modules: |
||||||
|
enabled: |
||||||
|
- PhpBrowser |
||||||
|
- WebHelper |
||||||
|
config: |
||||||
|
PhpBrowser: |
||||||
|
url: 'http://localhost/index-test.php' |
@ -0,0 +1,5 @@ |
|||||||
|
<?php |
||||||
|
$I = new WebGuy($scenario); |
||||||
|
$I->wantTo('ensure that about works'); |
||||||
|
$I->amOnPage('?r=site/about'); |
||||||
|
$I->see('About', 'h1'); |
@ -0,0 +1,36 @@ |
|||||||
|
<?php |
||||||
|
$I = new WebGuy($scenario); |
||||||
|
$I->wantTo('ensure that contact works'); |
||||||
|
$I->amOnPage('?r=site/contact'); |
||||||
|
$I->see('Contact', 'h1'); |
||||||
|
|
||||||
|
$I->submitForm('#contact-form', array()); |
||||||
|
$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->submitForm('#contact-form', array( |
||||||
|
'ContactForm[name]' => 'tester', |
||||||
|
'ContactForm[email]' => 'tester.email', |
||||||
|
'ContactForm[subject]' => 'test subject', |
||||||
|
'ContactForm[body]' => 'test content', |
||||||
|
'ContactForm[verifyCode]' => 'testme', |
||||||
|
)); |
||||||
|
$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->submitForm('#contact-form', array( |
||||||
|
'ContactForm[name]' => 'tester', |
||||||
|
'ContactForm[email]' => 'tester@example.com', |
||||||
|
'ContactForm[subject]' => 'test subject', |
||||||
|
'ContactForm[body]' => 'test content', |
||||||
|
'ContactForm[verifyCode]' => 'testme', |
||||||
|
)); |
||||||
|
$I->dontSeeElement('#contact-form'); |
||||||
|
$I->see('Thank you for contacting us. We will respond to you as soon as possible.'); |
@ -0,0 +1,8 @@ |
|||||||
|
<?php |
||||||
|
$I = new WebGuy($scenario); |
||||||
|
$I->wantTo('ensure that home page works'); |
||||||
|
$I->amOnPage(''); |
||||||
|
$I->see('My Company'); |
||||||
|
$I->seeLink('About'); |
||||||
|
$I->click('About'); |
||||||
|
$I->see('This is the About page.'); |
@ -0,0 +1,23 @@ |
|||||||
|
<?php |
||||||
|
$I = new WebGuy($scenario); |
||||||
|
$I->wantTo('ensure that login works'); |
||||||
|
$I->amOnPage('?r=site/login'); |
||||||
|
$I->see('Login', 'h1'); |
||||||
|
|
||||||
|
$I->submitForm('#login-form', array()); |
||||||
|
$I->dontSee('Logout (admin)'); |
||||||
|
$I->see('Username cannot be blank'); |
||||||
|
$I->see('Password cannot be blank'); |
||||||
|
|
||||||
|
$I->submitForm('#login-form', array( |
||||||
|
'LoginForm[username]' => 'admin', |
||||||
|
'LoginForm[password]' => 'wrong', |
||||||
|
)); |
||||||
|
$I->dontSee('Logout (admin)'); |
||||||
|
$I->see('Incorrect username or password'); |
||||||
|
|
||||||
|
$I->submitForm('#login-form', array( |
||||||
|
'LoginForm[username]' => 'admin', |
||||||
|
'LoginForm[password]' => 'admin', |
||||||
|
)); |
||||||
|
$I->see('Logout (admin)'); |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,2 @@ |
|||||||
|
<?php |
||||||
|
// Here you can initialize variables that will for your tests |
@ -0,0 +1,11 @@ |
|||||||
|
# Codeception Test Suite Configuration |
||||||
|
|
||||||
|
# suite for functional (integration) tests. |
||||||
|
# emulate web requests and make application process them. |
||||||
|
# (tip: better to use with frameworks). |
||||||
|
|
||||||
|
# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES. |
||||||
|
|
||||||
|
class_name: TestGuy |
||||||
|
modules: |
||||||
|
enabled: [Filesystem, TestHelper] |
@ -0,0 +1,248 @@ |
|||||||
|
<?php |
||||||
|
// This class was automatically generated by build task |
||||||
|
// You can change it manually, but it will be overwritten on next build |
||||||
|
// @codingStandardsIgnoreFile |
||||||
|
|
||||||
|
use Codeception\Maybe; |
||||||
|
use Codeception\Module\Filesystem; |
||||||
|
use Codeception\Module\TestHelper; |
||||||
|
|
||||||
|
/** |
||||||
|
* Inherited methods |
||||||
|
* @method void wantToTest($text) |
||||||
|
* @method void wantTo($text) |
||||||
|
* @method void amTesting($method) |
||||||
|
* @method void amTestingMethod($method) |
||||||
|
* @method void testMethod($signature) |
||||||
|
* @method void expectTo($prediction) |
||||||
|
* @method void expect($prediction) |
||||||
|
* @method void amGoingTo($argumentation) |
||||||
|
* @method void am($role) |
||||||
|
* @method void lookForwardTo($role) |
||||||
|
*/ |
||||||
|
|
||||||
|
class TestGuy extends \Codeception\AbstractGuy |
||||||
|
{ |
||||||
|
|
||||||
|
/** |
||||||
|
* Enters a directory In local filesystem. |
||||||
|
* Project root directory is used by default |
||||||
|
* |
||||||
|
* @param $path |
||||||
|
* @see Filesystem::amInPath() |
||||||
|
* @return \Codeception\Maybe |
||||||
|
* ! This method is generated. DO NOT EDIT. ! |
||||||
|
* ! Documentation taken from corresponding module ! |
||||||
|
*/ |
||||||
|
public function amInPath($path) { |
||||||
|
$this->scenario->condition('amInPath', func_get_args()); |
||||||
|
if ($this->scenario->running()) { |
||||||
|
$result = $this->scenario->runStep(); |
||||||
|
return new Maybe($result); |
||||||
|
} |
||||||
|
return new Maybe(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Opens a file and stores it's content. |
||||||
|
* |
||||||
|
* Usage: |
||||||
|
* |
||||||
|
* ``` php |
||||||
|
* <?php |
||||||
|
* $I->openFile('composer.json'); |
||||||
|
* $I->seeInThisFile('codeception/codeception'); |
||||||
|
* ?> |
||||||
|
* ``` |
||||||
|
* |
||||||
|
* @param $filename |
||||||
|
* @see Filesystem::openFile() |
||||||
|
* @return \Codeception\Maybe |
||||||
|
* ! This method is generated. DO NOT EDIT. ! |
||||||
|
* ! Documentation taken from corresponding module ! |
||||||
|
*/ |
||||||
|
public function openFile($filename) { |
||||||
|
$this->scenario->action('openFile', func_get_args()); |
||||||
|
if ($this->scenario->running()) { |
||||||
|
$result = $this->scenario->runStep(); |
||||||
|
return new Maybe($result); |
||||||
|
} |
||||||
|
return new Maybe(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Deletes a file |
||||||
|
* |
||||||
|
* ``` php |
||||||
|
* <?php |
||||||
|
* $I->deleteFile('composer.lock'); |
||||||
|
* ?> |
||||||
|
* ``` |
||||||
|
* |
||||||
|
* @param $filename |
||||||
|
* @see Filesystem::deleteFile() |
||||||
|
* @return \Codeception\Maybe |
||||||
|
* ! This method is generated. DO NOT EDIT. ! |
||||||
|
* ! Documentation taken from corresponding module ! |
||||||
|
*/ |
||||||
|
public function deleteFile($filename) { |
||||||
|
$this->scenario->action('deleteFile', func_get_args()); |
||||||
|
if ($this->scenario->running()) { |
||||||
|
$result = $this->scenario->runStep(); |
||||||
|
return new Maybe($result); |
||||||
|
} |
||||||
|
return new Maybe(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Deletes directory with all subdirectories |
||||||
|
* |
||||||
|
* ``` php |
||||||
|
* <?php |
||||||
|
* $I->deleteDir('vendor'); |
||||||
|
* ?> |
||||||
|
* ``` |
||||||
|
* |
||||||
|
* @param $dirname |
||||||
|
* @see Filesystem::deleteDir() |
||||||
|
* @return \Codeception\Maybe |
||||||
|
* ! This method is generated. DO NOT EDIT. ! |
||||||
|
* ! Documentation taken from corresponding module ! |
||||||
|
*/ |
||||||
|
public function deleteDir($dirname) { |
||||||
|
$this->scenario->action('deleteDir', func_get_args()); |
||||||
|
if ($this->scenario->running()) { |
||||||
|
$result = $this->scenario->runStep(); |
||||||
|
return new Maybe($result); |
||||||
|
} |
||||||
|
return new Maybe(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Copies directory with all contents |
||||||
|
* |
||||||
|
* ``` php |
||||||
|
* <?php |
||||||
|
* $I->copyDir('vendor','old_vendor'); |
||||||
|
* ?> |
||||||
|
* ``` |
||||||
|
* |
||||||
|
* @param $src |
||||||
|
* @param $dst |
||||||
|
* @see Filesystem::copyDir() |
||||||
|
* @return \Codeception\Maybe |
||||||
|
* ! This method is generated. DO NOT EDIT. ! |
||||||
|
* ! Documentation taken from corresponding module ! |
||||||
|
*/ |
||||||
|
public function copyDir($src, $dst) { |
||||||
|
$this->scenario->action('copyDir', func_get_args()); |
||||||
|
if ($this->scenario->running()) { |
||||||
|
$result = $this->scenario->runStep(); |
||||||
|
return new Maybe($result); |
||||||
|
} |
||||||
|
return new Maybe(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Checks If opened file has `text` in it. |
||||||
|
* |
||||||
|
* Usage: |
||||||
|
* |
||||||
|
* ``` php |
||||||
|
* <?php |
||||||
|
* $I->openFile('composer.json'); |
||||||
|
* $I->seeInThisFile('codeception/codeception'); |
||||||
|
* ?> |
||||||
|
* ``` |
||||||
|
* |
||||||
|
* @param $text |
||||||
|
* @see Filesystem::seeInThisFile() |
||||||
|
* @return \Codeception\Maybe |
||||||
|
* ! This method is generated. DO NOT EDIT. ! |
||||||
|
* ! Documentation taken from corresponding module ! |
||||||
|
*/ |
||||||
|
public function seeInThisFile($text) { |
||||||
|
$this->scenario->assertion('seeInThisFile', func_get_args()); |
||||||
|
if ($this->scenario->running()) { |
||||||
|
$result = $this->scenario->runStep(); |
||||||
|
return new Maybe($result); |
||||||
|
} |
||||||
|
return new Maybe(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Checks If opened file doesn't contain `text` in it |
||||||
|
* |
||||||
|
* ``` php |
||||||
|
* <?php |
||||||
|
* $I->openFile('composer.json'); |
||||||
|
* $I->seeInThisFile('codeception/codeception'); |
||||||
|
* ?> |
||||||
|
* ``` |
||||||
|
* |
||||||
|
* @param $text |
||||||
|
* @see Filesystem::dontSeeInThisFile() |
||||||
|
* @return \Codeception\Maybe |
||||||
|
* ! This method is generated. DO NOT EDIT. ! |
||||||
|
* ! Documentation taken from corresponding module ! |
||||||
|
*/ |
||||||
|
public function dontSeeInThisFile($text) { |
||||||
|
$this->scenario->action('dontSeeInThisFile', func_get_args()); |
||||||
|
if ($this->scenario->running()) { |
||||||
|
$result = $this->scenario->runStep(); |
||||||
|
return new Maybe($result); |
||||||
|
} |
||||||
|
return new Maybe(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Deletes a file |
||||||
|
* @see Filesystem::deleteThisFile() |
||||||
|
* @return \Codeception\Maybe |
||||||
|
* ! This method is generated. DO NOT EDIT. ! |
||||||
|
* ! Documentation taken from corresponding module ! |
||||||
|
*/ |
||||||
|
public function deleteThisFile() { |
||||||
|
$this->scenario->action('deleteThisFile', func_get_args()); |
||||||
|
if ($this->scenario->running()) { |
||||||
|
$result = $this->scenario->runStep(); |
||||||
|
return new Maybe($result); |
||||||
|
} |
||||||
|
return new Maybe(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Checks if file exists in path. |
||||||
|
* Opens a file when it's exists |
||||||
|
* |
||||||
|
* ``` php |
||||||
|
* <?php |
||||||
|
* $I->seeFileFound('UserModel.php','app/models'); |
||||||
|
* ?> |
||||||
|
* ``` |
||||||
|
* |
||||||
|
* @param $filename |
||||||
|
* @param string $path |
||||||
|
* @see Filesystem::seeFileFound() |
||||||
|
* @return \Codeception\Maybe |
||||||
|
* ! This method is generated. DO NOT EDIT. ! |
||||||
|
* ! Documentation taken from corresponding module ! |
||||||
|
*/ |
||||||
|
public function seeFileFound($filename, $path = null) { |
||||||
|
$this->scenario->assertion('seeFileFound', func_get_args()); |
||||||
|
if ($this->scenario->running()) { |
||||||
|
$result = $this->scenario->runStep(); |
||||||
|
return new Maybe($result); |
||||||
|
} |
||||||
|
return new Maybe(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,2 @@ |
|||||||
|
<?php |
||||||
|
// Here you can initialize variables that will for your tests |
@ -0,0 +1,8 @@ |
|||||||
|
# Codeception Test Suite Configuration |
||||||
|
|
||||||
|
# suite for unit (internal) tests. |
||||||
|
# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES. |
||||||
|
|
||||||
|
class_name: CodeGuy |
||||||
|
modules: |
||||||
|
enabled: [CodeHelper] |
@ -0,0 +1,27 @@ |
|||||||
|
<?php |
||||||
|
// This class was automatically generated by build task |
||||||
|
// You can change it manually, but it will be overwritten on next build |
||||||
|
// @codingStandardsIgnoreFile |
||||||
|
|
||||||
|
use Codeception\Maybe; |
||||||
|
use Codeception\Module\CodeHelper; |
||||||
|
|
||||||
|
/** |
||||||
|
* Inherited methods |
||||||
|
* @method void wantToTest($text) |
||||||
|
* @method void wantTo($text) |
||||||
|
* @method void amTesting($method) |
||||||
|
* @method void amTestingMethod($method) |
||||||
|
* @method void testMethod($signature) |
||||||
|
* @method void expectTo($prediction) |
||||||
|
* @method void expect($prediction) |
||||||
|
* @method void amGoingTo($argumentation) |
||||||
|
* @method void am($role) |
||||||
|
* @method void lookForwardTo($role) |
||||||
|
*/ |
||||||
|
|
||||||
|
class CodeGuy extends \Codeception\AbstractGuy |
||||||
|
{ |
||||||
|
|
||||||
|
} |
||||||
|
|
@ -0,0 +1,2 @@ |
|||||||
|
<?php |
||||||
|
// Here you can initialize variables that will for your tests |
@ -0,0 +1,17 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1'))) { |
||||||
|
die('You are not allowed to access this file.'); |
||||||
|
} |
||||||
|
|
||||||
|
defined('YII_DEBUG') or define('YII_DEBUG', true); |
||||||
|
|
||||||
|
defined('YII_ENV') or define('YII_ENV', 'test'); |
||||||
|
|
||||||
|
require(__DIR__ . '/../vendor/yiisoft/yii2/yii/Yii.php'); |
||||||
|
require(__DIR__ . '/../vendor/autoload.php'); |
||||||
|
|
||||||
|
$config = require(__DIR__ . '/../config/web-test.php'); |
||||||
|
|
||||||
|
$application = new yii\web\Application($config); |
||||||
|
$application->run(); |
Loading…
Reference in new issue