Skip to content

Commit edf5ffb

Browse files
committed
MAGETWO-56695: Paypal checkout not possible with products that have custom options #5938 - for 2.1
1 parent 2347bc6 commit edf5ffb

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

app/code/Magento/Catalog/Model/Product.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1905,13 +1905,14 @@ public function addOption(Product\Option $option)
19051905
*/
19061906
public function getOptionById($optionId)
19071907
{
1908-
/** @var \Magento\Catalog\Model\Product\Option $option */
1909-
foreach ($this->getOptions() as $option) {
1910-
if ($option->getId() == $optionId) {
1911-
return $option;
1908+
if (is_array($this->getOptions())) {
1909+
/** @var \Magento\Catalog\Model\Product\Option $option */
1910+
foreach ($this->getOptions() as $option) {
1911+
if ($option->getId() == $optionId) {
1912+
return $option;
1913+
}
19121914
}
19131915
}
1914-
19151916
return null;
19161917
}
19171918

app/code/Magento/Catalog/Test/Unit/Model/ProductTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1332,4 +1332,27 @@ public function testGetTypeId()
13321332
$this->model->setTypeId('typeId');
13331333
$this->model->getTypeInstance();
13341334
}
1335+
1336+
public function testGetOptionById()
1337+
{
1338+
$optionId = 100;
1339+
$optionMock = $this->getMock(\Magento\Catalog\Model\Product\Option::class, [], [], '', false);
1340+
$this->model->setOptions([$optionMock]);
1341+
$optionMock->expects($this->once())->method('getId')->willReturn($optionId);
1342+
$this->assertEquals($optionMock, $this->model->getOptionById($optionId));
1343+
}
1344+
1345+
public function testGetOptionByIdWithWrongOptionId()
1346+
{
1347+
$optionId = 100;
1348+
$optionMock = $this->getMock(\Magento\Catalog\Model\Product\Option::class, [], [], '', false);
1349+
$this->model->setOptions([$optionMock]);
1350+
$optionMock->expects($this->once())->method('getId')->willReturn(200);
1351+
$this->assertNull($this->model->getOptionById($optionId));
1352+
}
1353+
1354+
public function testGetOptionByIdForProductWithoutOptions()
1355+
{
1356+
$this->assertNull($this->model->getOptionById(100));
1357+
}
13351358
}

0 commit comments

Comments
 (0)