/** {@inheritdoc} */ public function executeRequest(RequestInterface $request) : ResponseInterface { try { $page = new Page(Uuid::uuid4(), $request['title'], $request['slug'], $request['short_title'], $request['parent_uuid'] ? Uuid::fromString($request['parent_uuid']) : null, $request['sort_order'], PageStatusValue::get($request['status'])); $this->pageRepository->create($page); return new Response(self::MESSAGE, ['data' => $page], $request); } catch (\Throwable $exception) { $this->log(LogLevel::ERROR, $exception->getMessage()); throw new ResponseException('An error occurred during CreatePageHandler.', new ServerErrorResponse([], $request)); } }
public function it_can_execute_a_request(RequestInterface $request) { $request->offsetGet('title')->willReturn('Long title'); $request->offsetGet('slug')->willReturn('long-title'); $request->offsetGet('short_title')->willReturn('Title'); $request->offsetGet('parent_uuid')->willReturn(null); $request->offsetGet('sort_order')->willReturn(42); $request->offsetGet('status')->willReturn('concept'); $request->getAcceptContentType()->willReturn('application/json'); $this->pageRepository->create(new Argument\Token\TypeToken(Page::class)); $response = $this->executeRequest($request); $response->shouldHaveType(ResponseInterface::class); $response['data']->shouldHaveType(Page::class); }