Fixture.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace Dotdigitalgroup\Email\Test\Integration\AbandonedCarts;
  3. class Fixture
  4. {
  5. /**
  6. * @param \Magento\Framework\ObjectManagerInterface $objectManager
  7. * @param int $isActive
  8. * @param int $reservedOrderId
  9. * @param boolean $forCustomer
  10. */
  11. public function createQuote($objectManager, $isActive, $reservedOrderId, $forCustomer = false)
  12. {
  13. \Magento\TestFramework\Helper\Bootstrap::getInstance()->loadArea('frontend');
  14. $product = $objectManager->create(
  15. \Magento\Catalog\Model\Product::class
  16. );
  17. $product->setTypeId('simple')
  18. ->setId(1)
  19. ->setAttributeSetId(4)
  20. ->setName('Simple Product')
  21. ->setSku('simple')
  22. ->setPrice(10)
  23. ->setTaxClassId(0)
  24. ->setMetaTitle('meta title')
  25. ->setMetaKeyword('meta keyword')
  26. ->setMetaDescription('meta description')
  27. ->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
  28. ->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
  29. ->setStockData(
  30. [
  31. 'qty' => 100,
  32. 'is_in_stock' => 1,
  33. ]
  34. )->save();
  35. $productRepository = $objectManager->create(\Magento\Catalog\Api\ProductRepositoryInterface::class);
  36. $product = $productRepository->get('simple');
  37. $addressData = [
  38. 'region' => 'CA',
  39. 'postcode' => '11111',
  40. 'lastname' => 'lastname',
  41. 'firstname' => 'firstname',
  42. 'street' => 'street',
  43. 'city' => 'Los Angeles',
  44. 'email' => 'admin@example.com',
  45. 'telephone' => '11111111',
  46. 'country_id' => 'US'
  47. ];
  48. $billingAddress = $objectManager->create(
  49. \Magento\Quote\Model\Quote\Address::class,
  50. ['data' => $addressData]
  51. );
  52. $billingAddress->setAddressType('billing');
  53. $shippingAddress = clone $billingAddress;
  54. $shippingAddress->setId(null)->setAddressType('shipping');
  55. $store = $objectManager->get(\Magento\Store\Model\StoreManagerInterface::class)
  56. ->getStore();
  57. /** @var \Magento\Quote\Model\Quote $quote */
  58. $quote = $objectManager->create(
  59. \Magento\Quote\Model\Quote::class
  60. );
  61. if ($forCustomer) {
  62. $customerRepository = $objectManager->create(
  63. \Magento\Customer\Api\CustomerRepositoryInterface::class
  64. );
  65. $customerId = 1;
  66. $customer = $customerRepository->getById($customerId);
  67. $quote->setCustomerIsGuest(false)
  68. ->setCustomer($customer);
  69. } else {
  70. $quote->setCustomerIsGuest(true);
  71. }
  72. $quote->setIsActive($isActive)
  73. ->setStoreId($store->getId())
  74. ->setReservedOrderId($reservedOrderId)
  75. ->setBillingAddress($billingAddress)
  76. ->setShippingAddress($shippingAddress)
  77. ->addProduct($product);
  78. $quote->getPayment()->setMethod('checkmo');
  79. $quote->setIsMultiShipping('1');
  80. $quote->collectTotals();
  81. $quote->save();
  82. /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
  83. $quoteIdMask = $objectManager->create(\Magento\Quote\Model\QuoteIdMaskFactory::class)
  84. ->create();
  85. $quoteIdMask->setQuoteId($quote->getId());
  86. $quoteIdMask->setDataChanges(true);
  87. $quoteIdMask->save();
  88. }
  89. }