Обновлены тесты для всех форм, что отправляли письма

This commit is contained in:
ErickSkrauch
2017-11-27 02:29:15 +03:00
parent 88175fea48
commit b8049e8899
19 changed files with 387 additions and 58 deletions

View File

@ -0,0 +1,51 @@
<?php
namespace tests\codeception\common\_support\queue;
use Codeception\Exception\ModuleException;
use Codeception\Module;
use Codeception\Module\Yii2;
class CodeceptionQueueHelper extends Module {
/**
* Returns last sent message
*
* @return \yii\queue\JobInterface|null
*/
public function grabLastQueuedJob() {
$messages = $this->grabQueueJobs();
return end($messages);
}
/**
* Returns array of all sent amqp messages.
* Each message is `\PhpAmqpLib\Message\AMQPMessage` instance.
* Useful to perform additional checks using `Asserts` module.
*
* @param string|null $exchange
* @return \yii\queue\JobInterface[]
* @throws ModuleException
*/
public function grabQueueJobs() {
$amqp = $this->grabComponent('queue');
if (!$amqp instanceof Queue) {
throw new ModuleException($this, 'AMQP module is not mocked, can\'t test messages');
}
return $amqp->getMessages();
}
private function grabComponent(string $component) {
return $this->getYii2()->grabComponent($component);
}
private function getYii2(): Yii2 {
$yii2 = $this->getModule('Yii2');
if (!$yii2 instanceof Yii2) {
throw new ModuleException($this, 'Yii2 module must be configured');
}
return $yii2;
}
}

View File

@ -0,0 +1,32 @@
<?php
namespace tests\codeception\common\_support\queue;
use yii\base\NotSupportedException;
use yii\queue\Queue as BaseQueue;
class Queue extends BaseQueue {
private $messages = [];
public function push($job) {
$this->messages[] = $job;
}
public function status($id) {
throw new NotSupportedException('Status is not supported in the driver.');
}
public function getMessages() {
return $this->messages;
}
protected function pushMessage($message, $ttr, $delay, $priority) {
// This function is abstract, but will be not called
}
public function __set($name, $value) {
// Yii2 components may contains some configuration
// But we just ignore it for this mock component
}
}