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