Files
2026-09-15 10:26:34 +08:00

102 lines
2.6 KiB
PHP

<?php
/**
* Copyright 2023 Adobe
* All Rights Reserved.
*/
declare(strict_types=1);
namespace Magento\GraphQl\Quote\Customer;
use Magento\Customer\Test\Fixture\Customer;
use Magento\GraphQl\GetCustomerAuthenticationHeader;
use Magento\Quote\Model\QuoteIdMaskFactory;
use Magento\Quote\Model\ResourceModel\Quote\CollectionFactory as QuoteCollectionFactory;
use Magento\Quote\Model\ResourceModel\Quote as QuoteResource;
use Magento\TestFramework\Fixture\DataFixture;
use Magento\TestFramework\Fixture\DataFixtureStorageManager;
use Magento\TestFramework\Helper\Bootstrap;
use Magento\TestFramework\ObjectManager;
use Magento\TestFramework\TestCase\GraphQlAbstract;
/**
* Test for guest cart creation mutation for customer
*/
class CreateGuestCartTest extends GraphQlAbstract
{
/**
* @var ObjectManager
*/
private $objectManager;
/**
* @var QuoteCollectionFactory
*/
private $quoteCollectionFactory;
/**
* @var QuoteResource
*/
private $quoteResource;
/**
* @var QuoteIdMaskFactory
*/
private $quoteIdMaskFactory;
protected function setUp(): void
{
$this->objectManager = Bootstrap::getObjectManager();
$this->quoteCollectionFactory = $this->objectManager->get(QuoteCollectionFactory::class);
$this->quoteResource = $this->objectManager->get(QuoteResource::class);
$this->quoteIdMaskFactory = $this->objectManager->get(QuoteIdMaskFactory::class);
}
#[
DataFixture(Customer::class, as: 'customer')
]
public function testFailForLoggedInUser()
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage("Use `Query.customerCart` for logged in customer.");
$customer = DataFixtureStorageManager::getStorage()->get('customer');
$query = $this->getQuery();
$this->graphQlMutation(
$query,
[],
'',
$this->objectManager->get(GetCustomerAuthenticationHeader::class)->execute($customer->getEmail())
);
}
/**
* @return string
*/
private function getQuery(): string
{
return <<<QUERY
mutation {
createGuestCart {
cart {
id
}
}
}
QUERY;
}
protected function tearDown(): void
{
$quoteCollection = $this->quoteCollectionFactory->create();
foreach ($quoteCollection as $quote) {
$this->quoteResource->delete($quote);
$quoteIdMask = $this->quoteIdMaskFactory->create();
$quoteIdMask->setQuoteId($quote->getId())
->delete();
}
parent::tearDown();
}
}