Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
OptionTest.php
Go to the documentation of this file.
1 <?php
7 
9 
10 class OptionTest extends \PHPUnit\Framework\TestCase
11 {
15  protected $selectionFirst;
16 
20  protected $selectionSecond;
21 
25  protected $resource;
26 
30  protected $model;
31 
32  protected function setUp()
33  {
34  $this->selectionFirst = $this->createPartialMock(
35  \Magento\Catalog\Model\Product::class,
36  ['__wakeup', 'isSaleable', 'getIsDefault', 'getSelectionId']
37  );
38  $this->selectionSecond = $this->createPartialMock(
39  \Magento\Catalog\Model\Product::class,
40  ['__wakeup', 'isSaleable', 'getIsDefault', 'getSelectionId']
41  );
42  $this->resource = $this->createPartialMock(\Magento\Framework\Model\ResourceModel\AbstractResource::class, [
43  '_construct',
44  'getConnection',
45  'getIdFieldName',
46  'getSearchableData',
47  ]);
48  $this->model = (new ObjectManager($this))->getObject(\Magento\Bundle\Model\Option::class, [
49  'resource' => $this->resource,
50  ]);
51  }
52 
56  public function testAddSelection()
57  {
58  $this->model->addSelection($this->selectionFirst);
59 
60  $this->assertContains($this->selectionFirst, $this->model->getSelections());
61  }
62 
63  public function testIsSaleablePositive()
64  {
65  $this->selectionFirst->expects($this->any())->method('isSaleable')->will($this->returnValue(true));
66  $this->selectionSecond->expects($this->any())->method('isSaleable')->will($this->returnValue(false));
67 
68  $this->model->setSelections([$this->selectionFirst, $this->selectionSecond]);
69  $this->assertTrue($this->model->isSaleable());
70  }
71 
72  public function testIsSaleableNegative()
73  {
74  $this->selectionFirst->expects($this->any())->method('isSaleable')->will($this->returnValue(false));
75  $this->selectionSecond->expects($this->any())->method('isSaleable')->will($this->returnValue(false));
76 
77  $this->model->setSelections([$this->selectionFirst, $this->selectionSecond]);
78  $this->assertFalse($this->model->isSaleable());
79  }
80 
81  public function testGetDefaultSelection()
82  {
83  $this->selectionFirst->expects($this->any())->method('getIsDefault')->will($this->returnValue(true));
84  $this->selectionSecond->expects($this->any())->method('getIsDefault')->will($this->returnValue(false));
85 
86  $this->model->setSelections([$this->selectionFirst, $this->selectionSecond]);
87  $this->assertEquals($this->selectionFirst, $this->model->getDefaultSelection());
88  }
89 
91  {
92  $this->selectionFirst->expects($this->any())->method('getIsDefault')->will($this->returnValue(false));
93  $this->selectionSecond->expects($this->any())->method('getIsDefault')->will($this->returnValue(false));
94 
95  $this->model->setSelections([$this->selectionFirst, $this->selectionSecond]);
96  $this->assertNull($this->model->getDefaultSelection());
97  }
98 
104  public function testIsMultiSelection($type, $expectedValue)
105  {
106  $this->model->setType($type);
107 
108  $this->assertEquals($expectedValue, $this->model->isMultiSelection());
109  }
110 
115  {
116  return [
117  ['checkbox', true],
118  ['multi', true],
119  ['some_type', false],
120  ];
121  }
122 
123  public function testGetSearchableData()
124  {
125  $productId = 15;
126  $storeId = 1;
127  $data = 'data';
128 
129  $this->resource->expects($this->any())->method('getSearchableData')->with($productId, $storeId)
130  ->will($this->returnValue($data));
131 
132  $this->assertEquals($data, $this->model->getSearchableData($productId, $storeId));
133  }
134 
135  public function testGetSelectionById()
136  {
137  $selectionId = 15;
138 
139  $this->selectionFirst->expects($this->any())->method('getSelectionId')->will($this->returnValue($selectionId));
140  $this->selectionSecond->expects($this->any())->method('getSelectionId')->will($this->returnValue(16));
141 
142  $this->model->setSelections([$this->selectionFirst, $this->selectionSecond]);
143  $this->assertEquals($this->selectionFirst, $this->model->getSelectionById($selectionId));
144  }
145 
147  {
148  $selectionId = 15;
149 
150  $this->selectionFirst->expects($this->any())->method('getSelectionId')->will($this->returnValue(16));
151  $this->selectionSecond->expects($this->any())->method('getSelectionId')->will($this->returnValue(17));
152 
153  $this->model->setSelections([$this->selectionFirst, $this->selectionSecond]);
154  $this->assertNull($this->model->getSelectionById($selectionId));
155  }
156 }
$type
Definition: item.phtml:13
testIsMultiSelection($type, $expectedValue)
Definition: OptionTest.php:104