262 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			262 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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);
 | 
						|
    }
 | 
						|
}
 |