magento2-docker/dev/tests/integration/testsuite/Magento/Sales/Observer/Backend/CustomerQuoteTest.php

65 lines
2.6 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Sales\Observer\Backend;
use Magento\Customer\Api\CustomerRepositoryInterface;
use Magento\Customer\Api\Data\CustomerInterface;
use Magento\Customer\Model\CustomerRegistry;
use Magento\Quote\Model\Quote;
use Magento\TestFramework\Helper\Bootstrap;
/**
* @magentoAppArea adminhtml
*/
class CustomerQuoteTest extends \PHPUnit\Framework\TestCase
{
/**
* Ensure that customer group is updated in customer quote, when it is changed for the customer.
*
* @magentoDataFixture Magento/Sales/_files/quote.php
* @magentoDataFixture Magento/Customer/_files/customer_from_repository.php
*/
public function testCustomerSaveQuoteObserver()
{
/** @var CustomerInterface $customer */
/** @var CustomerRepositoryInterface $repository */
$repository = Bootstrap::getObjectManager()->create(\Magento\Customer\Api\CustomerRepositoryInterface::class);
/** @var CustomerRegistry $registry */
$registry = Bootstrap::getObjectManager()->create(\Magento\Customer\Model\CustomerRegistry::class);
$customer = $repository->getById($registry->retrieveByEmail('customer@example.com')->getId());
/** @var Quote $quote */
$quote = Bootstrap::getObjectManager()->create(\Magento\Quote\Model\Quote::class);
$quote->load('test01', 'reserved_order_id');
$quote->setCustomerIsGuest(false)->setCustomerId($customer->getId())
->setCustomerGroupId($customer->getGroupId())
->save();
$this->assertNotNull($customer->getGroupId(), "Precondition failed: Customer group is not set.");
$this->assertEquals(
$customer->getGroupId(),
$quote->getCustomerGroupId(),
"Precondition failed: Customer group in quote is invalid."
);
/**
* 'customer_save_after_data_object' event is expected to be dispatched when customer save is invoked.
* \Magento\Sales\Model\Observer\Backend\CustomerQuote::dispatch() is an observer of this event.
*/
$newCustomerGroupId = 2;
$customer->setGroupId($newCustomerGroupId);
$repository->save($customer);
$quote->load('test01', 'reserved_order_id');
$this->assertEquals(
$newCustomerGroupId,
$quote->getCustomerGroupId(),
'Customer group in quote was not updated on "customer_save_after_data_object" event ' .
'by Magento\Sales\Model\Observer\Backend\CustomerQuote::dispatch().'
);
}
}