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().'
 | 
						|
        );
 | 
						|
    }
 | 
						|
}
 |