public function testImportDateRules()
    {
        $xmlstr = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
    <rules>
    </rules>
XML;
        $xml = new SimpleXMLElement($xmlstr);
        $date_rules = $xml->addChild('date_rules');
        $rule1 = $date_rules->addChild('rule');
        $rule1->addChild('source_field')->addAttribute('REF', 'F28');
        $rule1->addChild('target_field')->addAttribute('REF', 'F25');
        $rule1->addChild('comparator')->addAttribute('type', Tracker_rule_date::COMPARATOR_NOT_EQUALS);
        $rule2 = $date_rules->addChild('rule');
        $rule2->addChild('source_field')->addAttribute('REF', 'F29');
        $rule2->addChild('target_field')->addAttribute('REF', 'F30');
        $rule2->addChild('comparator')->addAttribute('type', Tracker_rule_date::COMPARATOR_LESS_THAN_OR_EQUALS);
        $tracker = mock('Tracker');
        stub($tracker)->getId()->returns(900);
        $f1 = stub('Tracker_FormElement_Field_Date')->getId()->returns(102);
        $f2 = stub('Tracker_FormElement_Field_Date')->getId()->returns(103);
        $f3 = stub('Tracker_FormElement_Field_Date')->getId()->returns(104);
        $f4 = stub('Tracker_FormElement_Field_Date')->getId()->returns(105);
        $array_xml_mapping = array('F25' => $f3, 'F28' => $f1, 'F29' => $f2, 'F30' => $f4);
        $tracker_rule_dao = mock('Tracker_RuleDao');
        $rule_factory = new Tracker_RuleFactory($tracker_rule_dao);
        $rules = $rule_factory->getInstanceFromXML($xml, $array_xml_mapping, $tracker);
        $date_rule_expected = new Tracker_Rule_Date();
        $date_rule_expected->setComparator(Tracker_rule_date::COMPARATOR_NOT_EQUALS)->setTrackerId($tracker->getId())->setSourceField($array_xml_mapping['F28'])->setTargetField($array_xml_mapping['F25']);
        $date_rule_expected2 = new Tracker_Rule_Date();
        $date_rule_expected2->setComparator(Tracker_rule_date::COMPARATOR_LESS_THAN_OR_EQUALS)->setTrackerId($tracker->getId())->setSourceField($array_xml_mapping['F29'])->setTargetField($array_xml_mapping['F30']);
        $this->assertEqual(count($rules['date_rules']), 2);
        $this->assertEqual($rules['date_rules'][0], $date_rule_expected);
        $this->assertEqual($rules['date_rules'][1], $date_rule_expected2);
    }
Exemple #2
0
 private function setUpRule($id, $source_field, $comparator, $target_field)
 {
     $rule = new Tracker_Rule_Date();
     $rule->setId($id);
     $rule->setSourceField($source_field);
     $rule->setComparator($comparator);
     $rule->setTargetField($target_field);
     return $rule;
 }
Exemple #3
0
 public function testValidateReturnsFalseForSameDateAndTimestamp()
 {
     $date_rule = new Tracker_Rule_Date();
     $date_rule->setComparator(Tracker_Rule_Date::COMPARATOR_NOT_EQUALS);
     $source_value = strtotime('2012-11-15 14:58');
     $target_value = '2012-11-15';
     $this->assertFalse($date_rule->validate($source_value, $target_value));
 }
 /**
  * 
  * @param SimpleXMLElement $xml         containing the structure of the imported semantic
  * @param array            $xmlMapping containig the newly created formElements idexed by their XML IDs
  * @param Tracker          $tracker     to which the rule is attached
  * @return array of \Tracker_Rule_Date
  */
 private function generateDateRulesArrayFromXml($date_rules, &$xmlMapping, $tracker)
 {
     $rules = array();
     foreach ($date_rules->rule as $xml_rule) {
         $xml_source_field_attributes = $xml_rule->source_field->attributes();
         $source_field = $xmlMapping[(string) $xml_source_field_attributes['REF']];
         $xml_target_field_attributes = $xml_rule->target_field->attributes();
         $target_field = $xmlMapping[(string) $xml_target_field_attributes['REF']];
         $xml_comparator_attributes = $xml_rule->comparator->attributes();
         $comparator = $xml_comparator_attributes['type'];
         $rule_list = new Tracker_Rule_Date();
         $rule_list->setComparator($comparator)->setTrackerId($tracker->getId())->setSourceField($source_field)->setTargetField($target_field);
         $rules[] = $rule_list;
     }
     return $rules;
 }
Exemple #5
0
 public function itDelegatesSaveToDao()
 {
     $id = 20;
     $rule = new Tracker_Rule_Date();
     $rule->setId($id);
     $rule->setSourceField($this->source_field);
     $rule->setComparator('>');
     $rule->setTargetField($this->target_field);
     stub($this->date_rule_dao)->save($id, $this->source_field_id, $this->target_field_id, '>')->once()->returns(true);
     $success = $this->date_rule_factory->save($rule);
     $this->assertTrue($success);
 }