CustomerQuoteTest.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Observer\Backend;
  7. use Magento\Customer\Api\CustomerRepositoryInterface;
  8. use Magento\Customer\Api\Data\CustomerInterface;
  9. use Magento\Customer\Model\CustomerRegistry;
  10. use Magento\Quote\Model\Quote;
  11. use Magento\TestFramework\Helper\Bootstrap;
  12. /**
  13. * @magentoAppArea adminhtml
  14. */
  15. class CustomerQuoteTest extends \PHPUnit\Framework\TestCase
  16. {
  17. /**
  18. * Ensure that customer group is updated in customer quote, when it is changed for the customer.
  19. *
  20. * @magentoDataFixture Magento/Sales/_files/quote.php
  21. * @magentoDataFixture Magento/Customer/_files/customer_from_repository.php
  22. */
  23. public function testCustomerSaveQuoteObserver()
  24. {
  25. /** @var CustomerInterface $customer */
  26. /** @var CustomerRepositoryInterface $repository */
  27. $repository = Bootstrap::getObjectManager()->create(\Magento\Customer\Api\CustomerRepositoryInterface::class);
  28. /** @var CustomerRegistry $registry */
  29. $registry = Bootstrap::getObjectManager()->create(\Magento\Customer\Model\CustomerRegistry::class);
  30. $customer = $repository->getById($registry->retrieveByEmail('customer@example.com')->getId());
  31. /** @var Quote $quote */
  32. $quote = Bootstrap::getObjectManager()->create(\Magento\Quote\Model\Quote::class);
  33. $quote->load('test01', 'reserved_order_id');
  34. $quote->setCustomerIsGuest(false)->setCustomerId($customer->getId())
  35. ->setCustomerGroupId($customer->getGroupId())
  36. ->save();
  37. $this->assertNotNull($customer->getGroupId(), "Precondition failed: Customer group is not set.");
  38. $this->assertEquals(
  39. $customer->getGroupId(),
  40. $quote->getCustomerGroupId(),
  41. "Precondition failed: Customer group in quote is invalid."
  42. );
  43. /**
  44. * 'customer_save_after_data_object' event is expected to be dispatched when customer save is invoked.
  45. * \Magento\Sales\Model\Observer\Backend\CustomerQuote::dispatch() is an observer of this event.
  46. */
  47. $newCustomerGroupId = 2;
  48. $customer->setGroupId($newCustomerGroupId);
  49. $repository->save($customer);
  50. $quote->load('test01', 'reserved_order_id');
  51. $this->assertEquals(
  52. $newCustomerGroupId,
  53. $quote->getCustomerGroupId(),
  54. 'Customer group in quote was not updated on "customer_save_after_data_object" event ' .
  55. 'by Magento\Sales\Model\Observer\Backend\CustomerQuote::dispatch().'
  56. );
  57. }
  58. }