Skip to content

Commit b2b07d3

Browse files
Merge pull request #9682 from magento-gl/spartans_pr_18032025_webapi_test_fix
[Spartans] BugFixes Delivery
2 parents f70ff2a + 18da9d5 commit b2b07d3

File tree

5 files changed

+89
-49
lines changed

5 files changed

+89
-49
lines changed

app/code/Magento/Downloadable/Test/Fixture/DownloadableProduct.php

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Magento\TestFramework\Fixture\Api\DataMerger;
2020
use Magento\TestFramework\Fixture\Api\ServiceFactory;
2121
use Magento\TestFramework\Fixture\Data\ProcessorInterface;
22+
use Magento\Downloadable\Api\DomainManagerInterface;
2223

2324
class DownloadableProduct extends Product
2425
{
@@ -43,6 +44,8 @@ class DownloadableProduct extends Product
4344
],
4445
];
4546

47+
private const DOMAINS = ['example.com','www.example.com'];
48+
4649
/**
4750
* DownloadableProduct constructor
4851
*
@@ -61,7 +64,8 @@ public function __construct(
6164
private readonly ProductRepositoryInterface $productRepository,
6265
private readonly DirectoryList $directoryList,
6366
private readonly Link $link,
64-
private readonly File $file
67+
private readonly File $file,
68+
private readonly DomainManagerInterface $domainManager
6569
) {
6670
parent::__construct($serviceFactory, $dataProcessor, $dataMerger, $productRepository);
6771
}
@@ -74,9 +78,17 @@ public function __construct(
7478
*/
7579
public function apply(array $data = []): ?DataObject
7680
{
81+
$this->domainManager->addDomains(self::DOMAINS);
82+
7783
return parent::apply($this->prepareData($data));
7884
}
7985

86+
public function revert(DataObject $data): void
87+
{
88+
$this->domainManager->removeDomains(self::DOMAINS);
89+
parent::revert($data);
90+
}
91+
8092
/**
8193
* Prepare product data
8294
*
@@ -112,13 +124,22 @@ private function prepareLinksData(array $data): array
112124
{
113125
$links = [];
114126
foreach ($data['extension_attributes']['downloadable_product_links'] as $link) {
127+
128+
if ($link['link_type'] == 'url') {
129+
$link['link_url'] = 'http://example.com/downloadable.txt';
130+
$link['link_file'] = '';
131+
} else {
132+
$link['link_file'] = $this->generateDownloadableLink($link['link_file'] ?? 'test-' . uniqid() . '.txt');
133+
$link['link_url'] = '';
134+
}
135+
115136
$links[] = [
116137
'id' => null,
117138
'title' => $link['title'] ?? 'Test Link%uniqid%',
118139
'price' => $link['price'] ?? 0,
119140
'link_type' => $link['link_type'] ?? 'file',
120-
'link_url' => null,
121-
'link_file' => $this->generateDownloadableLink($link['link_file'] ?? 'test-' . uniqid() . '.txt'),
141+
'link_url' => $link['link_url'],
142+
'link_file' => $link['link_file'],
122143
'is_shareable' => $link['is_shareable'] ?? 0,
123144
'number_of_downloads' => $link['number_of_downloads'] ?? 5,
124145
'sort_order' => $link['sort_order'] ?? 10,

app/code/Magento/Multishipping/Model/Checkout/Type/Multishipping.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2011 Adobe
4+
* All Rights Reserved.
55
*/
66

77
namespace Magento\Multishipping\Model\Checkout\Type;
@@ -703,7 +703,7 @@ protected function _prepareOrder(\Magento\Quote\Model\Quote\Address $address)
703703
$store = $order->getStore();
704704
$amountPrice = $store->getBaseCurrency()
705705
->convert($shippingPrice, $store->getCurrentCurrencyCode());
706-
$order->setBaseShippingAmount($shippingPrice);
706+
$order->setBaseShippingAmount((float)$shippingPrice);
707707
$order->setShippingAmount($amountPrice);
708708

709709
$order->setQuote($quote);

