function RulesTestCase::testRulesCrud
Same name in other branches
- 8.x-3.x d7-tests/rules_test_case.test \RulesTestCase::testRulesCRUD()
Tests CRUD functionality.
File
-
tests/
rules.test, line 250
Class
- RulesTestCase
- Rules test cases.
Code
public function testRulesCrud() {
$rule = $this->createTestRule();
$rule->integrityCheck()
->save('test');
$this->assertEqual(TRUE, $rule->active, 'Rule is active.');
$this->assertEqual(0, $rule->weight, 'Rule weight is zero.');
$results = entity_load('rules_config', array(
'test',
));
$rule2 = array_pop($results);
$this->assertEqual($rule->id, $rule2->id, 'Rule created and loaded');
$this->assertEqual(get_class($rule2), get_class($rule), 'Class properly instantiated.');
$rule2->execute();
// Update.
$rule2->save();
// Make sure all rule elements are still here.
$it = new RecursiveIteratorIterator($rule2->conditions(), RecursiveIteratorIterator::SELF_FIRST);
$this->assertEqual(iterator_count($it), 8, 'Iterated over all conditions and condition containers');
$it = new RecursiveIteratorIterator($rule2->conditions());
$this->assertEqual(iterator_count($it), 6, 'Iterated over all conditions');
$this->assertEqual(iterator_count($rule2->actions()), 1, 'Iterated over all actions');
// Delete.
$rule2->delete();
$this->assertEqual(entity_load('rules_config', FALSE, array(
'id' => $rule->id,
)), array(), 'Deleted.');
// Tests CRUD for tags - making sure the tags are stored properly..
$rule = $this->createTestRule();
$tag = $this->randomString();
$rule->tags = array(
$tag,
);
$rule->save();
$result = db_select('rules_tags')->fields('rules_tags', array(
'tag',
))
->condition('id', $rule->id)
->execute();
$this->assertEqual($result->fetchField(), $tag, 'Associated tag has been saved.');
// Try updating.
$rule->tags = array(
$this->randomName(),
$this->randomName(),
);
$rule->integrityCheck()
->save();
$result = db_select('rules_tags')->fields('rules_tags', array(
'tag',
))
->condition('id', $rule->id)
->execute()
->fetchCol();
$this->assertTrue(in_array($rule->tags[0], $result) && in_array($rule->tags[1], $result), 'Updated associated tags.');
// Try loading multiple rules by tags.
$rule2 = $this->createTestRule();
$rule2->tags = array(
$this->randomName(),
);
$rule2->save();
$loaded = entity_load('rules_config', FALSE, array(
'tags' => array(
$rule->tags[0],
$rule2->tags[0],
),
));
$this->assertTrue($loaded[$rule->id]->id == $rule->id && $loaded[$rule2->id]->id == $rule2->id, 'Loading configs by tags');
// Try deleting.
$rule->delete();
$result = db_select('rules_tags')->fields('rules_tags', array(
'tag',
))
->condition('id', $rule->id)
->execute();
$this->assertEqual($result->fetchField(), FALSE, 'Deleted associated tags.');
}