Skip to content

Commit 4343c8f

Browse files
committed
MC-33459: Magento\Quote\Model\ShippingMethodManagementTest::testEstimateByAddressWithInclExclTaxAndVATGroup failed for 2.4-develop
1 parent 0f3f17b commit 4343c8f

File tree

3 files changed

+69
-15
lines changed

3 files changed

+69
-15
lines changed

dev/tests/integration/testsuite/Magento/Customer/_files/customer_group_rollback.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
use Magento\Framework\Api\SearchCriteriaBuilder;
99
use Magento\Customer\Api\GroupRepositoryInterface;
10+
use Magento\Framework\Registry;
1011
use Magento\TestFramework\Helper\Bootstrap;
1112
use Magento\Framework\ObjectManagerInterface;
1213
use Magento\Framework\Exception\NoSuchEntityException;
@@ -21,10 +22,17 @@
2122
->create();
2223
$groups = $groupRepository->getList($searchCriteria)
2324
->getItems();
25+
26+
/** @var Registry $registry */
27+
$registry = $objectManager->get(Registry::class);
28+
$registry->unregister('isSecureArea');
29+
$registry->register('isSecureArea', true);
2430
foreach ($groups as $group) {
2531
try {
2632
$groupRepository->delete($group);
2733
} catch (NoSuchEntityException $exception) {
2834
//Group already removed
2935
}
3036
}
37+
$registry->unregister('isSecureArea');
38+
$registry->register('isSecureArea', false);

dev/tests/integration/testsuite/Magento/Quote/Model/ShippingMethodManagementTest.php

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,19 @@
1111
use Magento\Customer\Api\Data\GroupInterface;
1212
use Magento\Customer\Api\GroupRepositoryInterface;
1313
use Magento\Customer\Model\Vat;
14+
use Magento\Customer\Observer\AfterAddressSaveObserver;
1415
use Magento\Framework\Api\SearchCriteriaBuilder;
1516
use Magento\Framework\App\Config\MutableScopeConfigInterface;
17+
use Magento\Framework\DataObject;
1618
use Magento\Framework\Exception\NoSuchEntityException;
1719
use Magento\Framework\ObjectManagerInterface;
1820
use Magento\Quote\Api\CartRepositoryInterface;
1921
use Magento\Quote\Api\Data\AddressInterfaceFactory;
2022
use Magento\Quote\Api\Data\EstimateAddressInterface;
2123
use Magento\Quote\Api\GuestShippingMethodManagementInterface;
2224
use Magento\Quote\Api\ShippingMethodManagementInterface;
25+
use Magento\Quote\Observer\Frontend\Quote\Address\CollectTotalsObserver;
26+
use Magento\Quote\Observer\Frontend\Quote\Address\VatValidator;
2327
use Magento\Store\Model\ScopeInterface;
2428
use Magento\Tax\Api\Data\TaxClassInterface;
2529
use Magento\Tax\Api\TaxClassRepositoryInterface;
@@ -299,6 +303,8 @@ private function executeTestFlow($flatRateAmount, $tableRateAmount)
299303
*/
300304
public function testEstimateByAddressWithInclExclTaxAndVATGroup()
301305
{
306+
$this->mockCustomerVat();
307+
302308
/** @var CustomerRepositoryInterface $customerRepository */
303309
$customerRepository = $this->objectManager->get(CustomerRepositoryInterface::class);
304310
$customer = $customerRepository->get('[email protected]');
@@ -324,11 +330,45 @@ public function testEstimateByAddressWithInclExclTaxAndVATGroup()
324330
$this->assertEquals(5.0, $result[0]->getPriceExclTax());
325331
}
326332