dev/tests/api-functional/testsuite/Magento/GraphQl/GiftMessage/CartItemWithGiftMessageTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,12 @@ public function testCartQueryWithVirtualItem(): void
102102
[
103103
'title' => 'Example 1',
104104
'price' => 0.00,
105-
'link_type' => 'file'
105+
'link_type' => 'url'
106106
],
107107
[
108108
'title' => 'Example 2',
109109
'price' => 0.00,
110-
'link_type' => 'file'
110+
'link_type' => 'url'
111111
]
112112
]
113113
], as: 'product'),
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2021 Adobe
4+
* All Rights Reserved.
55
*/
66
declare(strict_types=1);
77

88
namespace Magento\GraphQl\GraphQlCache\CacheIdFactorProviders\Customer;
99

10+
use Magento\Catalog\Test\Fixture\Product as ProductFixture;
1011
use Magento\Customer\Api\CustomerRepositoryInterface;
1112
use Magento\Customer\Model\Group;
13+
use Magento\Customer\Test\Fixture\Customer as CustomerFixture;
1214
use Magento\Framework\Exception\AuthenticationException;
15+
use Magento\Framework\Exception\EmailNotConfirmedException;
1316
use Magento\GraphQlCache\Model\CacheId\CacheIdCalculator;
1417
use Magento\Integration\Api\CustomerTokenServiceInterface;
18+
use Magento\TestFramework\Fixture\DataFixture;
19+
use Magento\TestFramework\Fixture\DataFixtureStorage;
20+
use Magento\TestFramework\Fixture\DataFixtureStorageManager;
1521
use Magento\TestFramework\Helper\Bootstrap;
1622
use Magento\TestFramework\TestCase\GraphQlAbstract;
1723

@@ -35,57 +41,70 @@ class CustomerGroupProviderTest extends GraphQlAbstract
3541
*/
3642
private $customerRepository;
3743

44+
/**
45+
* @var DataFixtureStorage
46+
*/
47+
private $fixtures;
48+
3849
protected function setUp(): void
3950
{
40-
$objectManager = Bootstrap::getObjectManager();
41-
$this->customerTokenService = $objectManager->get(CustomerTokenServiceInterface::class);
42-
$this->customerGroup = $objectManager->get(Group::class);
43-
$this->customerRepository = $objectManager->get(CustomerRepositoryInterface::class);
51+
$this->customerTokenService = Bootstrap::getObjectManager()->get(CustomerTokenServiceInterface::class);
52+
$this->customerGroup = Bootstrap::getObjectManager()->get(Group::class);
53+
$this->customerRepository = Bootstrap::getObjectManager()->get(CustomerRepositoryInterface::class);
54+
$this->fixtures = Bootstrap::getObjectManager()->get(DataFixtureStorageManager::class)->getStorage();
4455
}
4556

