diff --git a/tests/Type/Symfony/data/messenger_handle_trait.php b/tests/Type/Symfony/data/messenger_handle_trait.php index 7a86d482..273466b3 100644 --- a/tests/Type/Symfony/data/messenger_handle_trait.php +++ b/tests/Type/Symfony/data/messenger_handle_trait.php @@ -111,3 +111,32 @@ public function __invoke() assertType('mixed', $this->handle(new MultiHandlersForTheSameMessageQuery())); } } + +class QueryBus { + use HandleTrait; + + public function dispatch(object $query): mixed + { + return $this->handle($query); + } +} + +class Controller { + public function action() + { + $queryBus = new QueryBus(); + + assertType(RegularQueryResult::class, $queryBus->dispatch(new RegularQuery())); + + assertType('bool', $queryBus->dispatch(new BooleanQuery())); + assertType('int', $queryBus->dispatch(new IntQuery())); + assertType('float', $queryBus->dispatch(new FloatQuery())); + assertType('string', $queryBus->dispatch(new StringQuery())); + + assertType(TaggedResult::class, $queryBus->dispatch(new TaggedQuery())); + + // HandleTrait will throw exception in fact due to multiple handle methods/handlers per single query + assertType('mixed', $queryBus->dispatch(new MultiHandlesForInTheSameHandlerQuery())); + assertType('mixed', $queryBus->dispatch(new MultiHandlersForTheSameMessageQuery())); + } +}