Skip to content

Commit ef80020

Browse files
committed
#30218 Write tests
1 parent e5324cb commit ef80020

File tree

3 files changed

+187
-2
lines changed

3 files changed

+187
-2
lines changed

dev/tests/api-functional/testsuite/Magento/GraphQl/Quote/Customer/GetSpecifiedBillingAddressTest.php

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,13 +164,13 @@ private function getQuery(string $maskedQuoteId): string
164164
company
165165
street
166166
city
167-
region
167+
region
168168
{
169169
code
170170
label
171171
}
172172
postcode
173-
country
173+
country
174174
{
175175
code
176176
label
@@ -195,4 +195,44 @@ private function getHeaderMap(string $username = 'customer@example.com', string
195195
$headerMap = ['Authorization' => 'Bearer ' . $customerToken];
196196
return $headerMap;
197197
}
198+
199+
/**
200+
* @magentoApiDataFixture Magento/Customer/_files/customer.php
201+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
202+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
203+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
204+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/set_new_billing_address_without_telephone.php
205+
*/
206+
public function testGetSpecifiedBillingAddressWithoutTelephone()
207+
{
208+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
209+
$query = $this->getQuery($maskedQuoteId);
210+
211+
$response = $this->graphQlQuery($query, [], '', $this->getHeaderMap());
212+
self::assertArrayHasKey('cart', $response);
213+
self::assertArrayHasKey('billing_address', $response['cart']);
214+
215+
$expectedBillingAddressData = [
216+
'firstname' => 'John',
217+
'lastname' => 'Smith',
218+
'company' => 'CompanyName',
219+
'street' => [
220+
'Green str, 67'
221+
],
222+
'city' => 'CityM',
223+
'region' => [
224+
'code' => 'AL',
225+
'label' => 'Alabama',
226+
],
227+
'postcode' => '75477',
228+
'country' => [
229+
'code' => 'US',
230+
'label' => 'US',
231+
],
232+
'telephone' => '',
233+
'__typename' => 'BillingCartAddress',
234+
'customer_notes' => null,
235+
];
236+
self::assertEquals($expectedBillingAddressData, $response['cart']['billing_address']);
237+
}
198238
}

