expectException(MessageException::class); Loop::run(function () use ($message): Generator { yield $message->finish(); yield $message->finish(); }); } /** * @dataProvider messages */ public function testDoubleRequeue(Message $message): void { $this->expectException(MessageException::class); Loop::run(function () use ($message): Generator { yield $message->requeue(1); yield $message->requeue(5); }); } /** * @dataProvider messages */ public function testTouchAfterFinish(Message $message): void { $this->expectException(MessageException::class); Loop::run(function () use ($message): Generator { yield $message->finish(); yield $message->touch(); }); } /** * @return Generator */ public function messages(): Generator { /** @phpstan-ignore-next-line */ $consumer = $this->createMock(Consumer::class); $consumer->method('fin')->willReturn(new Success()); $consumer->method('touch')->willReturn(new Success()); $consumer->method('req')->willReturn(new Success()); yield [new Message('id', 'body', 0, 0, $consumer)]; } }