171 lines
5.7 KiB
PHP
Executable File
171 lines
5.7 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
namespace Magento\Customer\Api;
|
|
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
|
|
class AddressRepositoryTest extends \Magento\TestFramework\TestCase\WebapiAbstract
|
|
{
|
|
const SOAP_SERVICE_NAME = 'customerAddressRepositoryV1';
|
|
const SOAP_SERVICE_VERSION = 'V1';
|
|
|
|
/** @var \Magento\Customer\Api\AddressRepositoryInterface */
|
|
protected $addressRepository;
|
|
|
|
/** @var \Magento\Customer\Api\CustomerRepositoryInterface */
|
|
protected $customerRepository;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
$objectManager = Bootstrap::getObjectManager();
|
|
$this->customerRepository = $objectManager->get(
|
|
\Magento\Customer\Api\CustomerRepositoryInterface::class
|
|
);
|
|
$this->addressRepository = $objectManager->get(
|
|
\Magento\Customer\Api\AddressRepositoryInterface::class
|
|
);
|
|
parent::setUp();
|
|
}
|
|
|
|
/**
|
|
* Ensure that fixture customer and his addresses are deleted.
|
|
*/
|
|
protected function tearDown(): void
|
|
{
|
|
/** @var \Magento\Framework\Registry $registry */
|
|
$registry = Bootstrap::getObjectManager()->get(\Magento\Framework\Registry::class);
|
|
$registry->unregister('isSecureArea');
|
|
$registry->register('isSecureArea', true);
|
|
|
|
try {
|
|
$fixtureFirstAddressId = 1;
|
|
$this->addressRepository->deleteById($fixtureFirstAddressId);
|
|
} catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
|
|
/** First address fixture was not used */
|
|
}
|
|
try {
|
|
$fixtureSecondAddressId = 2;
|
|
$this->addressRepository->deleteById($fixtureSecondAddressId);
|
|
} catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
|
|
/** Second address fixture was not used */
|
|
}
|
|
try {
|
|
$fixtureCustomerId = 1;
|
|
$this->customerRepository->deleteById($fixtureCustomerId);
|
|
} catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
|
|
/** Customer fixture was not used */
|
|
}
|
|
|
|
$registry->unregister('isSecureArea');
|
|
$registry->register('isSecureArea', false);
|
|
parent::tearDown();
|
|
}
|
|
|
|
/**
|
|
* @magentoApiDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoApiDataFixture Magento/Customer/_files/customer_address.php
|
|
*/
|
|
public function testGetAddress()
|
|
{
|
|
$fixtureAddressId = 1;
|
|
$serviceInfo = [
|
|
'rest' => [
|
|
'resourcePath' => "/V1/customers/addresses/{$fixtureAddressId}",
|
|
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
|
|
],
|
|
'soap' => [
|
|
'service' => self::SOAP_SERVICE_NAME,
|
|
'serviceVersion' => self::SOAP_SERVICE_VERSION,
|
|
'operation' => self::SOAP_SERVICE_NAME . 'GetById',
|
|
],
|
|
];
|
|
$requestData = ['addressId' => $fixtureAddressId];
|
|
$addressData = $this->_webApiCall($serviceInfo, $requestData);
|
|
$this->assertEquals(
|
|
$this->getFirstFixtureAddressData(),
|
|
$addressData,
|
|
"Address data is invalid."
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @magentoApiDataFixture Magento/Customer/_files/customer.php
|
|
* @magentoApiDataFixture Magento/Customer/_files/customer_address.php
|
|
*/
|
|
public function testDeleteAddress()
|
|
{
|
|
$fixtureAddressId = 1;
|
|
$serviceInfo = [
|
|
'rest' => [
|
|
'resourcePath' => "/V1/addresses/{$fixtureAddressId}",
|
|
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_DELETE,
|
|
],
|
|
'soap' => [
|
|
'service' => self::SOAP_SERVICE_NAME,
|
|
'serviceVersion' => self::SOAP_SERVICE_VERSION,
|
|
'operation' => self::SOAP_SERVICE_NAME . 'DeleteById',
|
|
],
|
|
];
|
|
$requestData = ['addressId' => $fixtureAddressId];
|
|
$response = $this->_webApiCall($serviceInfo, $requestData);
|
|
$this->assertTrue($response, 'Expected response should be true.');
|
|
|
|
$this->expectException(\Magento\Framework\Exception\NoSuchEntityException::class);
|
|
$this->expectExceptionMessage('No such entity with addressId = 1');
|
|
$this->addressRepository->getById($fixtureAddressId);
|
|
}
|
|
|
|
/**
|
|
* Retrieve data of the first fixture address.
|
|
*
|
|
* @return array
|
|
*/
|
|
protected function getFirstFixtureAddressData()
|
|
{
|
|
return [
|
|
'firstname' => 'John',
|
|
'lastname' => 'Smith',
|
|
'city' => 'CityM',
|
|
'country_id' => 'US',
|
|
'company' => 'CompanyName',
|
|
'postcode' => '75477',
|
|
'telephone' => '3468676',
|
|
'street' => ['Green str, 67'],
|
|
'id' => 1,
|
|
'default_billing' => true,
|
|
'default_shipping' => true,
|
|
'customer_id' => '1',
|
|
'region' => ['region' => 'Alabama', 'region_id' => 1, 'region_code' => 'AL'],
|
|
'region_id' => 1,
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Retrieve data of the second fixture address.
|
|
*
|
|
* @return array
|
|
*/
|
|
protected function getSecondFixtureAddressData()
|
|
{
|
|
return [
|
|
'firstname' => 'John',
|
|
'lastname' => 'Smith',
|
|
'city' => 'CityX',
|
|
'country_id' => 'US',
|
|
'postcode' => '47676',
|
|
'telephone' => '3234676',
|
|
'street' => ['Black str, 48'],
|
|
'id' => 2,
|
|
'default_billing' => false,
|
|
'default_shipping' => false,
|
|
'customer_id' => '1',
|
|
'region' => ['region' => 'Alabama', 'region_id' => 1, 'region_code' => 'AL'],
|
|
'region_id' => 1,
|
|
];
|
|
}
|
|
}
|