Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CatalogRuleRepositoryTest.php
Go to the documentation of this file.
1 <?php
8 
9 class CatalogRuleRepositoryTest extends \PHPUnit\Framework\TestCase
10 {
14  protected $repository;
15 
19  protected $ruleResourceMock;
20 
24  protected $ruleFactoryMock;
25 
29  protected $ruleMock;
30 
31  protected function setUp()
32  {
33  $this->ruleResourceMock = $this->createMock(\Magento\CatalogRule\Model\ResourceModel\Rule::class);
34  $this->ruleFactoryMock = $this->createPartialMock(\Magento\CatalogRule\Model\RuleFactory::class, ['create']);
35  $this->ruleMock = $this->createMock(\Magento\CatalogRule\Model\Rule::class);
36  $this->repository = new \Magento\CatalogRule\Model\CatalogRuleRepository(
37  $this->ruleResourceMock,
38  $this->ruleFactoryMock
39  );
40  }
41 
42  public function testSave()
43  {
44  $this->ruleMock->expects($this->once())->method('getRuleId')->willReturn(null);
45  $this->ruleMock->expects($this->once())->method('getId')->willReturn(1);
46  $this->ruleResourceMock->expects($this->once())->method('save')->with($this->ruleMock);
47  $this->assertEquals($this->ruleMock, $this->repository->save($this->ruleMock));
48  }
49 
50  public function testEditRule()
51  {
52  $ruleId = 1;
53  $ruleData = ['id' => $ruleId];
54  $this->ruleMock->expects($this->once())->method('getData')->willReturn($ruleData);
55  $ruleMock = $this->createMock(\Magento\CatalogRule\Model\Rule::class);
56  $this->ruleMock->expects($this->exactly(2))->method('getRuleId')->willReturn($ruleId);
57  $ruleMock->expects($this->once())->method('addData')->with($ruleData)->willReturn($ruleMock);
58  $this->ruleFactoryMock->expects($this->once())->method('create')->willReturn($ruleMock);
59  $ruleMock->expects($this->once())->method('load')->with($ruleId)->willReturn($ruleMock);
60  $ruleMock->expects($this->once())->method('getRuleId')->willReturn($ruleId);
61  $this->ruleResourceMock->expects($this->once())->method('save')->with($ruleMock)->willReturn($ruleMock);
62  $ruleMock->expects($this->once())->method('getId')->willReturn($ruleId);
63  $this->assertEquals($ruleMock, $this->repository->save($this->ruleMock));
64  }
65 
70  public function testEnableSaveRule()
71  {
72  $this->ruleMock->expects($this->at(0))->method('getRuleId')->willReturn(null);
73  $this->ruleMock->expects($this->at(1))->method('getRuleId')->willReturn(1);
74  $this->ruleMock->expects($this->never())->method('getId');
75  $this->ruleResourceMock
76  ->expects($this->once())
77  ->method('save')
78  ->with($this->ruleMock)->willThrowException(new \Exception());
79  $this->repository->save($this->ruleMock);
80  }
81 
82  public function testDeleteRule()
83  {
84  $this->ruleMock->expects($this->once())->method('getId')->willReturn(1);
85  $this->ruleResourceMock
86  ->expects($this->once())
87  ->method('delete')
88  ->with($this->ruleMock);
89  $this->assertEquals(true, $this->repository->delete($this->ruleMock));
90  }
91 
92  public function testDeleteRuleById()
93  {
94  $ruleId = 1;
95  $ruleMock = $this->createMock(\Magento\CatalogRule\Model\Rule::class);
96  $this->ruleFactoryMock->expects($this->once())->method('create')->willReturn($ruleMock);
97  $ruleMock->expects($this->once())->method('getRuleId')->willReturn($ruleId);
98  $ruleMock->expects($this->once())->method('load')->with($ruleId)->willReturn($ruleMock);
99  $ruleMock->expects($this->once())->method('getId')->willReturn($ruleId);
100  $this->ruleResourceMock
101  ->expects($this->once())
102  ->method('delete')
103  ->with($ruleMock);
104  $this->assertEquals(true, $this->repository->deleteById($ruleId));
105  }
106 
111  public function testUnableDeleteRule()
112  {
113  $this->ruleMock->expects($this->once())->method('getRuleId')->willReturn(1);
114  $this->ruleResourceMock
115  ->expects($this->once())
116  ->method('delete')
117  ->with($this->ruleMock)->willThrowException(new \Exception());
118  $this->repository->delete($this->ruleMock);
119  }
120 
121  public function testGetRule()
122  {
123  $ruleId = 1;
124  $ruleMock = $this->createMock(\Magento\CatalogRule\Model\Rule::class);
125  $this->ruleFactoryMock->expects($this->once())->method('create')->willReturn($ruleMock);
126  $ruleMock->expects($this->once())->method('load')->with($ruleId)->willReturn($ruleMock);
127  $ruleMock->expects($this->once())->method('getRuleId')->willReturn($ruleId);
128  $this->assertEquals($ruleMock, $this->repository->get($ruleId));
130  $this->assertEquals($ruleMock, $this->repository->get($ruleId));
131  }
132 
137  public function testGetNonExistentRule()
138  {
139  $ruleId = 1;
140  $ruleMock = $this->createMock(\Magento\CatalogRule\Model\Rule::class);
141  $this->ruleFactoryMock->expects($this->once())->method('create')->willReturn($ruleMock);
142  $ruleMock->expects($this->once())->method('load')->with($ruleId)->willReturn($ruleMock);
143  $ruleMock->expects($this->once())->method('getRuleId')->willReturn(null);
144  $this->assertEquals($ruleMock, $this->repository->get($ruleId));
145  }
146 }
$ruleData
Definition: tax_rule.php:26