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]);
 }