65 lines
2.6 KiB
PHP
Executable File
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().'
|
|
);
|
|
}
|
|
}
|