4657
/**
4758
* Tests that cache id header changes based on customer group and remains consistent for same customer group
48-
*
49-
* @magentoApiDataFixture Magento/Customer/_files/customer.php
50-
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
5159
*/
52-
public function testCacheIdHeaderWithCustomerGroup()
60+
#[
61+
DataFixture(ProductFixture::class, as: 'product'),
62+
DataFixture(CustomerFixture::class, as: 'customer'),
63+
]
64+
public function testCacheIdHeaderWithCustomerGroup(): void
5365
{
54-
$sku = 'simple_product';
66+
$customerEmail = $this->fixtures->get('customer')->getEmail();
5567
$query = <<<QUERY
56-
{
57-
products(filter: {sku: {eq: "{$sku}"}})
58-
{
59-
items {
60-
id
61-
name
62-
sku
63-
description {
64-
html
68+
{
69+
products(filter: {sku: {eq: "{$this->fixtures->get('product')->getSku()}"}})
70+
{
71+
items {
72+
id
73+
name
74+
sku
75+
description {
76+
html
77+
}
6578
}
6679
}
6780
}
68-
}
69-
QUERY;
70-
$response = $this->graphQlQueryWithResponseHeaders($query, [], '', $this->getHeaderMap());
81+
QUERY;
82+
$response = $this->graphQlQueryWithResponseHeaders(
83+
$query,
84+
[],
85+
'',
86+
$this->getHeaderMap($customerEmail)
87+
);
7188
$this->assertArrayHasKey(CacheIdCalculator::CACHE_ID_HEADER, $response['headers']);
7289
$cacheId = $response['headers'][CacheIdCalculator::CACHE_ID_HEADER];
7390
$this->assertTrue((boolean)preg_match('/^[0-9a-f]{64}$/i', $cacheId));
74-
$groupCode = 'Retailer';
75-
$customer = $this->customerRepository->get('[email protected]');
76-
$customerGroupId = $this->customerGroup->load($groupCode, 'customer_group_code')->getId();
91+
$customer = $this->customerRepository->get($customerEmail);
92+
$customerGroupId = $this->customerGroup->load('Retailer', 'customer_group_code')->getId();
7793
// change the customer group of this customer from the default group
7894
$customer->setGroupId($customerGroupId);
7995
$this->customerRepository->save($customer);
8096
$responseAfterCustomerGroupChange = $this->graphQlQueryWithResponseHeaders(
8197
$query,
8298
[],
8399
'',
84-
$this->getHeaderMap()
100+
$this->getHeaderMap($customerEmail)
101+
);
102+
$this->assertArrayHasKey(
103+
CacheIdCalculator::CACHE_ID_HEADER,
104+
$responseAfterCustomerGroupChange['headers']
85105
);
86-
$this->assertArrayHasKey(CacheIdCalculator::CACHE_ID_HEADER, $responseAfterCustomerGroupChange['headers']);
87106
$cacheIdCustomerGroupChange = $responseAfterCustomerGroupChange['headers'][CacheIdCalculator::CACHE_ID_HEADER];
88-
// Verify that the the cache id generated is a 64 character long
107+
// Verify that the cache id generated is a 64 character long
89108
$this->assertTrue((boolean)preg_match('/^[0-9a-f]{64}$/i', $cacheId));
90109
// check that the cache ids generated before and after customer group changes are not equal
91110
$this->assertNotEquals($cacheId, $cacheIdCustomerGroupChange);
@@ -96,28 +115,28 @@ public function testCacheIdHeaderWithCustomerGroup()
96115
$query,
97116
[],
98117
'',
99-
$this->getHeaderMap()
118+
$this->getHeaderMap($customerEmail)
100119
);
101-
$cacheIdDefaultCustomerGroup = $responseDefaultCustomerGroup['headers'][CacheIdCalculator::CACHE_ID_HEADER];
102120
//Verify that the cache id is same as original $cacheId
103-
$this->assertEquals($cacheIdDefaultCustomerGroup, $cacheId);
121+
$this->assertEquals(
122+
$responseDefaultCustomerGroup['headers'][CacheIdCalculator::CACHE_ID_HEADER],
123+
$cacheId
124+
);
104125
}
105126

106127
/**
107128
* Authentication header map
108129
*
109130
* @param string $username
110-
* @param string $password
111-
*
112131
* @return array
113132
*
114133
* @throws AuthenticationException
134+
* @throws EmailNotConfirmedException
115135
*/
116-
private function getHeaderMap(string $username = '[email protected]', string $password = 'password'): array
136+
private function getHeaderMap(string $username): array
117137
{
118-
$customerToken = $this->customerTokenService->createCustomerAccessToken($username, $password);
138+
$customerToken = $this->customerTokenService->createCustomerAccessToken($username, 'password');
119139

120140
return ['Authorization' => 'Bearer ' . $customerToken];
121141
}
122-
123142
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ protected function setUp(): void
5656
[
5757
'title' => 'Example 1',
5858
'price' => 0.00,
59-
'link_type' => 'file'
59+
'link_type' => 'url'
6060
],
6161
[
6262
'title' => 'Example 2',
6363
'price' => 0.00,
64-
'link_type' => 'file'
64+
'link_type' => 'url'
6565
],
6666
]
6767
], as: 'product'),
@@ -158,12 +158,12 @@ public function testGetCartItemPricesForDownloadableProductWithoutSeparateLinks(
158158
[
159159
'title' => 'Example 1',
160160
'price' => 10,
161-
'link_type' => 'file'
161+
'link_type' => 'url'
162162
],
163163
[
164164
'title' => 'Example 2',
165165
'price' => 10,
166-
'link_type' => 'file'
166+
'link_type' => 'url'
167167
],
168168
]
169169
], as: 'product'),

0 commit comments

Comments
 (0)