Creates a node, then tests the statistics tokens generated from it.
function testStatisticsTokenReplacement() {
$language_interface = language(Language::TYPE_INTERFACE);
// Create user and node.
$user = $this
->drupalCreateUser(array(
'create page content',
));
$this
->drupalLogin($user);
$node = $this
->drupalCreateNode(array(
'type' => 'page',
'uid' => $user->uid,
));
// Hit the node.
$this
->drupalGet('node/' . $node->nid);
// Manually calling statistics.php, simulating ajax behavior.
$nid = $node->nid;
$post = http_build_query(array(
'nid' => $nid,
));
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded',
);
global $base_url;
$stats_path = $base_url . '/' . drupal_get_path('module', 'statistics') . '/statistics.php';
$client = \Drupal::httpClient();
$client
->setConfig(array(
'curl.options' => array(
CURLOPT_TIMEOUT => 10,
),
));
$client
->post($stats_path, $headers, $post)
->send();
$statistics = statistics_get($node->nid);
// Generate and test tokens.
$tests = array();
$tests['[node:total-count]'] = 1;
$tests['[node:day-count]'] = 1;
$tests['[node:last-view]'] = format_date($statistics['timestamp']);
$tests['[node:last-view:short]'] = format_date($statistics['timestamp'], 'short');
// Test to make sure that we generated something for each token.
$this
->assertFalse(in_array(0, array_map('strlen', $tests)), 'No empty tokens generated.');
foreach ($tests as $input => $expected) {
$output = \Drupal::token()
->replace($input, array(
'node' => $node,
), array(
'langcode' => $language_interface->langcode,
));
$this
->assertEqual($output, $expected, format_string('Statistics token %token replaced.', array(
'%token' => $input,
)));
}
}