Skip to content

Commit 14b781d

Browse files
committed
Merge remote-tracking branch 'origin/MAGETWO-51620' into MAGETWO-52374
2 parents 5c5a812 + 98ae84a commit 14b781d

File tree

2 files changed

+137
-0
lines changed

2 files changed

+137
-0
lines changed

app/code/Magento/SalesRule/Model/Converter/ToModel.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,12 @@ public function toModel(RuleDataModel $dataModel)
169169
}
170170
} else {
171171
$ruleModel = $this->ruleFactory->create();
172+
$dataModel->setFromDate(
173+
$this->formattingDate($dataModel->getFromDate())
174+
);
175+
$dataModel->setToDate(
176+
$this->formattingDate($dataModel->getToDate())
177+
);
172178
}
173179

174180
$modelData = $ruleModel->getData();
@@ -197,4 +203,20 @@ public function toModel(RuleDataModel $dataModel)
197203

198204
return $ruleModel;
199205
}
206+
207+
/**
208+
* Convert date to ISO8601
209+
*
210+
* @param string|null $date
211+
* @return string|null
212+
*/
213+
private function formattingDate($date)
214+
{
215+
if ($date) {
216+
$fromDate = new \DateTime($date);
217+
$date = $fromDate->format(\DateTime::ISO8601);
218+
}
219+
220+
return $date;
221+
}
200222
}

app/code/Magento/SalesRule/Test/Unit/Model/Converter/ToModelTest.php

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,4 +187,119 @@ public function testToModel()
187187
$result = $this->model->toModel($dataModel);
188188
$this->assertEquals($ruleModel, $result);
189189
}
190+
191+
/**
192+
* @dataProvider expectedDatesProvider
193+
*/
194+
public function testFormattingDate($data)
195+
{
196+
/**
197+
* @var \Magento\SalesRule\Model\Data\Rule|\PHPUnit_Framework_MockObject_MockObject $dataModel
198+
*/
199+
$dataModel = $this->getMockBuilder(\Magento\SalesRule\Model\Data\Rule::class)
200+
->disableOriginalConstructor()
201+
->setMethods(
202+
[
203+
'create',
204+
'load',
205+
'getData',
206+
'getRuleId',
207+
'getCondition',
208+
'getActionCondition',
209+
'getStoreLabels',
210+
'getFromDate',
211+
'setFromDate',
212+
'getToDate',
213+
'setToDate',
214+
])
215+
->getMock();
216+
$dataModel
217+
->expects($this->atLeastOnce())
218+
->method('getRuleId')
219+
->willReturn(null);
220+
221+
$dataModel
222+
->expects($this->atLeastOnce())
223+
->method('getCondition')
224+
->willReturn(false);
225+
226+
$dataModel
227+
->expects($this->atLeastOnce())
228+
->method('getActionCondition')
229+
->willReturn(false);
230+
$dataModel
231+
->expects($this->atLeastOnce())
232+
->method('getStoreLabels')
233+
->willReturn([]);
234+
$ruleModel = $this->getMockBuilder('\Magento\SalesRule\Model\Rule')
235+
->disableOriginalConstructor()
236+
->setMethods(['create', 'load', 'getId', 'getData'])
237+
->getMock();
238+
$ruleModel
239+
->expects($this->atLeastOnce())
240+
->method('getData')
241+
->willReturn(['data_1'=>1]);
242+
243+
$this->dataObjectProcessor
244+
->expects($this->any())
245+
->method('buildOutputDataArray')
246+
->willReturn(['data_2'=>2]);
247+
248+
$this->ruleFactory
249+
->expects($this->any())
250+
->method('create')
251+
->willReturn($ruleModel);
252+
253+
$dataModel
254+
->expects($this->atLeastOnce())
255+
->method('getFromDate')
256+
->willReturn($data['from_date']);
257+
258+
$dataModel
259+
->expects($this->atLeastOnce())
260+
->method('getToDate')
261+
->willReturn($data['to_date']);
262+
263+
$dataModel
264+
->expects($this->atLeastOnce())
265+
->method('setFromDate')
266+
->with($data['expected_from_date']);
267+
268+
$dataModel
269+
->expects($this->atLeastOnce())
270+
->method('setToDate')
271+
->with($data['expected_to_date']);
272+
273+
$this->model->toModel($dataModel);
274+
}
275+
276+
public function expectedDatesProvider()
277+
{
278+
return [
279+
'mm/dd/yyyy to yyyy-mm-dd' => [
280+
[
281+
'from_date' => '03/24/2016',
282+
'to_date' => '03/25/2016',
283+
'expected_from_date' => '2016-03-24T00:00:00-0700',
284+
'expected_to_date' => '2016-03-25T00:00:00-0700',
285+
]
286+
],
287+
'yyyy-mm-dd to yyyy-mm-dd' => [
288+
[
289+
'from_date' => '2016-03-24',
290+
'to_date' => '2016-03-25',
291+
'expected_from_date' => '2016-03-24T00:00:00-0700',
292+
'expected_to_date' => '2016-03-25T00:00:00-0700',
293+
]
294+
],
295+
'yymmdd to yyyy-mm-dd' => [
296+
[
297+
'from_date' => '20160324',
298+
'to_date' => '20160325',
299+
'expected_from_date' => '2016-03-24T00:00:00-0700',
300+
'expected_to_date' => '2016-03-25T00:00:00-0700',
301+
]
302+
],
303+
];
304+
}
190305
}

0 commit comments

Comments
 (0)