public function testHandle() { $pricing = $this->dummyData->getPricing(); $dtoBuilderFactory = $this->getDTOBuilderFactory(); $productService = $this->mockService->getProductService(); $productService->shouldReceive('getProductsByTagId')->andReturn([$this->dummyData->getProduct()])->once(); $request = new GetProductsByTagRequest(self::UUID_HEX, new PaginationDTO()); $response = new GetProductsByTagResponse($pricing); $handler = new GetProductsByTagHandler($productService, $dtoBuilderFactory); $handler->handle(new GetProductsByTagQuery($request, $response)); $this->assertTrue($response->getProductDTOs()[0] instanceof ProductDTO); $this->assertTrue($response->getPaginationDTO() instanceof PaginationDTO); }
/** * @param Request $httpRequest * @param string $slug * @param string $tagId * @return \Illuminate\Http\RedirectResponse */ public function show(Request $httpRequest, $slug, $tagId) { $request = new GetTagRequest($tagId); $response = new GetTagResponse($this->getPricing()); $this->dispatchQuery(new GetTagQuery($request, $response)); $tagDTO = $response->getTagDTOWithAllData(); if ($slug !== $tagDTO->slug) { return redirect()->route('tag.show', ['slug' => $tagDTO->slug, 'tagId' => $tagDTO->id->getHex()]); } $request = new GetProductsByTagRequest($tagDTO->id->getHex(), $this->getPaginationDTO(12)); $response = new GetProductsByTagResponse($this->getPricing()); $this->dispatchQuery(new GetProductsByTagQuery($request, $response)); $productDTOs = $response->getProductDTOs(); $paginationDTO = $response->getPaginationDTO(); return $this->renderTemplate('tag/show.twig', ['tag' => $tagDTO, 'products' => $productDTOs, 'pagination' => $paginationDTO]); }