'$cart.id$', 'product_id' => '$p1.id$', 'qty' => 1], as: 'cart_item1' ), DataFixture( AddProductToCartFixture::class, ['cart_id' => '$cart.id$', 'product_id' => '$p2.id$', 'qty' => 1], as: 'cart_item2' ), DataFixture( AddProductToCartFixture::class, ['cart_id' => '$cart.id$', 'product_id' => '$p3.id$', 'qty' => 1], as: 'cart_item3' ), DataFixture( AddProductToCartFixture::class, ['cart_id' => '$cart.id$', 'product_id' => '$p4.id$', 'qty' => 1], as: 'cart_item4' ), DataFixture( AddProductToCartFixture::class, ['cart_id' => '$cart.id$', 'product_id' => '$p5.id$', 'qty' => 1], as: 'cart_item5' ), ] class GetCartPaginatedItemsTest extends GraphQlAbstract { /** * @var DataFixtureStorageManager */ private $fixtures; /** * @var QuoteIdToMaskedQuoteIdInterface */ private $quoteIdToMaskedQuoteIdInterface; protected function setUp(): void { $objectManager = Bootstrap::getObjectManager(); $this->fixtures = $objectManager->get(DataFixtureStorageManager::class)->getStorage(); $this->quoteIdToMaskedQuoteIdInterface = $objectManager->get(QuoteIdToMaskedQuoteIdInterface::class); } public function testGetCartWithZeroPageSize() { $this->expectExceptionMessage('pageSize value must be greater than 0.'); $cart = $this->fixtures->get('cart'); $maskedQuoteId = $this->quoteIdToMaskedQuoteIdInterface->execute((int) $cart->getId()); $query = $this->getQuery($maskedQuoteId, 0, 1); $this->graphQlQuery($query); } public function testGetCartWithZeroCurrentPage() { $this->expectExceptionMessage('currentPage value must be greater than 0.'); $cart = $this->fixtures->get('cart'); $maskedQuoteId = $this->quoteIdToMaskedQuoteIdInterface->execute((int) $cart->getId()); $query = $this->getQuery($maskedQuoteId, 1, 0); $this->graphQlQuery($query); } public function testGetCart() { /** @var Product $product1 */ $product1 = $this->fixtures->get('p1'); /** @var Product $product2 */ $product2 = $this->fixtures->get('p2'); /** @var CartItem $cartItem1 */ $cartItem1 = $this->fixtures->get('cart_item1'); /** @var CartItem $cartItem2 */ $cartItem2 = $this->fixtures->get('cart_item2'); $cart = $this->fixtures->get('cart'); $maskedQuoteId = $this->quoteIdToMaskedQuoteIdInterface->execute((int) $cart->getId()); $query = $this->getQuery($maskedQuoteId, 2, 1); $response = $this->graphQlQuery($query); $expected = [ 'cart' => [ 'id' => $maskedQuoteId, 'itemsV2' => [ 'total_count' => 5, 'items' => [ [ 'id' => $cartItem1->getId(), 'quantity' => 1, 'product' => [ 'sku' => $product1->getSku(), 'stock_status' => 'IN_STOCK', ], 'prices' => [ 'price' => [ 'value' => 10, 'currency' => 'USD', ] ], 'errors' => null ], [ 'id' => $cartItem2->getId(), 'quantity' => 1, 'product' => [ 'sku' => $product2->getSku(), 'stock_status' => 'IN_STOCK', ], 'prices' => [ 'price' => [ 'value' => 10, 'currency' => 'USD', ] ], 'errors' => null ], ], 'page_info' => [ 'page_size' => 2, 'current_page' => 1, 'total_pages' => 3, ] ], ] ]; $this->assertEquals( $expected, $response, sprintf("Expected:\n%s\ngot:\n%s", json_encode($expected), json_encode($response)) ); } /** * @param string $maskedQuoteId * @param int $pageSize * @param int $currentPage * @return string */ private function getQuery(string $maskedQuoteId, int $pageSize, int $currentPage): string { return <<