first commit
This commit is contained in:
BIN
tests/.DS_Store
vendored
Normal file
BIN
tests/.DS_Store
vendored
Normal file
Binary file not shown.
6
tests/_bootstrap.php
Normal file
6
tests/_bootstrap.php
Normal file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
define('YII_ENV', 'test');
|
||||
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
||||
|
||||
require_once __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
|
||||
require __DIR__ .'/../vendor/autoload.php';
|
||||
1
tests/_data/.gitkeep
Normal file
1
tests/_data/.gitkeep
Normal file
@ -0,0 +1 @@
|
||||
|
||||
2
tests/_output/.gitignore
vendored
Normal file
2
tests/_output/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
||||
26
tests/_support/AcceptanceTester.php
Normal file
26
tests/_support/AcceptanceTester.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
|
||||
/**
|
||||
* Inherited Methods
|
||||
* @method void wantToTest($text)
|
||||
* @method void wantTo($text)
|
||||
* @method void execute($callable)
|
||||
* @method void expectTo($prediction)
|
||||
* @method void expect($prediction)
|
||||
* @method void amGoingTo($argumentation)
|
||||
* @method void am($role)
|
||||
* @method void lookForwardTo($achieveValue)
|
||||
* @method void comment($description)
|
||||
* @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
|
||||
*
|
||||
* @SuppressWarnings(PHPMD)
|
||||
*/
|
||||
class AcceptanceTester extends \Codeception\Actor
|
||||
{
|
||||
use _generated\AcceptanceTesterActions;
|
||||
|
||||
/**
|
||||
* Define custom actions here
|
||||
*/
|
||||
}
|
||||
23
tests/_support/FunctionalTester.php
Normal file
23
tests/_support/FunctionalTester.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
|
||||
/**
|
||||
* Inherited Methods
|
||||
* @method void wantToTest($text)
|
||||
* @method void wantTo($text)
|
||||
* @method void execute($callable)
|
||||
* @method void expectTo($prediction)
|
||||
* @method void expect($prediction)
|
||||
* @method void amGoingTo($argumentation)
|
||||
* @method void am($role)
|
||||
* @method void lookForwardTo($achieveValue)
|
||||
* @method void comment($description)
|
||||
* @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
|
||||
*
|
||||
* @SuppressWarnings(PHPMD)
|
||||
*/
|
||||
class FunctionalTester extends \Codeception\Actor
|
||||
{
|
||||
use _generated\FunctionalTesterActions;
|
||||
|
||||
}
|
||||
26
tests/_support/UnitTester.php
Normal file
26
tests/_support/UnitTester.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
|
||||
/**
|
||||
* Inherited Methods
|
||||
* @method void wantToTest($text)
|
||||
* @method void wantTo($text)
|
||||
* @method void execute($callable)
|
||||
* @method void expectTo($prediction)
|
||||
* @method void expect($prediction)
|
||||
* @method void amGoingTo($argumentation)
|
||||
* @method void am($role)
|
||||
* @method void lookForwardTo($achieveValue)
|
||||
* @method void comment($description)
|
||||
* @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
|
||||
*
|
||||
* @SuppressWarnings(PHPMD)
|
||||
*/
|
||||
class UnitTester extends \Codeception\Actor
|
||||
{
|
||||
use _generated\UnitTesterActions;
|
||||
|
||||
/**
|
||||
* Define custom actions here
|
||||
*/
|
||||
}
|
||||
10
tests/acceptance.suite.yml.example
Normal file
10
tests/acceptance.suite.yml.example
Normal file
@ -0,0 +1,10 @@
|
||||
actor: AcceptanceTester
|
||||
modules:
|
||||
enabled:
|
||||
- WebDriver:
|
||||
url: http://127.0.0.1:8080/
|
||||
browser: firefox
|
||||
- Yii2:
|
||||
part: orm
|
||||
entryScript: index-test.php
|
||||
cleanup: false
|
||||
12
tests/acceptance/AboutCest.php
Normal file
12
tests/acceptance/AboutCest.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
use yii\helpers\Url;
|
||||
|
||||
class AboutCest
|
||||
{
|
||||
public function ensureThatAboutWorks(AcceptanceTester $I)
|
||||
{
|
||||
$I->amOnPage(Url::toRoute('/site/about'));
|
||||
$I->see('About', 'h1');
|
||||
}
|
||||
}
|
||||
34
tests/acceptance/ContactCest.php
Normal file
34
tests/acceptance/ContactCest.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
use yii\helpers\Url;
|
||||
|
||||
class ContactCest
|
||||
{
|
||||
public function _before(\AcceptanceTester $I)
|
||||
{
|
||||
$I->amOnPage(Url::toRoute('/site/contact'));
|
||||
}
|
||||
|
||||
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->wait(2); // wait for button to be clicked
|
||||
|
||||
$I->dontSeeElement('#contact-form');
|
||||
$I->see('Thank you for contacting us. We will respond to you as soon as possible.');
|
||||
}
|
||||
}
|
||||
18
tests/acceptance/HomeCest.php
Normal file
18
tests/acceptance/HomeCest.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
use yii\helpers\Url;
|
||||
|
||||
class HomeCest
|
||||
{
|
||||
public function ensureThatHomePageWorks(AcceptanceTester $I)
|
||||
{
|
||||
$I->amOnPage(Url::toRoute('/site/index'));
|
||||
$I->see('My Company');
|
||||
|
||||
$I->seeLink('About');
|
||||
$I->click('About');
|
||||
$I->wait(2); // wait for page to be opened
|
||||
|
||||
$I->see('This is the About page.');
|
||||
}
|
||||
}
|
||||
21
tests/acceptance/LoginCest.php
Normal file
21
tests/acceptance/LoginCest.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
use yii\helpers\Url;
|
||||
|
||||
class LoginCest
|
||||
{
|
||||
public function ensureThatLoginWorks(AcceptanceTester $I)
|
||||
{
|
||||
$I->amOnPage(Url::toRoute('/site/login'));
|
||||
$I->see('Login', 'h1');
|
||||
|
||||
$I->amGoingTo('try to login with correct credentials');
|
||||
$I->fillField('input[name="LoginForm[username]"]', 'admin');
|
||||
$I->fillField('input[name="LoginForm[password]"]', 'admin');
|
||||
$I->click('login-button');
|
||||
$I->wait(2); // wait for button to be clicked
|
||||
|
||||
$I->expectTo('see user info');
|
||||
$I->see('Logout');
|
||||
}
|
||||
}
|
||||
1
tests/acceptance/_bootstrap.php
Normal file
1
tests/acceptance/_bootstrap.php
Normal file
@ -0,0 +1 @@
|
||||
<?php
|
||||
29
tests/bin/yii
Executable file
29
tests/bin/yii
Executable file
@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/**
|
||||
* Yii console bootstrap file.
|
||||
*
|
||||
* @link https://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license https://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
||||
defined('YII_ENV') or define('YII_ENV', 'test');
|
||||
|
||||
require __DIR__ . '/../../vendor/autoload.php';
|
||||
require __DIR__ . '/../../vendor/yiisoft/yii2/Yii.php';
|
||||
|
||||
$config = yii\helpers\ArrayHelper::merge(
|
||||
require __DIR__ . '/../../config/console.php',
|
||||
[
|
||||
'components' => [
|
||||
'db' => require __DIR__ . '/../../config/test_db.php'
|
||||
]
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
$application = new yii\console\Application($config);
|
||||
$exitCode = $application->run();
|
||||
exit($exitCode);
|
||||
20
tests/bin/yii.bat
Normal file
20
tests/bin/yii.bat
Normal file
@ -0,0 +1,20 @@
|
||||
@echo off
|
||||
|
||||
rem -------------------------------------------------------------
|
||||
rem Yii command line bootstrap script for Windows.
|
||||
rem
|
||||
rem @author Qiang Xue <qiang.xue@gmail.com>
|
||||
rem @link https://www.yiiframework.com/
|
||||
rem @copyright Copyright (c) 2008 Yii Software LLC
|
||||
rem @license https://www.yiiframework.com/license/
|
||||
rem -------------------------------------------------------------
|
||||
|
||||
@setlocal
|
||||
|
||||
set YII_PATH=%~dp0
|
||||
|
||||
if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe
|
||||
|
||||
"%PHP_COMMAND%" "%YII_PATH%yii" %*
|
||||
|
||||
@endlocal
|
||||
14
tests/functional.suite.yml
Normal file
14
tests/functional.suite.yml
Normal file
@ -0,0 +1,14 @@
|
||||
# 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.
|
||||
#basic/web/index.php
|
||||
actor: FunctionalTester
|
||||
modules:
|
||||
enabled:
|
||||
- Filesystem
|
||||
- Yii2
|
||||
- Asserts
|
||||
57
tests/functional/ContactFormCest.php
Normal file
57
tests/functional/ContactFormCest.php
Normal file
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
class ContactFormCest
|
||||
{
|
||||
public function _before(\FunctionalTester $I)
|
||||
{
|
||||
$I->amOnRoute('site/contact');
|
||||
}
|
||||
|
||||
public function openContactPage(\FunctionalTester $I)
|
||||
{
|
||||
$I->see('Contact', 'h1');
|
||||
}
|
||||
|
||||
public function submitEmptyForm(\FunctionalTester $I)
|
||||
{
|
||||
$I->submitForm('#contact-form', []);
|
||||
$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');
|
||||
}
|
||||
|
||||
public function submitFormWithIncorrectEmail(\FunctionalTester $I)
|
||||
{
|
||||
$I->submitForm('#contact-form', [
|
||||
'ContactForm[name]' => 'tester',
|
||||
'ContactForm[email]' => 'tester.email',
|
||||
'ContactForm[subject]' => 'test subject',
|
||||
'ContactForm[body]' => 'test content',
|
||||
'ContactForm[verifyCode]' => 'testme',
|
||||
]);
|
||||
$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');
|
||||
}
|
||||
|
||||
public function submitFormSuccessfully(\FunctionalTester $I)
|
||||
{
|
||||
$I->submitForm('#contact-form', [
|
||||
'ContactForm[name]' => 'tester',
|
||||
'ContactForm[email]' => 'tester@example.com',
|
||||
'ContactForm[subject]' => 'test subject',
|
||||
'ContactForm[body]' => 'test content',
|
||||
'ContactForm[verifyCode]' => 'testme',
|
||||
]);
|
||||
$I->seeEmailIsSent();
|
||||
$I->dontSeeElement('#contact-form');
|
||||
$I->see('Thank you for contacting us. We will respond to you as soon as possible.');
|
||||
}
|
||||
}
|
||||
59
tests/functional/LoginFormCest.php
Normal file
59
tests/functional/LoginFormCest.php
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
class LoginFormCest
|
||||
{
|
||||
public function _before(\FunctionalTester $I)
|
||||
{
|
||||
$I->amOnRoute('site/login');
|
||||
}
|
||||
|
||||
public function openLoginPage(\FunctionalTester $I)
|
||||
{
|
||||
$I->see('Login', 'h1');
|
||||
|
||||
}
|
||||
|
||||
// demonstrates `amLoggedInAs` method
|
||||
public function internalLoginById(\FunctionalTester $I)
|
||||
{
|
||||
$I->amLoggedInAs(100);
|
||||
$I->amOnPage('/');
|
||||
$I->see('Logout (admin)');
|
||||
}
|
||||
|
||||
// demonstrates `amLoggedInAs` method
|
||||
public function internalLoginByInstance(\FunctionalTester $I)
|
||||
{
|
||||
$I->amLoggedInAs(\app\models\User::findByUsername('admin'));
|
||||
$I->amOnPage('/');
|
||||
$I->see('Logout (admin)');
|
||||
}
|
||||
|
||||
public function loginWithEmptyCredentials(\FunctionalTester $I)
|
||||
{
|
||||
$I->submitForm('#login-form', []);
|
||||
$I->expectTo('see validations errors');
|
||||
$I->see('Username cannot be blank.');
|
||||
$I->see('Password cannot be blank.');
|
||||
}
|
||||
|
||||
public function loginWithWrongCredentials(\FunctionalTester $I)
|
||||
{
|
||||
$I->submitForm('#login-form', [
|
||||
'LoginForm[username]' => 'admin',
|
||||
'LoginForm[password]' => 'wrong',
|
||||
]);
|
||||
$I->expectTo('see validations errors');
|
||||
$I->see('Incorrect username or password.');
|
||||
}
|
||||
|
||||
public function loginSuccessfully(\FunctionalTester $I)
|
||||
{
|
||||
$I->submitForm('#login-form', [
|
||||
'LoginForm[username]' => 'admin',
|
||||
'LoginForm[password]' => 'admin',
|
||||
]);
|
||||
$I->see('Logout (admin)');
|
||||
$I->dontSeeElement('form#login-form');
|
||||
}
|
||||
}
|
||||
1
tests/functional/_bootstrap.php
Normal file
1
tests/functional/_bootstrap.php
Normal file
@ -0,0 +1 @@
|
||||
<?php
|
||||
11
tests/unit.suite.yml
Normal file
11
tests/unit.suite.yml
Normal file
@ -0,0 +1,11 @@
|
||||
# Codeception Test Suite Configuration
|
||||
|
||||
# suite for unit (internal) tests.
|
||||
# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES.
|
||||
|
||||
actor: UnitTester
|
||||
modules:
|
||||
enabled:
|
||||
- Asserts
|
||||
- Yii2:
|
||||
part: [orm, email, fixtures]
|
||||
3
tests/unit/_bootstrap.php
Normal file
3
tests/unit/_bootstrap.php
Normal file
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
|
||||
// add unit testing specific bootstrap code here
|
||||
41
tests/unit/models/ContactFormTest.php
Normal file
41
tests/unit/models/ContactFormTest.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace tests\unit\models;
|
||||
|
||||
use app\models\ContactForm;
|
||||
use yii\mail\MessageInterface;
|
||||
|
||||
class ContactFormTest extends \Codeception\Test\Unit
|
||||
{
|
||||
/**
|
||||
* @var \UnitTester
|
||||
*/
|
||||
public $tester;
|
||||
|
||||
public function testEmailIsSentOnContact()
|
||||
{
|
||||
$model = new ContactForm();
|
||||
|
||||
$model->attributes = [
|
||||
'name' => 'Tester',
|
||||
'email' => 'tester@example.com',
|
||||
'subject' => 'very important letter subject',
|
||||
'body' => 'body of current message',
|
||||
'verifyCode' => 'testme',
|
||||
];
|
||||
|
||||
verify($model->contact('admin@example.com'))->notEmpty();
|
||||
|
||||
// using Yii2 module actions to check email was sent
|
||||
$this->tester->seeEmailIsSent();
|
||||
|
||||
/** @var MessageInterface $emailMessage */
|
||||
$emailMessage = $this->tester->grabLastSentEmail();
|
||||
verify($emailMessage)->instanceOf('yii\mail\MessageInterface');
|
||||
verify($emailMessage->getTo())->arrayHasKey('admin@example.com');
|
||||
verify($emailMessage->getFrom())->arrayHasKey('noreply@example.com');
|
||||
verify($emailMessage->getReplyTo())->arrayHasKey('tester@example.com');
|
||||
verify($emailMessage->getSubject())->equals('very important letter subject');
|
||||
verify($emailMessage->toString())->stringContainsString('body of current message');
|
||||
}
|
||||
}
|
||||
51
tests/unit/models/LoginFormTest.php
Normal file
51
tests/unit/models/LoginFormTest.php
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace tests\unit\models;
|
||||
|
||||
use app\models\LoginForm;
|
||||
|
||||
class LoginFormTest extends \Codeception\Test\Unit
|
||||
{
|
||||
private $model;
|
||||
|
||||
protected function _after()
|
||||
{
|
||||
\Yii::$app->user->logout();
|
||||
}
|
||||
|
||||
public function testLoginNoUser()
|
||||
{
|
||||
$this->model = new LoginForm([
|
||||
'username' => 'not_existing_username',
|
||||
'password' => 'not_existing_password',
|
||||
]);
|
||||
|
||||
verify($this->model->login())->false();
|
||||
verify(\Yii::$app->user->isGuest)->true();
|
||||
}
|
||||
|
||||
public function testLoginWrongPassword()
|
||||
{
|
||||
$this->model = new LoginForm([
|
||||
'username' => 'demo',
|
||||
'password' => 'wrong_password',
|
||||
]);
|
||||
|
||||
verify($this->model->login())->false();
|
||||
verify(\Yii::$app->user->isGuest)->true();
|
||||
verify($this->model->errors)->arrayHasKey('password');
|
||||
}
|
||||
|
||||
public function testLoginCorrect()
|
||||
{
|
||||
$this->model = new LoginForm([
|
||||
'username' => 'demo',
|
||||
'password' => 'demo',
|
||||
]);
|
||||
|
||||
verify($this->model->login())->true();
|
||||
verify(\Yii::$app->user->isGuest)->false();
|
||||
verify($this->model->errors)->arrayHasNotKey('password');
|
||||
}
|
||||
|
||||
}
|
||||
44
tests/unit/models/UserTest.php
Normal file
44
tests/unit/models/UserTest.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace tests\unit\models;
|
||||
|
||||
use app\models\User;
|
||||
|
||||
class UserTest extends \Codeception\Test\Unit
|
||||
{
|
||||
public function testFindUserById()
|
||||
{
|
||||
verify($user = User::findIdentity(100))->notEmpty();
|
||||
verify($user->username)->equals('admin');
|
||||
|
||||
verify(User::findIdentity(999))->empty();
|
||||
}
|
||||
|
||||
public function testFindUserByAccessToken()
|
||||
{
|
||||
verify($user = User::findIdentityByAccessToken('100-token'))->notEmpty();
|
||||
verify($user->username)->equals('admin');
|
||||
|
||||
verify(User::findIdentityByAccessToken('non-existing'))->empty();
|
||||
}
|
||||
|
||||
public function testFindUserByUsername()
|
||||
{
|
||||
verify($user = User::findByUsername('admin'))->notEmpty();
|
||||
verify(User::findByUsername('not-admin'))->empty();
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testFindUserByUsername
|
||||
*/
|
||||
public function testValidateUser()
|
||||
{
|
||||
$user = User::findByUsername('admin');
|
||||
verify($user->validateAuthKey('test100key'))->notEmpty();
|
||||
verify($user->validateAuthKey('test102key'))->empty();
|
||||
|
||||
verify($user->validatePassword('admin'))->notEmpty();
|
||||
verify($user->validatePassword('123456'))->empty();
|
||||
}
|
||||
|
||||
}
|
||||
261
tests/unit/widgets/AlertTest.php
Normal file
261
tests/unit/widgets/AlertTest.php
Normal file
@ -0,0 +1,261 @@
|
||||
<?php
|
||||
|
||||
namespace tests\unit\widgets;
|
||||
|
||||
use app\widgets\Alert;
|
||||
use Yii;
|
||||
|
||||
class AlertTest extends \Codeception\Test\Unit
|
||||
{
|
||||
public function testSingleErrorMessage()
|
||||
{
|
||||
$message = 'This is an error message';
|
||||
|
||||
Yii::$app->session->setFlash('error', $message);
|
||||
|
||||
$renderingResult = Alert::widget();
|
||||
|
||||
verify($renderingResult)->stringContainsString($message);
|
||||
verify($renderingResult)->stringContainsString('alert-danger');
|
||||
|
||||
verify($renderingResult)->stringNotContainsString('alert-success');
|
||||
verify($renderingResult)->stringNotContainsString('alert-info');
|
||||
verify($renderingResult)->stringNotContainsString('alert-warning');
|
||||
}
|
||||
|
||||
public function testMultipleErrorMessages()
|
||||
{
|
||||
$firstMessage = 'This is the first error message';
|
||||
$secondMessage = 'This is the second error message';
|
||||
|
||||
Yii::$app->session->setFlash('error', [$firstMessage, $secondMessage]);
|
||||
|
||||
$renderingResult = Alert::widget();
|
||||
|
||||
verify($renderingResult)->stringContainsString($firstMessage);
|
||||
verify($renderingResult)->stringContainsString($secondMessage);
|
||||
verify($renderingResult)->stringContainsString('alert-danger');
|
||||
|
||||
verify($renderingResult)->stringNotContainsString('alert-success');
|
||||
verify($renderingResult)->stringNotContainsString('alert-info');
|
||||
verify($renderingResult)->stringNotContainsString('alert-warning');
|
||||
}
|
||||
|
||||
public function testSingleDangerMessage()
|
||||
{
|
||||
$message = 'This is a danger message';
|
||||
|
||||
Yii::$app->session->setFlash('danger', $message);
|
||||
|
||||
$renderingResult = Alert::widget();
|
||||
|
||||
verify($renderingResult)->stringContainsString($message);
|
||||
verify($renderingResult)->stringContainsString('alert-danger');
|
||||
|
||||
verify($renderingResult)->stringNotContainsString('alert-success');
|
||||
verify($renderingResult)->stringNotContainsString('alert-info');
|
||||
verify($renderingResult)->stringNotContainsString('alert-warning');
|
||||
}
|
||||
|
||||
public function testMultipleDangerMessages()
|
||||
{
|
||||
$firstMessage = 'This is the first danger message';
|
||||
$secondMessage = 'This is the second danger message';
|
||||
|
||||
Yii::$app->session->setFlash('danger', [$firstMessage, $secondMessage]);
|
||||
|
||||
$renderingResult = Alert::widget();
|
||||
|
||||
verify($renderingResult)->stringContainsString($firstMessage);
|
||||
verify($renderingResult)->stringContainsString($secondMessage);
|
||||
verify($renderingResult)->stringContainsString('alert-danger');
|
||||
|
||||
verify($renderingResult)->stringNotContainsString('alert-success');
|
||||
verify($renderingResult)->stringNotContainsString('alert-info');
|
||||
verify($renderingResult)->stringNotContainsString('alert-warning');
|
||||
}
|
||||
|
||||
public function testSingleSuccessMessage()
|
||||
{
|
||||
$message = 'This is a success message';
|
||||
|
||||
Yii::$app->session->setFlash('success', $message);
|
||||
|
||||
$renderingResult = Alert::widget();
|
||||
|
||||
verify($renderingResult)->stringContainsString($message);
|
||||
verify($renderingResult)->stringContainsString('alert-success');
|
||||
|
||||
verify($renderingResult)->stringNotContainsString('alert-danger');
|
||||
verify($renderingResult)->stringNotContainsString('alert-info');
|
||||
verify($renderingResult)->stringNotContainsString('alert-warning');
|
||||
}
|
||||
|
||||
public function testMultipleSuccessMessages()
|
||||
{
|
||||
$firstMessage = 'This is the first danger message';
|
||||
$secondMessage = 'This is the second danger message';
|
||||
|
||||
Yii::$app->session->setFlash('success', [$firstMessage, $secondMessage]);
|
||||
|
||||
$renderingResult = Alert::widget();
|
||||
|
||||
verify($renderingResult)->stringContainsString($firstMessage);
|
||||
verify($renderingResult)->stringContainsString($secondMessage);
|
||||
verify($renderingResult)->stringContainsString('alert-success');
|
||||
|
||||
verify($renderingResult)->stringNotContainsString('alert-danger');
|
||||
verify($renderingResult)->stringNotContainsString('alert-info');
|
||||
verify($renderingResult)->stringNotContainsString('alert-warning');
|
||||
}
|
||||
|
||||
public function testSingleInfoMessage()
|
||||
{
|
||||
$message = 'This is an info message';
|
||||
|
||||
Yii::$app->session->setFlash('info', $message);
|
||||
|
||||
$renderingResult = Alert::widget();
|
||||
|
||||
verify($renderingResult)->stringContainsString($message);
|
||||
verify($renderingResult)->stringContainsString('alert-info');
|
||||
|
||||
verify($renderingResult)->stringNotContainsString('alert-danger');
|
||||
verify($renderingResult)->stringNotContainsString('alert-success');
|
||||
verify($renderingResult)->stringNotContainsString('alert-warning');
|
||||
}
|
||||
|
||||
public function testMultipleInfoMessages()
|
||||
{
|
||||
$firstMessage = 'This is the first info message';
|
||||
$secondMessage = 'This is the second info message';
|
||||
|
||||
Yii::$app->session->setFlash('info', [$firstMessage, $secondMessage]);
|
||||
|
||||
$renderingResult = Alert::widget();
|
||||
|
||||
verify($renderingResult)->stringContainsString($firstMessage);
|
||||
verify($renderingResult)->stringContainsString($secondMessage);
|
||||
verify($renderingResult)->stringContainsString('alert-info');
|
||||
|
||||
verify($renderingResult)->stringNotContainsString('alert-danger');
|
||||
verify($renderingResult)->stringNotContainsString('alert-success');
|
||||
verify($renderingResult)->stringNotContainsString('alert-warning');
|
||||
}
|
||||
|
||||
public function testSingleWarningMessage()
|
||||
{
|
||||
$message = 'This is a warning message';
|
||||
|
||||
Yii::$app->session->setFlash('warning', $message);
|
||||
|
||||
$renderingResult = Alert::widget();
|
||||
|
||||
verify($renderingResult)->stringContainsString($message);
|
||||
verify($renderingResult)->stringContainsString('alert-warning');
|
||||
|
||||
verify($renderingResult)->stringNotContainsString('alert-danger');
|
||||
verify($renderingResult)->stringNotContainsString('alert-success');
|
||||
verify($renderingResult)->stringNotContainsString('alert-info');
|
||||
}
|
||||
|
||||
public function testMultipleWarningMessages()
|
||||
{
|
||||
$firstMessage = 'This is the first warning message';
|
||||
$secondMessage = 'This is the second warning message';
|
||||
|
||||
Yii::$app->session->setFlash('warning', [$firstMessage, $secondMessage]);
|
||||
|
||||
$renderingResult = Alert::widget();
|
||||
|
||||
verify($renderingResult)->stringContainsString($firstMessage);
|
||||
verify($renderingResult)->stringContainsString($secondMessage);
|
||||
verify($renderingResult)->stringContainsString('alert-warning');
|
||||
|
||||
verify($renderingResult)->stringNotContainsString('alert-danger');
|
||||
verify($renderingResult)->stringNotContainsString('alert-success');
|
||||
verify($renderingResult)->stringNotContainsString('alert-info');
|
||||
}
|
||||
|
||||
public function testSingleMixedMessages() {
|
||||
$errorMessage = 'This is an error message';
|
||||
$dangerMessage = 'This is a danger message';
|
||||
$successMessage = 'This is a success message';
|
||||
$infoMessage = 'This is a info message';
|
||||
$warningMessage = 'This is a warning message';
|
||||
|
||||
Yii::$app->session->setFlash('error', $errorMessage);
|
||||
Yii::$app->session->setFlash('danger', $dangerMessage);
|
||||
Yii::$app->session->setFlash('success', $successMessage);
|
||||
Yii::$app->session->setFlash('info', $infoMessage);
|
||||
Yii::$app->session->setFlash('warning', $warningMessage);
|
||||
|
||||
$renderingResult = Alert::widget();
|
||||
|
||||
verify($renderingResult)->stringContainsString($errorMessage);
|
||||
verify($renderingResult)->stringContainsString($dangerMessage);
|
||||
verify($renderingResult)->stringContainsString($successMessage);
|
||||
verify($renderingResult)->stringContainsString($infoMessage);
|
||||
verify($renderingResult)->stringContainsString($warningMessage);
|
||||
|
||||
verify($renderingResult)->stringContainsString('alert-danger');
|
||||
verify($renderingResult)->stringContainsString('alert-success');
|
||||
verify($renderingResult)->stringContainsString('alert-info');
|
||||
verify($renderingResult)->stringContainsString('alert-warning');
|
||||
}
|
||||
|
||||
public function testMultipleMixedMessages() {
|
||||
$firstErrorMessage = 'This is the first error message';
|
||||
$secondErrorMessage = 'This is the second error message';
|
||||
$firstDangerMessage = 'This is the first danger message';
|
||||
$secondDangerMessage = 'This is the second';
|
||||
$firstSuccessMessage = 'This is the first success message';
|
||||
$secondSuccessMessage = 'This is the second success message';
|
||||
$firstInfoMessage = 'This is the first info message';
|
||||
$secondInfoMessage = 'This is the second info message';
|
||||
$firstWarningMessage = 'This is the first warning message';
|
||||
$secondWarningMessage = 'This is the second warning message';
|
||||
|
||||
Yii::$app->session->setFlash('error', [$firstErrorMessage, $secondErrorMessage]);
|
||||
Yii::$app->session->setFlash('danger', [$firstDangerMessage, $secondDangerMessage]);
|
||||
Yii::$app->session->setFlash('success', [$firstSuccessMessage, $secondSuccessMessage]);
|
||||
Yii::$app->session->setFlash('info', [$firstInfoMessage, $secondInfoMessage]);
|
||||
Yii::$app->session->setFlash('warning', [$firstWarningMessage, $secondWarningMessage]);
|
||||
|
||||
$renderingResult = Alert::widget();
|
||||
|
||||
verify($renderingResult)->stringContainsString($firstErrorMessage);
|
||||
verify($renderingResult)->stringContainsString($secondErrorMessage);
|
||||
verify($renderingResult)->stringContainsString($firstDangerMessage);
|
||||
verify($renderingResult)->stringContainsString($secondDangerMessage);
|
||||
verify($renderingResult)->stringContainsString($firstSuccessMessage);
|
||||
verify($renderingResult)->stringContainsString($secondSuccessMessage);
|
||||
verify($renderingResult)->stringContainsString($firstInfoMessage);
|
||||
verify($renderingResult)->stringContainsString($secondInfoMessage);
|
||||
verify($renderingResult)->stringContainsString($firstWarningMessage);
|
||||
verify($renderingResult)->stringContainsString($secondWarningMessage);
|
||||
|
||||
verify($renderingResult)->stringContainsString('alert-danger');
|
||||
verify($renderingResult)->stringContainsString('alert-success');
|
||||
verify($renderingResult)->stringContainsString('alert-info');
|
||||
verify($renderingResult)->stringContainsString('alert-warning');
|
||||
}
|
||||
|
||||
public function testFlashIntegrity()
|
||||
{
|
||||
$errorMessage = 'This is an error message';
|
||||
$unrelatedMessage = 'This is a message that is not related to the alert widget';
|
||||
|
||||
Yii::$app->session->setFlash('error', $errorMessage);
|
||||
Yii::$app->session->setFlash('unrelated', $unrelatedMessage);
|
||||
|
||||
Alert::widget();
|
||||
|
||||
// Simulate redirect
|
||||
Yii::$app->session->close();
|
||||
Yii::$app->session->open();
|
||||
|
||||
verify(Yii::$app->session->getFlash('error'))->empty();
|
||||
verify(Yii::$app->session->getFlash('unrelated'))->equals($unrelatedMessage);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user