public function testToDataModel() { $array = ['rule_id' => '1', 'name' => 'testrule', 'is_active' => '1', 'conditions_serialized' => 'a:7:{s:4:"type";s:46:"Magento\\SalesRule\\Model\\Rule\\Condition\\Combine";s:9:"attribute";N;' . 's:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";' . 's:10:"conditions";a:1:{i:0;a:5:{s:4:"type";s:46:"Magento\\SalesRule\\Model\\Rule\\Condition\\Address";' . 's:9:"attribute";s:13:"base_subtotal";s:8:"operator";s:2:">=";s:5:"value";s:3:"100";' . 's:18:"is_value_processed";b:0;}}}', 'actions_serialized' => 'a:7:{s:4:"type";s:54:"Magento\\SalesRule\\Model\\Rule\\Condition\\Product\\Combine";s:9:"attribute";N;' . 's:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";' . 's:10:"conditions";a:1:{i:0;a:5:{s:4:"type";s:46:"Magento\\SalesRule\\Model\\Rule\\Condition\\Product";' . 's:9:"attribute";s:16:"attribute_set_id";s:8:"operator";s:2:"==";s:5:"value";s:1:"4";' . 's:18:"is_value_processed";b:0;}}}', 'coupon_type' => '1', 'coupon_code' => '', 'store_labels' => [0 => 'TestRule', 1 => 'TestRuleForDefaultStore']]; $dataModel = $this->getMockBuilder('\\Magento\\SalesRule\\Model\\Data\\Rule')->disableOriginalConstructor()->setMethods(['create', 'getStoreLabels', 'setStoreLabels', 'getCouponType', 'setCouponType'])->getMock(); $dataLabel = $this->getMockBuilder('\\Magento\\SalesRule\\Api\\Data\\RuleLabel')->setMethods(['setStoreId', 'setStoreLabel', 'setStoreLabels'])->disableOriginalConstructor()->getMock(); $dataCondition = $this->getMockBuilder('\\Magento\\SalesRule\\Model\\Data\\Condition')->setMethods(['setData'])->disableOriginalConstructor()->getMock(); $this->ruleLabelFactory->expects($this->any())->method('create')->willReturn($dataLabel); $this->conditionDataFactory->expects($this->any())->method('create')->willReturn($dataCondition); $this->ruleDataFactory->expects($this->any())->method('create')->willReturn($dataModel); $this->salesRule->expects($this->any())->method('getData')->willReturn($array); $this->salesRule->expects($this->once())->method('getConditionsSerialized')->willReturn($array['conditions_serialized']); $dataModel->expects($this->atLeastOnce())->method('getStoreLabels')->willReturn($array['store_labels']); $dataModel->expects($this->atLeastOnce())->method('setStoreLabels'); $dataModel->expects($this->atLeastOnce())->method('getCouponType')->willReturn(\Magento\SalesRule\Model\Rule::COUPON_TYPE_NO_COUPON); $dataModel->expects($this->atLeastOnce())->method('setCouponType'); $return = $this->model->toDataModel($this->salesRule); $this->assertSame($dataModel, $return); }
/** * @param RuleDataModel $dataModel * @return $this */ protected function mapStoreLabels(RuleDataModel $dataModel) { //translate store labels into objects if ($dataModel->getStoreLabels() !== null) { $storeLabels = []; foreach ($dataModel->getStoreLabels() as $storeId => $storeLabel) { $storeLabelObj = $this->ruleLabelFactory->create(); $storeLabelObj->setStoreId($storeId); $storeLabelObj->setStoreLabel($storeLabel); $storeLabels[] = $storeLabelObj; } $dataModel->setStoreLabels($storeLabels); } return $this; }