|
4 | 4 | use Laravel\Reverb\Servers\Reverb\Contracts\PubSubIncomingMessageHandler;
|
5 | 5 | use Laravel\Reverb\Servers\Reverb\Publishing\RedisClientFactory;
|
6 | 6 | use Laravel\Reverb\Servers\Reverb\Publishing\RedisPubSubProvider;
|
7 |
| -use React\EventLoop\Loop; |
| 7 | +use React\EventLoop\Factory; |
8 | 8 | use React\EventLoop\LoopInterface;
|
9 | 9 | use React\Promise\Promise;
|
10 | 10 |
|
|
70 | 70 |
|
71 | 71 | it('can timeout and fail when unable to reconnect', function () {
|
72 | 72 | $clientFactory = Mockery::mock(RedisClientFactory::class);
|
73 |
| - $loop = Loop::get(); |
| 73 | + $loop = Factory::create(); |
74 | 74 |
|
75 | 75 | // Publisher client
|
76 | 76 | $clientFactory->shouldReceive('make')
|
|
147 | 147 |
|
148 | 148 | it('does not attempt to reconnect after a controlled disconnection', function () {
|
149 | 149 | $clientFactory = Mockery::mock(RedisClientFactory::class);
|
150 |
| - $loop = Loop::get(); |
| 150 | + $loop = Factory::create(); |
151 | 151 |
|
152 | 152 | // Publisher client
|
153 | 153 | $clientFactory->shouldReceive('make')
|
154 |
| - ->once() |
155 |
| - ->andReturn(new Promise(fn (callable $resolve) => $resolve)); |
156 |
| - |
157 |
| - // Subscriber client |
158 |
| - $clientFactory->shouldReceive('make') |
159 |
| - ->once() |
160 |
| - ->andReturn(new Promise(fn (callable $resolve) => $resolve)); |
| 154 | + ->twice() |
| 155 | + ->andReturn(new Promise(fn (callable $resolve) => throw new Exception)); |
161 | 156 |
|
162 | 157 | $provider = new RedisPubSubProvider($clientFactory, Mockery::mock(PubSubIncomingMessageHandler::class), 'reverb');
|
| 158 | + $loop->addTimer(1, fn () => $provider->disconnect()); |
163 | 159 | $provider->connect($loop);
|
164 |
| - |
165 |
| - $loop->run(); |
166 |
| - |
167 |
| - $provider->disconnect(); |
168 |
| - |
169 |
| - |
170 | 160 | });
|
0 commit comments