Skip to content

Commit 68f8acd

Browse files
committed
ACP2E-199: [Magento Cloud] - Please add fix to MDVA-34192 for custom customer date attribute to work with DD-MM-YYYY date format in AU locale
- fix - add test - mute static fail
1 parent 202bd44 commit 68f8acd

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

app/code/Magento/Customer/Model/Metadata/Form/AbstractData.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,9 @@ protected function _applyInputFilter($value)
208208
protected function _getFormFilter()
209209
{
210210
$filterCode = $this->getAttribute()->getInputFilter();
211+
if (!$filterCode) {
212+
$filterCode = $this->assignFilter();
213+
}
211214
if ($filterCode) {
212215
$filterClass = 'Magento\Framework\Data\Form\Filter\\' . ucfirst($filterCode);
213216
if ($filterCode == 'date') {
@@ -220,6 +223,22 @@ protected function _getFormFilter()
220223
return false;
221224
}
222225

226+
/**
227+
* Assign filter code for user defined Date type Attributes
228+
*
229+
* @return string|null
230+
*/
231+
private function assignFilter(): ?string
232+
{
233+
$attribute = $this->getAttribute();
234+
$filterCode = null;
235+
if ($attribute->getFrontendInput() === 'date' && $attribute->isUserDefined()) {
236+
$filterCode = 'date';
237+
}
238+
239+
return $filterCode;
240+
}
241+
223242
/**
224243
* Get/Set/Reset date filter format
225244
*
@@ -419,6 +438,7 @@ protected function _validateInputRule($value)
419438
}
420439
break;
421440
case 'url':
441+
// phpcs:ignore Magento2.Functions.DiscouragedFunction
422442
$parsedUrl = parse_url($value);
423443
if ($parsedUrl === false || empty($parsedUrl['scheme']) || empty($parsedUrl['host'])) {
424444
return [__('"%1" is not a valid URL.', $label)];

app/code/Magento/Customer/Test/Unit/Model/Metadata/Form/DateTest.php

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
*/
88
namespace Magento\Customer\Test\Unit\Model\Metadata\Form;
99

10+
use Magento\Customer\Api\Data\AttributeMetadataInterface;
1011
use Magento\Customer\Api\Data\ValidationRuleInterface;
1112
use Magento\Customer\Model\Metadata\Form\Date;
1213
use Magento\Framework\App\RequestInterface;
14+
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
1315

1416
class DateTest extends AbstractFormTestCase
1517
{
@@ -68,6 +70,53 @@ public function testExtractValue()
6870
$this->assertEquals('1999-01-02', $actual);
6971
}
7072

73+
/**
74+
* Test extractValue without inputFilter set
75+
*/
76+
public function testExtractValueWithoutInputFilter()
77+
{
78+
/* local version of locale */
79+
$localeMock = $this->getMockBuilder(TimezoneInterface::class)
80+
->disableOriginalConstructor()
81+
->getMock();
82+
$localeMock->expects($this->any())->method('getDateFormat')->willReturn('d/M/yy');
83+
84+
/* local version of attribute meta data */
85+
$attributeMetadataMock = $this->getMockForAbstractClass(AttributeMetadataInterface::class);
86+
$attributeMetadataMock->expects($this->any())
87+
->method('getAttributeCode')
88+
->willReturn('date');
89+
$attributeMetadataMock->expects($this->any())
90+
->method('getStoreLabel')
91+
->willReturn('Space Date');
92+
$attributeMetadataMock->expects($this->any())
93+
->method('getInputFilter')
94+
->willReturn(null);
95+
$attributeMetadataMock->expects($this->any())
96+
->method('isUserDefined')
97+
->willReturn(true);
98+
$attributeMetadataMock->expects($this->any())
99+
->method('getFrontendInput')
100+
->willReturn('date');
101+
102+
$date = new Date(
103+
$localeMock,
104+
$this->loggerMock,
105+
$attributeMetadataMock,
106+
$this->localeResolverMock,
107+
null,
108+
0
109+
);
110+
111+
$requestMock = $this->getMockBuilder(RequestInterface::class)
112+
->disableOriginalConstructor()
113+
->getMockForAbstractClass();
114+
$requestMock->expects($this->once())->method('getParam')->willReturn('01/2/1999');
115+
116+
$actual = $date->extractValue($requestMock);
117+
$this->assertEquals('1999-02-01', $actual);
118+
}
119+
71120
/**
72121
* @param array|string $value Value to validate
73122
* @param array $validation Array of more validation metadata

0 commit comments

Comments
 (0)