Merge branch 'develop' into forgot_password_captcha

# Conflicts:
#	api/models/authentication/ForgotPasswordForm.php
This commit is contained in:
ErickSkrauch
2017-04-25 21:00:01 +03:00
33 changed files with 608 additions and 138 deletions

View File

@@ -4,6 +4,7 @@ modules:
- Yii2:
part: [orm, email, fixtures]
- tests\codeception\common\_support\amqp\Helper
- tests\codeception\common\_support\Mockery
config:
Yii2:
configFile: '../config/api/unit.php'

View File

@@ -1,6 +1,8 @@
<?php
namespace tests\codeception\api\unit;
use Mockery;
class TestCase extends \Codeception\Test\Unit {
/**
@@ -19,4 +21,9 @@ class TestCase extends \Codeception\Test\Unit {
return [];
}
protected function tearDown() {
parent::tearDown();
Mockery::close();
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace tests\codeception\common\_support;
use Codeception\Module;
use Codeception\TestInterface;
class Mockery extends Module {
/**
* @var bool Run mockery expectations after test or not
*/
private $assert_mocks = true;
public function _before(TestInterface $test) {
\Mockery::globalHelpers();
}
public function _after(TestInterface $test) {
if ($this->assert_mocks) {
\Mockery::close();
} else {
\Mockery::getContainer()->mockery_close();
\Mockery::resetContainer();
}
}
public function _failed(TestInterface $test, $fail) {
$this->assert_mocks = false;
}
}

View File

@@ -3,6 +3,7 @@ modules:
enabled:
- Yii2:
part: [orm, email, fixtures]
- tests\codeception\common\_support\Mockery
config:
Yii2:
configFile: '../config/common/unit.php'

View File

@@ -1,6 +1,8 @@
<?php
namespace tests\codeception\common\unit;
use Mockery;
class TestCase extends \Codeception\Test\Unit {
/**
@@ -19,4 +21,9 @@ class TestCase extends \Codeception\Test\Unit {
return [];
}
protected function tearDown() {
parent::tearDown();
Mockery::close();
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace tests\codeception\common\unit\emails;
use common\emails\EmailHelper;
use common\models\Account;
use tests\codeception\common\unit\TestCase;
class EmailHelperTest extends TestCase {
public function testBuildTo() {
/** @var Account|\Mockery\MockInterface $account */
$account = mock(Account::class)->makePartial();
$account->username = 'mock-username';
$account->email = 'mock@ely.by';
$this->assertEquals(['mock@ely.by' => 'mock-username'], EmailHelper::buildTo($account));
}
}

View File

@@ -0,0 +1,47 @@
<?php
namespace tests\codeception\common\unit\emails;
use common\emails\Template;
use tests\codeception\common\_support\ProtectedCaller;
use tests\codeception\common\unit\TestCase;
use Yii;
use yii\mail\MailerInterface;
use yii\mail\MessageInterface;
class TemplateTest extends TestCase {
use ProtectedCaller;
public function testConstructor() {
/** @var Template|\Mockery\MockInterface $template */
$template = mock(Template::class, ['find-me'])->makePartial();
$this->assertEquals('find-me', $template->getTo());
$this->assertInstanceOf(MailerInterface::class, $template->getMailer());
}
public function testGetFrom() {
Yii::$app->params['fromEmail'] = 'find-me';
/** @var Template|\Mockery\MockInterface $template */
$template = mock(Template::class)->makePartial();
$this->assertEquals(['find-me' => 'Ely.by Accounts'], $template->getFrom());
}
public function testGetParams() {
/** @var Template|\Mockery\MockInterface $template */
$template = mock(Template::class)->makePartial();
$this->assertEquals([], $template->getParams());
}
public function testCreateMessage() {
Yii::$app->params['fromEmail'] = 'from@ely.by';
/** @var Template|\Mockery\MockInterface $template */
$template = mock(Template::class, [['to@ely.by' => 'To']])->makePartial();
$template->shouldReceive('getSubject')->andReturn('mock-subject');
/** @var MessageInterface $message */
$message = $this->callProtected($template, 'createMessage');
$this->assertInstanceOf(MessageInterface::class, $message);
$this->assertEquals(['to@ely.by' => 'To'], $message->getTo());
$this->assertEquals(['from@ely.by' => 'Ely.by Accounts'], $message->getFrom());
$this->assertEquals('mock-subject', $message->getSubject());
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace tests\codeception\common\unit\emails;
use common\components\EmailRenderer;
use common\emails\TemplateWithRenderer;
use Ely\Email\TemplateBuilder;
use tests\codeception\common\_support\ProtectedCaller;
use tests\codeception\common\unit\TestCase;
use yii\mail\MailerInterface;
use yii\mail\MessageInterface;
class TemplateWithRendererTest extends TestCase {
use ProtectedCaller;
public function testConstructor() {
/** @var TemplateWithRenderer|\Mockery\MockInterface $template */
$template = mock(TemplateWithRenderer::class, ['mock-to', 'mock-locale'])->makePartial();
$this->assertEquals('mock-to', $template->getTo());
$this->assertEquals('mock-locale', $template->getLocale());
$this->assertInstanceOf(MailerInterface::class, $template->getMailer());
$this->assertInstanceOf(EmailRenderer::class, $template->getEmailRenderer());
}
public function testCreateMessage() {
/** @var TemplateBuilder|\Mockery\MockInterface $templateBuilder */
$templateBuilder = mock(TemplateBuilder::class)->makePartial();
$templateBuilder->shouldReceive('render')->andReturn('mock-html');
/** @var EmailRenderer|\Mockery\MockInterface $renderer */
$renderer = mock(EmailRenderer::class)->makePartial();
$renderer->shouldReceive('getTemplate')->with('mock-template')->andReturn($templateBuilder);
/** @var TemplateWithRenderer|\Mockery\MockInterface $template */
$template = mock(TemplateWithRenderer::class, [['to@ely.by' => 'To'], 'mock-locale']);
$template->makePartial();
$template->shouldReceive('getEmailRenderer')->andReturn($renderer);
$template->shouldReceive('getFrom')->andReturn(['from@ely.by' => 'From']);
$template->shouldReceive('getSubject')->andReturn('mock-subject');
$template->shouldReceive('getTemplateName')->andReturn('mock-template');
/** @var \yii\swiftmailer\Message $message */
$message = $this->callProtected($template, 'createMessage');
$this->assertInstanceOf(MessageInterface::class, $message);
$this->assertEquals(['to@ely.by' => 'To'], $message->getTo());
$this->assertEquals(['from@ely.by' => 'From'], $message->getFrom());
$this->assertEquals('mock-subject', $message->getSubject());
$this->assertEquals('mock-html', $message->getSwiftMessage()->getBody());
}
}

View File

@@ -3,6 +3,7 @@ modules:
enabled:
- Yii2:
part: [orm, email, fixtures]
- tests\codeception\common\_support\Mockery
config:
Yii2:
configFile: '../config/console/unit.php'

View File

@@ -2,6 +2,7 @@
namespace tests\codeception\console\unit;
use Codeception\Test\Unit;
use Mockery;
class TestCase extends Unit {
@@ -21,4 +22,9 @@ class TestCase extends Unit {
return [];
}
protected function tearDown() {
parent::tearDown();
Mockery::close();
}
}