You are here

piwik.test in Piwik Web Analytics 7

Same filename and directory in other branches
  1. 6.2 piwik.test
  2. 7.2 piwik.test

Test file for Piwik module.

File

piwik.test
View source
<?php

/**
 * @file
 * Test file for Piwik module.
 */
class PiwikBasicTest extends DrupalWebTestCase {
  public static function getInfo() {
    return array(
      'name' => t('Piwik basic tests'),
      'description' => t('Test basic Piwik module functionality.'),
      'group' => 'Piwik',
    );
  }
  function setUp() {
    parent::setUp('piwik');
    $permissions = array(
      'administer piwik',
    );

    // User to set up google_analytics.
    $user = $this
      ->drupalCreateUser($permissions);
    $this
      ->drupalLogin($user);
  }
  function testPiwik() {

    // Check for setting page's presence.
    $this
      ->drupalGet('admin/config/system/piwik');
    $this
      ->assertRaw(t('Piwik site ID'), "[testPiwik]: Settings page displayed.");

    // Check for account code validation.
    $edit['piwik_site_id'] = $this
      ->randomName(2);
    $this
      ->drupalPost('admin/config/system/piwik', $edit, 'Save configuration');
    $this
      ->assertRaw(t('A valid Piwik site ID is an integer only.'), "[testPiwik]: Account number validated.");
  }
  function testPiwikTracking() {

    // Set visibility to hide tracking code on admin page only,
    // track authenticated users.
    variable_set('piwik_visibility', 0);
    variable_set('piwik_pages', "admin*");
    variable_set('piwik_roles', array(
      DRUPAL_AUTHENTICATED_RID => DRUPAL_AUTHENTICATED_RID,
    ));
    $ua_code = '1';
    variable_set('piwik_account', $ua_code);

    // Check tracking code visibility.
    $this
      ->drupalGet('');
    $this
      ->assertRaw($ua_code, '[testPiwikTracking]: Tracking code is displayed for authenticated.');

    /* Sample JS code as added to page:
       <script type="text/javascript">
       var pkBaseURL = (("https:" == document.location.protocol) ? "https://{$piwikUrl}" : "http://{$piwikUrl}");
       document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
       </script><script type="text/javascript">
       try {
       var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {$idSite});
       piwikTracker.trackPageView();
       piwikTracker.enableLinkTracking();
       } catch(err) {}
       </script>
       */

    // Test whether tracking code uses latest JS.
    $this
      ->drupalGet('');
    $this
      ->assertRaw('/piwik.php', '[testPiwikTracking]: Tracking code found.');

    // Test whether tracking code display is properly flipped.
    variable_set('piwik_visibility', 1);
    $this
      ->drupalGet('admin');
    $this
      ->assertRaw($ua_code, '[testPiwikTracking]: Tracking code is displayed on admin page.');
    $this
      ->drupalGet('admin/config/system/piwik');

    // Checking for tracking code URI here, as $ua_code is displayed in the form.
    $this
      ->assertRaw('/piwik.php', '[testPiwikTracking]: Tracking code is displayed on admin subpage.');
    $this
      ->drupalGet('');
    $this
      ->assertNoRaw('/piwik.php', '[testPiwikTracking]: Tracking code is not displayed on front page.');

    // Test whether tracking code is not display for anonymous.
    $this
      ->drupalGet('logout');
    $this
      ->drupalGet('');
    $this
      ->assertNoRaw('/piwik.php', '[testPiwikTracking]: Tracking code is not displayed for anonymous.');
  }

}

Classes

Namesort descending Description
PiwikBasicTest @file Test file for Piwik module.