function RulesTestCase::testActionSaving

Same name in other branches
  1. 8.x-3.x d7-tests/rules_test_case.test \RulesTestCase::testActionSaving()

Tests automatic saving of variables.

File

tests/rules.test, line 313

Class

RulesTestCase
Rules test cases.

Code

public function testActionSaving() {
    // Test saving a parameter.
    $action = rules_action('rules_node_publish_action_save');
    $node = $this->drupalCreateNode(array(
        'status' => 0,
        'type' => 'page',
    ));
    $action->executeByArgs(array(
        'node' => $node,
    ));
    $this->assertEqual($node->status, 1, 'Action executed correctly on node.');
    // Sync node_load cache with node_save.
    entity_get_controller('node')->resetCache();
    $node = node_load($node->nid);
    $this->assertEqual($node->status, 1, 'Node has been saved.');
    // Now test saving a provided variable, which is renamed and modified before
    // it is saved.
    $title = $this->randomName();
    $rule = rule();
    $rule->action('entity_create', array(
        'type' => 'node',
        'param_type' => 'article',
        'param_author:select' => 'site:current-user',
        'param_title' => $title,
        'entity_created:var' => 'node',
    ));
    $rule->action('data_set', array(
        'data:select' => 'node:body',
        'value' => array(
            'value' => 'body',
        ),
    ));
    $rule->integrityCheck();
    $rule->execute();
    $node = $this->drupalGetNodeByTitle($title);
    $this->assertTrue(!empty($node) && $node->body[LANGUAGE_NONE][0]['value'] == 'body', 'Saved a provided variable');
    RulesLog::logger()->checkLog();
}