Skip to content

Commit c9124f5

Browse files
akaashakaash
authored andcommitted
Merge branch 'ACQE-5180' into functional-mainline-pr-ce-new
2 parents 59b2921 + 6d9daca commit c9124f5

File tree

1 file changed

+107
-0
lines changed
  • dev/tests/integration/testsuite/Magento/Bundle/Block/Sales/Order/Items

1 file changed

+107
-0
lines changed

dev/tests/integration/testsuite/Magento/Bundle/Block/Sales/Order/Items/RendererTest.php

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,29 @@
1111
use Magento\Bundle\Test\Fixture\OrderItem as OrderItemFixture;
1212
use Magento\Bundle\Test\Fixture\Product as BundleProductFixture;
1313
use Magento\Catalog\Test\Fixture\Product as ProductFixture;
14+
use Magento\Config\Model\ResourceModel\Config as CoreConfig;
15+
use Magento\Customer\Api\AccountManagementInterface;
1416
use Magento\Customer\Model\Session;
17+
use Magento\Customer\Test\Fixture\Customer;
18+
use Magento\Framework\App\Config\ScopeConfigInterface;
1519
use Magento\Framework\ObjectManagerInterface;
1620
use Magento\Framework\View\LayoutInterface;
1721
use Magento\Sales\Model\Order;
22+
use Magento\Sales\Model\Order\Email\Sender\OrderSender;
23+
use Magento\Sales\Model\Order\Address as OrderAddress;
1824
use Magento\Store\Model\StoreManagerInterface;
1925
use Magento\TestFramework\Fixture\Config;
2026
use Magento\TestFramework\Fixture\DataFixture;
2127
use Magento\TestFramework\Fixture\DataFixtureStorage;
2228
use Magento\TestFramework\Fixture\DataFixtureStorageManager;
2329
use Magento\TestFramework\Fixture\DbIsolation;
2430
use Magento\TestFramework\Helper\Bootstrap;
31+
use Magento\TestFramework\Mail\Template\TransportBuilderMock;
2532
use PHPUnit\Framework\TestCase;
2633

34+
/**
35+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
36+
*/
2737
class RendererTest extends TestCase
2838
{
2939
/**
@@ -43,6 +53,21 @@ class RendererTest extends TestCase
4353
/** @var Renderer */
4454
private $block;
4555

56+
/**
57+
* @var CoreConfig
58+
*/
59+
protected $resourceConfig;
60+
61+
/**
62+
* @var AccountManagementInterface
63+
*/
64+
private $accountManagement;
65+
66+
/**
67+
* @var OrderSender
68+
*/
69+
private $orderSender;
70+
4671
/**
4772
* @defaultDoc
4873
*/
@@ -52,6 +77,9 @@ protected function setUp(): void
5277
$layout = $this->objectManager->get(LayoutInterface::class);
5378
$this->block = $layout->createBlock(Renderer::class);
5479
$this->fixtures = Bootstrap::getObjectManager()->get(DataFixtureStorageManager::class)->getStorage();
80+
$this->resourceConfig = $this->objectManager->get(CoreConfig::class);
81+
$this->accountManagement = $this->objectManager->get(AccountManagementInterface::class);
82+
$this->orderSender = $this->objectManager->get(OrderSender::class);
5583
}
5684

5785
#[
@@ -99,4 +127,83 @@ public function testOrderEmailContent(): void
99127

100128
$this->assertStringContainsString("€99", $priceBlockHtml[0]);
101129
}
130+
131+
/**
132+
* @return void
133+
* @throws \Magento\Framework\Exception\LocalizedException
134+
*/
135+
#[
136+
DbIsolation(true),
137+
DataFixture(ProductFixture::class, ['price' => 10], 'p1'),
138+
DataFixture(ProductFixture::class, ['price' => 20], 'p2'),
139+
DataFixture(ProductFixture::class, ['price' => 30], 'p3'),
140+
DataFixture(BundleOptionFixture::class, ['product_links' => ['$p1$', '$p2$', '$p3$']], 'opt1'),
141+
DataFixture(BundleProductFixture::class, ['_options' => ['$opt1$']], 'bundle1'),
142+
DataFixture(OrderItemFixture::class, ['items' => [['sku' => '$bundle1.sku$']]], 'order'),
143+
DataFixture(Customer::class, ['email' => 'customer@example.com'], as: 'customer'),
144+
]
145+
public function testPlaceOrderWithOtherThanDefaultCurrencyValidateEmailHasSameCurrency(): void
146+
{
147+
$this->resourceConfig->saveConfig(
148+
'currency/options/default',
149+
'EUR',
150+
ScopeConfigInterface::SCOPE_TYPE_DEFAULT,
151+
0
152+
);
153+
154+
$this->resourceConfig->saveConfig(
155+
'currency/options/allow',
156+
'EUR',
157+
ScopeConfigInterface::SCOPE_TYPE_DEFAULT,
158+
0
159+
);
160+
161+
$this->resourceConfig->saveConfig(
162+
'currency/options/base',
163+
'USD',
164+
ScopeConfigInterface::SCOPE_TYPE_DEFAULT,
165+
0
166+
);
167+
168+
// Load customer data
169+
$customer = $this->fixtures->get('customer');
170+
$customerEmail = $customer->getEmail();
171+
172+
// Login to customer
173+
$this->accountManagement->authenticate($customerEmail, 'password');
174+
175+
// Including address data file
176+
$addressData = include __DIR__ . '/../../../../../Sales/_files/address_data.php';
177+
178+
// Setting the billing address
179+
$billingAddress = $this->objectManager->create(OrderAddress::class, ['data' => $addressData]);
180+
$billingAddress->setAddressType('billing');
181+
182+
// Setting the shipping address
183+
$shippingAddress = clone $billingAddress;
184+
$shippingAddress->setId(null)->setAddressType('shipping');
185+
186+
// Place the order
187+
$order = $this->objectManager->create(Order::class);
188+
$incrementId = $this->fixtures->get('order')->getIncrementId();
189+
$order->loadByIncrementId($incrementId);
190+
$storeManager = $this->objectManager->get(StoreManagerInterface::class);
191+
$currencyCodeSymbol = $storeManager->getWebsite()->getDefaultStore()->getDefaultCurrency()->getCurrencySymbol();
192+
$storeId = $this->objectManager->get(StoreManagerInterface::class)->getStore()->getId();
193+
$order->setStoreId($storeId);
194+
$order->setCustomerEmail($customerEmail);
195+
$order->setBillingAddress($billingAddress);
196+
$order->setShippingAddress($shippingAddress);
197+
$order->save();
198+
$this->orderSender->send($order);
199+
$this->assertTrue($order->getSendEmail());
200+
201+
/** @var TransportBuilderMock $transportBuilderMock */
202+
$transportBuilderMock = Bootstrap::getObjectManager()
203+
->get(TransportBuilderMock::class);
204+
$sentMessage = $transportBuilderMock->getSentMessage();
205+
206+
$this->assertNotNull($sentMessage);
207+
$this->assertStringContainsString($currencyCodeSymbol, $sentMessage->getBodyText());
208+
}
102209
}

0 commit comments

Comments
 (0)