dev/tests/api-functional/testsuite/Magento/GraphQl/Quote/Customer/SetBillingAddressOnCartTest.php

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1759,4 +1759,105 @@ private function getPlaceOrderQuery(string $maskedQuoteId): string
17591759
}
17601760
QUERY;
17611761
}
1762+
1763+
/**
1764+
* @magentoApiDataFixture Magento/Customer/_files/customer.php
1765+
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
1766+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/customer/create_empty_cart.php
1767+
* @magentoApiDataFixture Magento/GraphQl/Quote/_files/add_simple_product.php
1768+
*/
1769+
public function testSetNewBillingAddressWithoutTelephone()
1770+
{
1771+
$maskedQuoteId = $this->getMaskedQuoteIdByReservedOrderId->execute('test_quote');
1772+
1773+
$query = <<<QUERY
1774+
mutation {
1775+
setBillingAddressOnCart(
1776+
input: {
1777+
cart_id: "$maskedQuoteId"
1778+
billing_address: {
1779+
address: {
1780+
firstname: "test firstname"
1781+
lastname: "test lastname"
1782+
company: "test company"
1783+
street: ["test street 1", "test street 2"]
1784+
city: "test city"
1785+
region: "AZ"
1786+
postcode: "887766"
1787+
country_code: "US"
1788+
telephone: ""
1789+
}
1790+
same_as_shipping: true
1791+
}
1792+
}
1793+
) {
1794+
cart {
1795+
billing_address {
1796+
firstname
1797+
lastname
1798+
company
1799+
street
1800+
city
1801+
postcode
1802+
telephone
1803+
country {
1804+
code
1805+
label
1806+
}
1807+
__typename
1808+
}
1809+
shipping_addresses {
1810+
firstname
1811+
lastname
1812+
company
1813+
street
1814+
city
1815+
postcode
1816+
telephone
1817+
country {
1818+
code
1819+
label
1820+
}
1821+
__typename
1822+
}
1823+
}
1824+
}
1825+
}
1826+
QUERY;
1827+
$response = $this->graphQlMutation($query, [], '', $this->getHeaderMap());
1828+
1829+
self::assertArrayHasKey('cart', $response['setBillingAddressOnCart']);
1830+
$cartResponse = $response['setBillingAddressOnCart']['cart'];
1831+
self::assertArrayHasKey('billing_address', $cartResponse);
1832+
$billingAddressResponse = $cartResponse['billing_address'];
1833+
self::assertArrayHasKey('shipping_addresses', $cartResponse);
1834+
$shippingAddressResponse = current($cartResponse['shipping_addresses']);
1835+
$this->assertNewAddressWithoutTelephone($billingAddressResponse);
1836+
$this->assertNewAddressWithoutTelephone($shippingAddressResponse, 'ShippingCartAddress');
1837+
}
1838+
1839+
/**
1840+
* Verify the all the whitelisted fields for a New Address Object without telephone
1841+
*
1842+
* @param array $addressResponse
1843+
* @param string $addressType
1844+
*/
1845+
private function assertNewAddressWithoutTelephone(
1846+
array $addressResponse,
1847+
string $addressType = 'BillingCartAddress'
1848+
): void {
1849+
$assertionMap = [
1850+
['response_field' => 'firstname', 'expected_value' => 'test firstname'],
1851+
['response_field' => 'lastname', 'expected_value' => 'test lastname'],
1852+
['response_field' => 'company', 'expected_value' => 'test company'],
1853+
['response_field' => 'street', 'expected_value' => [0 => 'test street 1', 1 => 'test street 2']],
1854+
['response_field' => 'city', 'expected_value' => 'test city'],
1855+
['response_field' => 'postcode', 'expected_value' => '887766'],
1856+
['response_field' => 'telephone', 'expected_value' => ''],
1857+
['response_field' => 'country', 'expected_value' => ['code' => 'US', 'label' => 'US']],
1858+
['response_field' => '__typename', 'expected_value' => $addressType]
1859+
];
1860+
1861+
$this->assertResponseFields($addressResponse, $assertionMap);
1862+
}
17621863
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\Framework\Api\DataObjectHelper;
9+
use Magento\Quote\Api\Data\AddressInterface;
10+
use Magento\Quote\Api\Data\AddressInterfaceFactory;
11+
use Magento\Quote\Api\BillingAddressManagementInterface;
12+
use Magento\Quote\Model\QuoteFactory;
13+
use Magento\Quote\Model\ResourceModel\Quote as QuoteResource;
14+
15+
use Magento\TestFramework\Helper\Bootstrap;
16+
17+
/** @var QuoteFactory $quoteFactory */
18+
$quoteFactory = Bootstrap::getObjectManager()->get(QuoteFactory::class);
19+
/** @var QuoteResource $quoteResource */
20+
$quoteResource = Bootstrap::getObjectManager()->get(QuoteResource::class);
21+
/** @var AddressInterfaceFactory $quoteAddressFactory */
22+
$quoteAddressFactory = Bootstrap::getObjectManager()->get(AddressInterfaceFactory::class);
23+
/** @var DataObjectHelper $dataObjectHelper */
24+
$dataObjectHelper = Bootstrap::getObjectManager()->get(DataObjectHelper::class);
25+
/** @var BillingAddressManagementInterface $billingAddressManagement */
26+
$billingAddressManagement = Bootstrap::getObjectManager()->get(BillingAddressManagementInterface::class);
27+
28+
$quoteAddressData = [
29+
AddressInterface::KEY_TELEPHONE => '',
30+
AddressInterface::KEY_POSTCODE => 75477,
31+
AddressInterface::KEY_COUNTRY_ID => 'US',
32+
AddressInterface::KEY_CITY => 'CityM',
33+
AddressInterface::KEY_COMPANY => 'CompanyName',
34+
AddressInterface::KEY_STREET => 'Green str, 67',
35+
AddressInterface::KEY_LASTNAME => 'Smith',
36+
AddressInterface::KEY_FIRSTNAME => 'John',
37+
AddressInterface::KEY_REGION_ID => 1,
38+
];
39+
$quoteAddress = $quoteAddressFactory->create();
40+
$dataObjectHelper->populateWithArray($quoteAddress, $quoteAddressData, AddressInterfaceFactory::class);
41+
42+
$quote = $quoteFactory->create();
43+
$quoteResource->load($quote, 'test_quote', 'reserved_order_id');
44+
$billingAddressManagement->assign($quote->getId(), $quoteAddress);

0 commit comments

Comments
 (0)