333+
/**
334+
* Create a test double fot customer vat class
335+
*/
336+
private function mockCustomerVat(): void
337+
{
338+
$gatewayResponse = new DataObject([
339+
'is_valid' => false,
340+
'request_date' => '',
341+
'request_identifier' => '123123123',
342+
'request_success' => false,
343+
'request_message' => __('Error during VAT Number verification.'),
344+
]);
345+
$customerVat = $this->createPartialMock(Vat::class,
346+
[
347+
'checkVatNumber',
348+
'isCountryInEU',
349+
'getCustomerGroupIdBasedOnVatNumber',
350+
'getMerchantCountryCode',
351+
'getMerchantVatNumber'
352+
]
353+
);
354+
$customerVat->method('checkVatNumber')->willReturn($gatewayResponse);
355+
$customerVat->method('isCountryInEU')->willReturn(true);
356+
$customerVat->method('getMerchantCountryCode')->willReturn('GB');
357+
$customerVat->method('getMerchantVatNumber')->willReturn('11111');
358+
$customerVat->method('getCustomerGroupIdBasedOnVatNumber')->willReturn('4');
359+
$this->objectManager->removeSharedInstance(Vat::class);
360+
$this->objectManager->addSharedInstance($customerVat, Vat::class);
361+
362+
// Remove instances where the customer vat object is cached
363+
$this->objectManager->removeSharedInstance(CollectTotalsObserver::class);
364+
$this->objectManager->removeSharedInstance(AfterAddressSaveObserver::class);
365+
$this->objectManager->removeSharedInstance(VatValidator::class);
366+
}
367+
327368
/**
328369
* Find the group with a given code.
329370
*
330371
* @param string $code
331-
*
332372
* @return GroupInterface
333373
*/
334374
protected function findCustomerGroupByCode(string $code): ?GroupInterface
@@ -397,11 +437,6 @@ private function setConfig(int $customerGroupId, int $productTaxClassId): void
397437
'value' => $customerGroupId,
398438
'scope' => ScopeInterface::SCOPE_STORE,
399439
],
400-
[
401-
'path' => Vat::XML_PATH_CUSTOMER_VIV_ERROR_GROUP,
402-
'value' => $customerGroupId,
403-
'scope' => ScopeInterface::SCOPE_STORE,
404-
],
405440
[
406441
'path' => TaxConfig::CONFIG_XML_PATH_SHIPPING_TAX_CLASS,
407442
'value' => $productTaxClassId,

dev/tests/integration/testsuite/Magento/Tax/_files/tax_classes_de_rollback.php

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
declare(strict_types=1);
77

88
use Magento\Framework\Api\SearchCriteriaBuilder;
9+
use Magento\Framework\Registry;
10+
use Magento\Tax\Api\TaxClassManagementInterface;
911
use Magento\Tax\Model\ClassModel;
1012
use Magento\TestFramework\Helper\Bootstrap;
1113
use Magento\Framework\ObjectManagerInterface;
@@ -18,37 +20,44 @@
1820

1921
/** @var ObjectManagerInterface $objectManager */
2022
$objectManager = Bootstrap::getObjectManager();
21-
$taxClasses = [
22-
'CustomerTaxClass',
23-
'ProductTaxClass',
24-
];
2523
$taxRuleRepository = $objectManager->get(TaxRuleRepositoryInterface::class);
2624
/** @var SearchCriteriaBuilder $searchBuilder */
2725
$searchBuilder = $objectManager->get(SearchCriteriaBuilder::class);
2826
$searchCriteria = $searchBuilder->addFilter(Rule::KEY_CODE, 'Test Rule')
2927
->create();
3028
$taxRules = $taxRuleRepository->getList($searchCriteria)
3129
->getItems();
30+
31+
/** @var Registry $registry */
32+
$registry = $objectManager->get(Registry::class);
33+
$registry->unregister('isSecureArea');
34+
$registry->register('isSecureArea', true);
3235
foreach ($taxRules as $taxRule) {
3336
try {
3437
$taxRuleRepository->delete($taxRule);
3538
} catch (NoSuchEntityException $exception) {
3639
//Rule already removed
3740
}
3841
}
39-
$searchCriteria = $searchBuilder->addFilter(ClassModel::KEY_NAME, $taxClasses, 'in')
40-
->create();
41-
/** @var TaxClassRepositoryInterface $groupRepository */
42+
43+
/** @var TaxClassRepositoryInterface $taxClassRepository */
4244
$taxClassRepository = $objectManager->get(TaxClassRepositoryInterface::class);
43-
$taxClasses = $taxClassRepository->getList($searchCriteria)
44-
->getItems();
45+
$searchCriteria = $searchBuilder->addFilter(ClassModel::KEY_NAME, 'CustomerTaxClass')
46+
->addFilter(ClassModel::KEY_TYPE, TaxClassManagementInterface::TYPE_CUSTOMER)
47+
->create();
48+
$taxClasses = $taxClassRepository->getList($searchCriteria)->getItems();
49+
$searchCriteria = $searchBuilder->addFilter(ClassModel::KEY_NAME, 'ProductTaxClass')
50+
->addFilter(ClassModel::KEY_TYPE, TaxClassManagementInterface::TYPE_PRODUCT)
51+
->create();
52+
$taxClasses = array_merge($taxClasses, $taxClassRepository->getList($searchCriteria)->getItems());
4553
foreach ($taxClasses as $taxClass) {
4654
try {
4755
$taxClassRepository->delete($taxClass);
4856
} catch (NoSuchEntityException $exception) {
4957
//TaxClass already removed
5058
}
5159
}
60+
5261
$searchCriteria = $searchBuilder->addFilter(Rate::KEY_CODE, 'Denmark')
5362
->create();
5463
/** @var TaxRateRepositoryInterface $groupRepository */
@@ -62,3 +71,5 @@
6271
//TaxRate already removed
6372
}
6473
}
74+
$registry->unregister('isSecureArea');
75+
$registry->register('isSecureArea', false);

0 commit comments

Comments
 (0)