magento2-docker/dev/tests/api-functional/testsuite/Magento/Customer/Api/AddressRepositoryTest.php

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,
];
}
}