32 private $registryMock;
37 private $formFactoryMock;
42 private $localeDateMock;
47 private $eventManagerMock;
51 $this->localeDateMock = $this->getMockBuilder(\
Magento\Framework\Stdlib\DateTime\TimezoneInterface::class)
52 ->disableOriginalConstructor()
55 $this->formFactoryMock = $this->getMockBuilder(\
Magento\Framework\Data\FormFactory::class)
56 ->disableOriginalConstructor()
59 $this->registryMock = $this->getMockBuilder(\
Magento\Framework\Registry::class)
60 ->disableOriginalConstructor()
63 $this->contextMock = $this->getMockBuilder(\
Magento\Framework\Model\Context::class)
64 ->disableOriginalConstructor()
65 ->setMethods([
'getEventDispatcher'])
68 $this->eventManagerMock = $this->getMockBuilder(\
Magento\Framework\Event\ManagerInterface::class)
69 ->disableOriginalConstructor()
70 ->setMethods([
'dispatch'])
72 $this->contextMock->expects($this->any())
73 ->method(
'getEventDispatcher')
74 ->will($this->returnValue($this->eventManagerMock));
76 $resourceMock = $this->getMockBuilder(\
Magento\Framework\Model\
ResourceModel\AbstractResource::class)
77 ->disableOriginalConstructor()
79 $resourceCollectionMock = $this->getMockBuilder(\
Magento\Framework\Data\Collection\AbstractDb::class)
80 ->disableOriginalConstructor()
82 $extensionFactory = $this->getMockBuilder(\
Magento\Framework\Api\ExtensionAttributesFactory::class)
83 ->disableOriginalConstructor()
85 $customAttributeFactory = $this->getMockBuilder(\
Magento\Framework\Api\AttributeValueFactory::class)
86 ->disableOriginalConstructor()
89 $this->model = $this->getMockForAbstractClass(
90 \
Magento\Rule\Model\AbstractModel::class,
92 'context' => $this->contextMock,
93 'registry' => $this->registryMock,
94 'formFactory' => $this->formFactoryMock,
95 'localeDate' => $this->localeDateMock,
96 'resource' => $resourceMock,
97 'resourceCollection' => $resourceCollectionMock,
99 'extensionFactory' => $extensionFactory,
100 'customAttributeFactory' => $customAttributeFactory,
101 'serializer' => $this->getSerializerMock(),
111 private function getSerializerMock()
113 $serializerMock = $this->getMockBuilder(\
Magento\Framework\Serialize\Serializer\Json::class)
114 ->disableOriginalConstructor()
115 ->setMethods([
'serialize',
'unserialize'])
118 $serializerMock->expects($this->any())
119 ->method(
'serialize')
121 $this->returnCallback(
123 return json_encode(
$value);
128 $serializerMock->expects($this->any())
129 ->method(
'unserialize')
131 $this->returnCallback(
133 return json_decode(
$value,
true);
138 return $serializerMock;
143 $conditionsArray = [
'conditions' =>
'serialized'];
144 $serializedConditions = json_encode($conditionsArray);
145 $conditions = $this->getMockBuilder(\
Magento\Rule\Model\Condition\Combine::class)
146 ->setMethods([
'setRule',
'setId',
'setPrefix',
'loadArray'])
147 ->disableOriginalConstructor()
150 $conditions->expects($this->once())->method(
'setRule')->will($this->returnSelf());
151 $conditions->expects($this->once())->method(
'setId')->will($this->returnSelf());
152 $conditions->expects($this->once())->method(
'setPrefix')->will($this->returnSelf());
154 $this->model->expects($this->once())->method(
'getConditionsInstance')->will($this->returnValue($conditions));
156 $this->model->setConditionsSerialized($serializedConditions);
158 $conditions->expects($this->once())->method(
'loadArray')->with($conditionsArray);
160 $this->assertEquals($conditions, $this->model->getConditions());
165 $actionsArray = [
'actions' =>
'some_actions'];
166 $actionsSerialized = json_encode($actionsArray);
167 $actions = $this->getMockBuilder(\
Magento\Rule\Model\Action\Collection::class)
168 ->setMethods([
'setRule',
'setId',
'setPrefix',
'loadArray'])
169 ->disableOriginalConstructor()
172 $actions->expects($this->once())->method(
'setRule')->will($this->returnSelf());
173 $actions->expects($this->once())->method(
'setId')->will($this->returnSelf());
174 $actions->expects($this->once())->method(
'setPrefix')->will($this->returnSelf());
176 $this->model->expects($this->once())->method(
'getActionsInstance')->will($this->returnValue($actions));
178 $this->model->setActionsSerialized($actionsSerialized);
180 $actions->expects($this->once())->method(
'loadArray')->with($actionsArray);
182 $this->assertEquals($actions, $this->model->getActions());
187 $conditions = $this->getMockBuilder(\
Magento\Rule\Model\Condition\Combine::class)
188 ->setMethods([
'asArray'])
189 ->disableOriginalConstructor()
192 $actions = $this->getMockBuilder(\
Magento\Rule\Model\Action\Collection::class)
193 ->setMethods([
'asArray'])
194 ->disableOriginalConstructor()
197 $this->model->setConditions($conditions);
198 $this->model->setActions($actions);
200 $conditions->expects($this->any())->method(
'asArray')->will($this->returnValue([
'conditions' =>
'array']));
201 $actions->expects($this->any())->method(
'asArray')->will($this->returnValue([
'actions' =>
'array']));
203 $this->eventManagerMock->expects($this->exactly(2))->method(
'dispatch');
205 $this->assertEquals($this->model, $this->model->beforeSave());
206 $this->assertEquals(json_encode([
'conditions' =>
'array']), $this->model->getConditionsSerialized());
207 $this->assertEquals(json_encode([
'actions' =>
'array']), $this->model->getActionsSerialized());