public function testArrayToConditionDataModel()
 {
     $array = ['type' => 'Magento\\SalesRule\\Model\\Rule\\Condition\\Combine', 'attribute' => null, 'operator' => null, 'value' => 1, 'is_value_processed' => null, 'aggregator' => 'all', 'conditions' => [['type' => 'Magento\\SalesRule\\Model\\Rule\\Condition\\Address', 'attribute' => 'base_subtotal', 'operator' => '>=', 'value' => 100, 'is_value_processed' => null], ['type' => 'Magento\\SalesRule\\Model\\Rule\\Condition\\Address', 'attribute' => 'total_qty', 'operator' => '>', 'value' => 2, 'is_value_processed' => null], ['type' => 'Magento\\SalesRule\\Model\\Rule\\Condition\\Product\\Found', 'attribute' => null, 'operator' => null, 'value' => 1, 'is_value_processed' => null, 'aggregator' => 'all', 'conditions' => [['type' => 'Magento\\SalesRule\\Model\\Rule\\Condition\\Product', 'attribute' => 'category_ids', 'operator' => '==', 'value' => 3, 'is_value_processed' => null]]]]];
     $dataCondition = $this->getMockBuilder('\\Magento\\SalesRule\\Model\\Data\\Condition')->setMethods(['setData'])->disableOriginalConstructor()->getMock();
     $this->conditionDataFactory->expects($this->any())->method('create')->willReturn($dataCondition);
     $return = $this->model->arrayToConditionDataModel($array);
     $this->assertEquals($dataCondition, $return);
 }
Example #2
0
 /**
  * Convert recursive array into condition data model
  *
  * @param array $input
  * @return Condition
  */
 public function arrayToConditionDataModel(array $input)
 {
     /** @var \Magento\SalesRule\Model\Data\Condition $conditionDataModel */
     $conditionDataModel = $this->conditionDataFactory->create();
     foreach ($input as $key => $value) {
         switch ($key) {
             case 'type':
                 $conditionDataModel->setConditionType($value);
                 break;
             case 'attribute':
                 $conditionDataModel->setAttributeName($value);
                 break;
             case 'operator':
                 $conditionDataModel->setOperator($value);
                 break;
             case 'value':
                 $conditionDataModel->setValue($value);
                 break;
             case 'aggregator':
                 $conditionDataModel->setAggregatorType($value);
                 break;
             case 'conditions':
                 $conditions = [];
                 foreach ($value as $condition) {
                     $conditions[] = $this->arrayToConditionDataModel($condition);
                 }
                 $conditionDataModel->setConditions($conditions);
                 break;
             default:
         }
     }
     return $conditionDataModel;
 }