-
Notifications
You must be signed in to change notification settings - Fork 27
/
MiddlewareTest.php
66 lines (51 loc) · 1.6 KB
/
MiddlewareTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
declare(strict_types=1);
namespace Zanzara\Test\Middleware;
use PHPUnit\Framework\TestCase;
use Zanzara\Config;
use Zanzara\Context;
use Zanzara\Zanzara;
/**
*
*/
class MiddlewareTest extends TestCase
{
/**
* Tests the middleware stack is executed in the correct order.
*
*/
public function testMiddleware()
{
$config = new Config();
$config->setUpdateMode(Config::WEBHOOK_MODE);
$config->setUpdateStream(__DIR__ . '/../update_types/command.json');
$bot = new Zanzara("test", $config);
$bot->middleware(new FirstMiddleware());
$secondMiddleware = function (Context $ctx, $next) {
if ($ctx->get('first') === 'executed') {
$ctx->set('second', 'executed');
$next($ctx);
}
};
$bot->middleware($secondMiddleware);
$bot->onUpdate(function (Context $ctx) {
$this->assertSame('executed', $ctx->get('fourth'));
})->middleware(new FourthMiddleware())->middleware(new ThirdMiddleware());
$bot->run();
}
public function testMiddlewareOnFallback()
{
$config = new Config();
$config->setUpdateMode(Config::WEBHOOK_MODE);
$config->setUpdateStream(__DIR__ . '/../update_types/command.json');
$bot = new Zanzara("test", $config);
$bot->middleware(function (Context $ctx, $next) {
$ctx->set('exec', true);
$next($ctx);
});
$bot->fallback(function (Context $ctx) {
$this->assertNotNull($ctx->get('exec'));
});
$bot->run();
}
}