/** * Test handle method. */ public function testHandle() { $this->given($resolver = new HandlerClassResolver(new FromQueryNamedResolver(), new MethodWithShortObjectNameResolver('Query'), new InMemoryLocator()))->and($middleware = new QueryHandlerMiddleware($resolver))->and($query = new NearByVenuesQuery($this->faker->latitude(), $this->faker->longitude()))->and($queryHandler = new VenuesQueryHandler())->and($resolver->addHandler($query->named(), $queryHandler))->and($callable = function (array $result) { return json_encode($result); })->when($result = $middleware->handle($query, $callable))->then()->string($result)->isNotEmpty()->isEqualTo(json_encode($queryHandler->aroundVenues($query)))->exception(function () use($middleware, $callable) { $middleware->handle(new \StdClass(), $callable); })->isInstanceOf(\InvalidArgumentException::class); }