Skip to content

Commit a8262f9

Browse files
committed
Merge remote-tracking branch 'upstream/2.4-develop' into ACQE-4535
2 parents 143f6ca + 9649f62 commit a8262f9

File tree

85 files changed

+5786
-592
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+5786
-592
lines changed

app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Date.php

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -109,25 +109,16 @@ public function getHtml()
109109
' value="' .
110110
$this->localeResolver->getLocale() .
111111
'"/>';
112-
$scriptString = '
113-
require(["jquery", "mage/calendar"], function($){
114-
$("#' .
115-
$htmlId .
116-
'_range").dateRange({
117-
dateFormat: "' .
118-
$format .
119-
'",
120-
buttonText: "' . $this->escapeHtml(__('Date selector')) .
121-
'",
112+
$scriptString = 'require(["jquery", "mage/calendar"], function($){
113+
$("#' . $htmlId . '_range").dateRange({
114+
dateFormat: "' . $format . '",
115+
buttonText: "' . $this->escapeHtml(__('Date selector')) . '",
116+
buttonImage: "' . $this->getViewFileUrl('Magento_Theme::calendar.png') . '",
122117
from: {
123-
id: "' .
124-
$htmlId .
125-
'_from"
118+
id: "' . $htmlId . '_from"
126119
},
127120
to: {
128-
id: "' .
129-
$htmlId .
130-
'_to"
121+
id: "' . $htmlId . '_to"
131122
}
132123
})
133124
});';

app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Datetime.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class Datetime extends \Magento\Backend\Block\Widget\Grid\Column\Filter\Date
1717
/**
1818
* full day is 86400, we need 23 hours:59 minutes:59 seconds = 86399
1919
*/
20-
const END_OF_DAY_IN_SECONDS = 86399;
20+
public const END_OF_DAY_IN_SECONDS = 86399;
2121

2222
/**
2323
* @inheritdoc
@@ -123,6 +123,7 @@ public function getHtml()
123123
timeFormat: "' . $timeFormat . '",
124124
showsTime: ' . ($this->getColumn()->getFilterTime() ? 'true' : 'false') . ',
125125
buttonText: "' . $this->escapeHtml(__('Date selector')) . '",
126+
buttonImage: "' . $this->getViewFileUrl('Magento_Theme::calendar.png') . '",
126127
from: {
127128
id: "' . $htmlId . '_from"
128129
},

app/code/Magento/Backend/Test/Unit/Block/Widget/Grid/Column/Filter/DateTest.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,21 @@
1010
use Magento\Backend\Block\Context;
1111
use Magento\Backend\Block\Widget\Grid\Column;
1212
use Magento\Backend\Block\Widget\Grid\Column\Filter\Date;
13+
use Magento\Framework\App\Request\Http;
1314
use Magento\Framework\Escaper;
1415
use Magento\Framework\Locale\ResolverInterface;
1516
use Magento\Framework\Math\Random;
1617
use Magento\Framework\Stdlib\DateTime\DateTimeFormatterInterface;
1718
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
1819
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
20+
use Magento\Framework\View\Asset\Repository;
1921
use PHPUnit\Framework\MockObject\MockObject;
2022
use PHPUnit\Framework\TestCase;
2123

2224
/**
2325
* Class DateTest to test Magento\Backend\Block\Widget\Grid\Column\Filter\Date
2426
*
27+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
2528
*/
2629
class DateTest extends TestCase
2730
{
@@ -49,6 +52,16 @@ class DateTest extends TestCase
4952
/** @var Context|MockObject */
5053
private $contextMock;
5154

55+
/**
56+
* @var Http|MockObject
57+
*/
58+
private $request;
59+
60+
/**
61+
* @var Repository|MockObject
62+
*/
63+
private $repositoryMock;
64+
5265
protected function setUp(): void
5366
{
5467
$this->mathRandomMock = $this->getMockBuilder(Random::class)
@@ -88,6 +101,23 @@ protected function setUp(): void
88101
$this->contextMock->expects($this->once())->method('getEscaper')->willReturn($this->escaperMock);
89102
$this->contextMock->expects($this->once())->method('getLocaleDate')->willReturn($this->localeDateMock);
90103

104+
$this->request = $this->getMockBuilder(Http::class)
105+
->disableOriginalConstructor()
106+
->getMock();
107+
108+
$this->contextMock->expects($this->once())
109+
->method('getRequest')
110+
->willReturn($this->request);
111+
112+
$this->repositoryMock = $this->getMockBuilder(Repository::class)
113+
->disableOriginalConstructor()
114+
->setMethods(['getUrlWithParams'])
115+
->getMock();
116+
117+
$this->contextMock->expects($this->once())
118+
->method('getAssetRepository')
119+
->willReturn($this->repositoryMock);
120+
91121
$objectManagerHelper = new ObjectManager($this);
92122
$this->model = $objectManagerHelper->getObject(
93123
Date::class,
@@ -116,6 +146,14 @@ public function testGetHtmlSuccessfulTimestamp()
116146
'from' => $yesterday->getTimestamp(),
117147
'to' => $tomorrow->getTimestamp()
118148
];
149+
$params = ['_secure' => false];
150+
$fileId = 'Magento_Theme::calendar.png';
151+
$fileUrl = 'file url';
152+
153+
$this->repositoryMock->expects($this->once())
154+
->method('getUrlWithParams')
155+
->with($fileId, $params)
156+
->willReturn($fileUrl);
119157

120158
$this->mathRandomMock->expects($this->any())->method('getUniqueHash')->willReturn($uniqueHash);
121159
$this->columnMock->expects($this->once())->method('getHtmlId')->willReturn($id);

app/code/Magento/Backend/Test/Unit/Block/Widget/Grid/Column/Filter/DatetimeTest.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,21 @@
1010
use Magento\Backend\Block\Context;
1111
use Magento\Backend\Block\Widget\Grid\Column;
1212
use Magento\Backend\Block\Widget\Grid\Column\Filter\Datetime;
13+
use Magento\Framework\App\Request\Http;
1314
use Magento\Framework\Escaper;
1415
use Magento\Framework\Locale\ResolverInterface;
1516
use Magento\Framework\Math\Random;
1617
use Magento\Framework\Stdlib\DateTime\DateTimeFormatterInterface;
1718
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
1819
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
20+
use Magento\Framework\View\Asset\Repository;
1921
use PHPUnit\Framework\MockObject\MockObject;
2022
use PHPUnit\Framework\TestCase;
2123

2224
/**
2325
* Class DateTimeTest to test Magento\Backend\Block\Widget\Grid\Column\Filter\Date
26+
*
27+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
2428
*/
2529
class DatetimeTest extends TestCase
2630
{
@@ -48,6 +52,16 @@ class DatetimeTest extends TestCase
4852
/** @var Context|MockObject */
4953
private $contextMock;
5054

55+
/**
56+
* @var Http|MockObject
57+
*/
58+
private $request;
59+
60+
/**
61+
* @var Repository|MockObject
62+
*/
63+
private $repositoryMock;
64+
5165
protected function setUp(): void
5266
{
5367
$this->mathRandomMock = $this->getMockBuilder(Random::class)
@@ -87,6 +101,23 @@ protected function setUp(): void
87101
$this->contextMock->expects($this->once())->method('getEscaper')->willReturn($this->escaperMock);
88102
$this->contextMock->expects($this->once())->method('getLocaleDate')->willReturn($this->localeDateMock);
89103

104+
$this->request = $this->getMockBuilder(Http::class)
105+
->disableOriginalConstructor()
106+
->getMock();
107+
108+
$this->contextMock->expects($this->once())
109+
->method('getRequest')
110+
->willReturn($this->request);
111+
112+
$this->repositoryMock = $this->getMockBuilder(Repository::class)
113+
->disableOriginalConstructor()
114+
->setMethods(['getUrlWithParams'])
115+
->getMock();
116+
117+
$this->contextMock->expects($this->once())
118+
->method('getAssetRepository')
119+
->willReturn($this->repositoryMock);
120+
90121
$objectManagerHelper = new ObjectManager($this);
91122
$this->model = $objectManagerHelper->getObject(
92123
Datetime::class,
@@ -115,6 +146,14 @@ public function testGetHtmlSuccessfulTimestamp()
115146
'from' => $yesterday->getTimestamp(),
116147
'to' => $tomorrow->getTimestamp()
117148
];
149+
$params = ['_secure' => false];
150+
$fileId = 'Magento_Theme::calendar.png';
151+
$fileUrl = 'file url';
152+
153+
$this->repositoryMock->expects($this->once())
154+
->method('getUrlWithParams')
155+
->with($fileId, $params)
156+
->willReturn($fileUrl);
118157

119158
$this->mathRandomMock->expects($this->any())->method('getUniqueHash')->willReturn($uniqueHash);
120159
$this->columnMock->expects($this->once())->method('getHtmlId')->willReturn($id);

app/code/Magento/Bundle/view/frontend/templates/catalog/product/view/type/bundle/option/radio.phtml

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,66 +20,72 @@ $viewModel = $block->getData('validateQuantityViewModel');
2020
</label>
2121
<div class="control">
2222
<div class="nested options-list">
23-
<?php if ($block->showSingle()) : ?>
23+
<?php if ($block->showSingle()): ?>
2424
<?= /* @noEscape */ $block->getSelectionTitlePrice($_selections[0]) ?>
2525
<?= /* @noEscape */ $block->getTierPriceRenderer()->renderTierPrice($_selections[0]) ?>
2626
<input type="hidden"
27-
class="bundle-option-<?= (int)$_option->getId() ?> product bundle option"
28-
name="bundle_option[<?= (int)$_option->getId() ?>]"
29-
value="<?= (int)$_selections[0]->getSelectionId() ?>"
30-
id="bundle-option-<?= (int)$_option->getId() ?>-<?= (int)$_selections[0]->getSelectionId() ?>"
31-
checked="checked"
27+
class="bundle-option-<?= (int)$_option->getId() ?> product bundle option"
28+
name="bundle_option[<?= (int)$_option->getId() ?>]"
29+
value="<?= (int)$_selections[0]->getSelectionId() ?>"
30+
id="bundle-option-<?= (int)$_option->getId() ?>-<?= (int)$_selections[0]->getSelectionId() ?>"
31+
checked="checked"
3232
/>
33-
<?php else :?>
34-
<?php if (!$_option->getRequired()) : ?>
33+
<?php else: ?>
34+
<?php if (!$_option->getRequired()): ?>
3535
<div class="field choice">
3636
<input type="radio"
3737
class="radio product bundle option"
3838
id="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>"
3939
name="bundle_option[<?= $block->escapeHtmlAttr($_option->getId()) ?>]"
4040
data-selector="bundle_option[<?= $block->escapeHtmlAttr($_option->getId()) ?>]"
41-
<?= ($_default && $_default->isSalable())?'':' checked="checked" ' ?>
41+
<?= ($_default && $_default->isSalable())?'':' checked="checked" ' ?>
4242
value=""/>
4343
<label class="label" for="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>">
4444
<span><?= $block->escapeHtml(__('None')) ?></span>
4545
</label>
4646
</div>
4747
<?php endif; ?>
48-
<?php foreach ($_selections as $_selection) : ?>
48+
<?php foreach ($_selections as $_selection): ?>
4949
<div class="field choice">
5050
<input type="radio"
5151
class="radio product bundle option change-container-classname"
52-
id="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>-<?= $block->escapeHtmlAttr($_selection->getSelectionId()) ?>"
53-
<?php if ($_option->getRequired()) { echo 'data-validate="{\'validate-one-required-by-name\':true}"'; }?>
52+
id="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>
53+
-<?= $block->escapeHtmlAttr($_selection->getSelectionId()) ?>"
54+
<?php if ($_option->getRequired()) {
55+
echo 'data-validate="{\'validate-one-required-by-name\':true}"';
56+
} ?>
5457
name="bundle_option[<?= $block->escapeHtmlAttr($_option->getId()) ?>]"
5558
data-selector="bundle_option[<?= $block->escapeHtmlAttr($_option->getId()) ?>]"
56-
<?php if ($block->isSelected($_selection)) { echo ' checked="checked"'; } ?>
57-
<?php if (!$_selection->isSaleable()) { echo ' disabled="disabled"'; } ?>
58-
value="<?= $block->escapeHtmlAttr($_selection->getSelectionId()) ?>"/>
59+
<?php if ($block->isSelected($_selection)) { echo ' checked="checked"'; } ?>
60+
<?php if (!$_selection->isSaleable()) { echo ' disabled="disabled"'; } ?>
61+
value="<?= $block->escapeHtmlAttr($_selection->getSelectionId()) ?>"
62+
data-errors-message-box="#validation-message-box-radio"/>
5963
<label class="label"
60-
for="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>-<?= $block->escapeHtmlAttr($_selection->getSelectionId()) ?>">
64+
for="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>
65+
-<?= $block->escapeHtmlAttr($_selection->getSelectionId()) ?>">
6166
<span><?= /* @noEscape */ $block->getSelectionTitlePrice($_selection) ?></span>
6267
<br/>
6368
<?= /* @noEscape */ $block->getTierPriceRenderer()->renderTierPrice($_selection) ?>
6469
</label>
6570
</div>
6671
<?php endforeach; ?>
6772
<div id="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>-container"></div>
73+
<div id="validation-message-box-radio"></div>
6874
<?php endif; ?>
6975
<div class="field qty qty-holder">
7076
<label class="label" for="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>-qty-input">
7177
<span><?= $block->escapeHtml(__('Quantity')) ?></span>
7278
</label>
7379
<div class="control">
7480
<input <?php if (!$_canChangeQty) { echo ' disabled="disabled"'; } ?>
75-
id="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>-qty-input"
76-
class="input-text qty<?php if (!$_canChangeQty) { echo ' qty-disabled'; } ?>"
77-
type="number"
78-
min="0"
79-
data-validate="<?= $block->escapeHtmlAttr($viewModel->getQuantityValidators()) ?>"
80-
name="bundle_option_qty[<?= $block->escapeHtmlAttr($_option->getId()) ?>]"
81-
data-selector="bundle_option_qty[<?= $block->escapeHtmlAttr($_option->getId()) ?>]"
82-
value="<?= $block->escapeHtmlAttr($_defaultQty) ?>"/>
81+
id="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>-qty-input"
82+
class="input-text qty<?php if (!$_canChangeQty) { echo ' qty-disabled'; } ?>"
83+
type="number"
84+
min="0"
85+
data-validate="<?= $block->escapeHtmlAttr($viewModel->getQuantityValidators()) ?>"
86+
name="bundle_option_qty[<?= $block->escapeHtmlAttr($_option->getId()) ?>]"
87+
data-selector="bundle_option_qty[<?= $block->escapeHtmlAttr($_option->getId()) ?>]"
88+
value="<?= $block->escapeHtmlAttr($_defaultQty) ?>"/>
8389
</div>
8490
</div>
8591
</div>

app/code/Magento/Catalog/Test/Mftf/Data/ImageData.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@
4343
<data key="filename">jpg</data>
4444
<data key="file_extension">jpg</data>
4545
</entity>
46+
<entity name="GifImageWithUnusedTransparencyIndex" type="image">
47+
<data key="title" unique="suffix">GifImageWithUnusedTransparencyIndex</data>
48+
<data key="file">transparency_index.gif</data>
49+
<data key="filename">transparency_index</data>
50+
<data key="file_extension">gif</data>
51+
</entity>
4652
<entity name="LargeImage" type="image">
4753
<data key="title" unique="suffix">largeimage</data>
4854
<data key="file">large.jpg</data>

app/code/Magento/Catalog/Test/Mftf/Section/StoreFrontRecentProductSection.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@
1111

1212
<section name="StoreFrontRecentlyViewedProductSection">
1313
<element name="ProductName" type="text" selector="//div[@class='products-grid']/ol/li[position()={{position}}]/div/div[@class='product-item-details']/strong/a" parameterized="true"/>
14+
<element name="ProductPrice" type="text" selector=".price-including-tax .price"/>
1415
</section>
15-
</sections>
16+
</sections>

0 commit comments

Comments
 (0)