ResetQuoteAddressesTest.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Checkout\Plugin\Model\Quote;
  8. use Magento\Checkout\Model\Cart;
  9. use Magento\Checkout\Model\Session;
  10. use Magento\Quote\Model\BillingAddressManagement;
  11. use Magento\Quote\Model\Quote;
  12. use Magento\Quote\Model\Quote\Address as QuoteAddress;
  13. use Magento\TestFramework\Helper\Bootstrap;
  14. /**
  15. * Test for \Magento\Checkout\Plugin\Model\Quote\ResetQuoteAddresses
  16. */
  17. class ResetQuoteAddressesTest extends \PHPUnit\Framework\TestCase
  18. {
  19. /**
  20. * @magentoDataFixture Magento/Checkout/_files/quote_with_virtual_product_and_address.php
  21. *
  22. * @return void
  23. */
  24. public function testAfterRemoveItem(): void
  25. {
  26. /** @var Quote $quote */
  27. $quote = Bootstrap::getObjectManager()->create(Quote::class);
  28. $quote->load('test_order_with_virtual_product', 'reserved_order_id');
  29. /** @var QuoteAddress $quoteShippingAddress */
  30. $quoteBillingAddress = Bootstrap::getObjectManager()->create(QuoteAddress::class);
  31. $quoteBillingAddress->setRegion('CA')
  32. ->setPostcode('90210')
  33. ->setFirstname('a_unique_firstname')
  34. ->setLastname('lastname')
  35. ->setStreet('street')
  36. ->setCity('Beverly Hills')
  37. ->setEmail('admin@example.com')
  38. ->setTelephone('1111111111')
  39. ->setCountryId('US')
  40. ->setAddressType('billing');
  41. /** @var BillingAddressManagement $billingAddressManagement */
  42. $billingAddressManagement = Bootstrap::getObjectManager()->create(BillingAddressManagement::class);
  43. $billingAddressManagement->assign($quote->getId(), $quoteBillingAddress);
  44. /** @var Session $checkoutSession */
  45. $checkoutSession = Bootstrap::getObjectManager()->create(Session::class);
  46. $checkoutSession->setQuoteId($quote->getId());
  47. /** @var Cart $cart */
  48. $cart = Bootstrap::getObjectManager()->create(Cart::class);
  49. $activeQuote = $cart->getQuote();
  50. // Dummy data is still persisted here. This is sufficient to check that it is removed
  51. $activeQuote->getExtensionAttributes()->setShippingAssignments(['test']);
  52. $cart->removeItem($activeQuote->getAllVisibleItems()[0]->getId());
  53. $cart->save();
  54. // Check that the shipping assignments were also unset
  55. $this->assertEmpty($activeQuote->getExtensionAttributes()->getShippingAssignments());
  56. /** @var Quote $quote */
  57. $quote = Bootstrap::getObjectManager()->create(Quote::class);
  58. $quote->load('test_order_with_virtual_product', 'reserved_order_id');
  59. $quoteBillingAddressUpdated = $quote->getBillingAddress();
  60. $customer = $quote->getCustomer();
  61. $this->assertEquals($quoteBillingAddressUpdated->getEmail(), $customer->getEmail());
  62. $this->assertEmpty($quoteBillingAddressUpdated->getCountryId());
  63. $this->assertEmpty($quoteBillingAddressUpdated->getRegionId());
  64. $this->assertEmpty($quoteBillingAddressUpdated->getRegion());
  65. $this->assertEmpty($quoteBillingAddressUpdated->getPostcode());
  66. $this->assertEmpty($quoteBillingAddressUpdated->getCity());
  67. }
  68. }