Skip to content

Commit ac725c0

Browse files
glo23503devarul
authored andcommitted
ACP2E-1341: [On-Premise] Merchant Informed Core Issue Magento 2.4.4 main.ERROR: Environment emulation nesting is not allowed
1 parent ba4bc00 commit ac725c0

File tree

1 file changed

+42
-19
lines changed

1 file changed

+42
-19
lines changed

dev/tests/integration/testsuite/Magento/Sales/Model/Order/Email/Sender/ShipmentSenderTest.php

Lines changed: 42 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,15 @@ class ShipmentSenderTest extends \PHPUnit\Framework\TestCase
2727
private const OLD_CUSTOMER_EMAIL = 'customer@example.com';
2828
private const ORDER_EMAIL = 'customer@example.com';
2929

30+
/** @var ObjectManagerInterface */
31+
private $objectManager;
32+
33+
/** @var Logger */
34+
private $logger;
35+
36+
/** @var int */
37+
private $minErrorDefaultValue;
38+
3039
/**
3140
* @var CustomerRepository
3241
*/
@@ -38,7 +47,17 @@ class ShipmentSenderTest extends \PHPUnit\Framework\TestCase
3847
protected function setUp(): void
3948
{
4049
parent::setUp();
41-
$this->customerRepository = Bootstrap::getObjectManager()
50+
51+
$this->objectManager = Bootstrap::getObjectManager();
52+
$this->objectManager->get(\Magento\Framework\App\State::class)->setMode(State::MODE_PRODUCTION);
53+
$this->logger = $this->objectManager->get(Logger::class);
54+
$reflection = new \ReflectionClass(get_class($this->logger));
55+
$reflectionProperty = $reflection->getProperty('minimumErrorLevel');
56+
$reflectionProperty->setAccessible(true);
57+
$this->minErrorDefaultValue = $reflectionProperty->getValue($this->logger);
58+
$reflectionProperty->setValue($this->logger, 400);
59+
$this->logger->clearMessages();
60+
$this->customerRepository = $this->objectManager
4261
->get(CustomerRepositoryInterface::class);
4362
}
4463

@@ -47,27 +66,19 @@ protected function setUp(): void
4766
*/
4867
public function testSend()
4968
{
50-
Bootstrap::getObjectManager()->get(\Magento\Framework\App\State::class)->setAreaCode('frontend');
51-
$order = Bootstrap::getObjectManager()->create(\Magento\Sales\Model\Order::class);
69+
$this->objectManager->get(\Magento\Framework\App\State::class)->setAreaCode('frontend');
70+
$order = $this->objectManager->create(\Magento\Sales\Model\Order::class);
5271
$order->loadByIncrementId('100000001');
5372
$order->setCustomerEmail('customer@example.com');
5473

55-
$shipment = Bootstrap::getObjectManager()->get(ShipmentFactory::class)->create($order);
74+
$shipment = $this->objectManager->get(ShipmentFactory::class)->create($order);
5675

5776
$this->assertEmpty($shipment->getEmailSent());
5877

59-
$objectManager = Bootstrap::getObjectManager();
60-
$logger = $objectManager->get(Logger::class);
61-
$reflection = new \ReflectionClass(get_class($logger));
62-
$reflectionProperty = $reflection->getProperty('minimumErrorLevel');
63-
$reflectionProperty->setAccessible(true);
64-
$reflectionProperty->setValue($logger, 400);
65-
$logger->clearMessages();
66-
$orderSender = $objectManager
78+
$orderSender = $this->objectManager
6779
->create(\Magento\Sales\Model\Order\Email\Sender\ShipmentSender::class);
68-
$objectManager->get(\Magento\Framework\App\State::class)->setMode(State::MODE_PRODUCTION);
6980
$result = $orderSender->send($shipment, true);
70-
$this->assertEmpty($logger->getMessages());
81+
$this->assertEmpty($this->logger->getMessages());
7182
$this->assertTrue($result);
7283

7384
$this->assertNotEmpty($shipment->getEmailSent());
@@ -93,6 +104,7 @@ public function testSendWhenCustomerEmailWasModified()
93104
$this->assertEmpty($shipment->getEmailSent());
94105
$result = $shipmentSender->send($shipment, true);
95106

107+
$this->assertEmpty($this->logger->getMessages());
96108
$this->assertEquals(self::NEW_CUSTOMER_EMAIL, $shipmentIdentity->getCustomerEmail());
97109
$this->assertTrue($result);
98110
$this->assertNotEmpty($shipment->getEmailSent());
@@ -114,6 +126,7 @@ public function testSendWhenCustomerEmailWasNotModified()
114126
$this->assertEmpty($shipment->getEmailSent());
115127
$result = $shipmentSender->send($shipment, true);
116128

129+
$this->assertEmpty($this->logger->getMessages());
117130
$this->assertEquals(self::OLD_CUSTOMER_EMAIL, $shipmentIdentity->getCustomerEmail());
118131
$this->assertTrue($result);
119132
$this->assertNotEmpty($shipment->getEmailSent());
@@ -138,6 +151,7 @@ public function testSendWithoutCustomer()
138151
$this->assertEmpty($shipment->getEmailSent());
139152
$result = $shipmentSender->send($shipment, true);
140153

154+
$this->assertEmpty($this->logger->getMessages());
141155
$this->assertEquals(self::ORDER_EMAIL, $shipmentIdentity->getCustomerEmail());
142156
$this->assertTrue($result);
143157
$this->assertNotEmpty($shipment->getEmailSent());
@@ -150,17 +164,16 @@ public function testSendWithoutCustomer()
150164
*/
151165
public function testPackages()
152166
{
153-
$objectManager = Bootstrap::getObjectManager();
154-
$objectManager->get(\Magento\Framework\App\State::class)->setAreaCode('frontend');
155-
$order = $objectManager->create(\Magento\Sales\Model\Order::class);
167+
$this->objectManager->get(\Magento\Framework\App\State::class)->setAreaCode('frontend');
168+
$order = $this->objectManager->create(\Magento\Sales\Model\Order::class);
156169
$order->loadByIncrementId('100000001');
157170
$order->setCustomerEmail('customer@example.com');
158171
$items = [];
159172
foreach ($order->getItems() as $item) {
160173
$items[$item->getId()] = $item->getQtyOrdered();
161174
}
162175
/** @var \Magento\Sales\Model\Order\Shipment $shipment */
163-
$shipment = $objectManager->get(ShipmentFactory::class)->create($order, $items);
176+
$shipment = $this->objectManager->get(ShipmentFactory::class)->create($order, $items);
164177
$packages = [['1'], ['2']];
165178
$shipment->setPackages($packages);
166179
$this->assertEquals($packages, $shipment->getPackages());
@@ -172,7 +185,7 @@ public function testPackages()
172185

173186
private function createShipment(Order $order): Shipment
174187
{
175-
$shipment = Bootstrap::getObjectManager()->create(
188+
$shipment = $this->objectManager->create(
176189
Shipment::class
177190
);
178191
$shipment->setOrder($order);
@@ -206,4 +219,14 @@ private function createShipmentSender(ShipmentIdentity $shipmentIdentity): Shipm
206219
]
207220
);
208221
}
222+
223+
/**
224+
* @inheritdoc
225+
*/
226+
protected function tearDown(): void
227+
{
228+
$reflectionProperty = new \ReflectionProperty(get_class($this->logger), 'minimumErrorLevel');
229+
$reflectionProperty->setAccessible(true);
230+
$reflectionProperty->setValue($this->logger, $this->minErrorDefaultValue);
231+
}
209232
}

0 commit comments

Comments
 (0)