You are here

certificate.test in Certificate 7.2

File

certificate.test
View source
<?php

/**
 * @file certificate.test
 */

/**
 * Tests for Certificate.
 */
class CertificateTestCase extends DrupalWebTestCase {
  public static function getInfo() {

    // Note that getInfo() strings are not translated with t().
    return array(
      'name' => 'Certificate',
      'description' => 'Ensure that the Certificate module functions properly.',
      'group' => 'Certificate',
    );
  }
  public function setUp() {
    parent::setUp(array(
      'certificate',
      'certificate_test',
    ));

    // Set up an activity.
    $this->contentType = $this
      ->drupalCreateContentType(array(
      'type' => 'certificate_activity',
    ));
    variable_set("certificate_certifiable_" . $this->contentType->type, TRUE);
  }
  public function testCertificateAccess() {
    $u1 = $this
      ->drupalCreateUser();

    // Create an activity.
    $activity_node = $this
      ->drupalCreateNode(array(
      'type' => $this->contentType->type,
    ));

    // Check for forbidden certificate.
    $result = certificate_can_access_certificate($activity_node, $u1);
    $this
      ->assertTrue($result !== TRUE, 'User cannot access certificate.');
    $this
      ->assertTrue($result == 'Custom access denied message.', 'Error message matched module provided message.');

    // Set certificates to appear.
    $GLOBALS['certificate_ok'] = TRUE;
    $result = certificate_can_access_certificate($activity_node, $u1, TRUE);
    $this
      ->assertTrue($result === TRUE, 'User can access certificate.');
  }
  public function testCertificateMapping() {
    $activity_node = $this
      ->drupalCreateNode(array(
      'type' => $this->contentType->type,
    ));
    $certificate = $this
      ->drupalCreateNode(array(
      'type' => 'certificate',
    ));
    $u1 = $this
      ->drupalCreateUser();
    $firstletter = $u1->name[0];
    $this
      ->drupalLogin($u1);
    $GLOBALS['certificate_ok'] = TRUE;
    $this
      ->drupalGet("node/{$activity_node->nid}/certificate", array(
      'query' => array(
        'certificate_ok' => 1,
      ),
    ));
    $this
      ->assertNoResponse(403, 'Did not get access denied.');
    $this
      ->assertNoText('Custom access denied message.', 'Did not find moduled provided access denied message on certificate page.');
    $this
      ->assertText('Sorry, there is no certificate available.', 'Found no certificate available text.');

    // Map the first letter of the user's name to the certificate.
    certificate_update_node_mappings($activity_node->nid, array(
      'firstletter' => array(
        $firstletter => $certificate->nid,
      ),
    ));
    $this
      ->drupalGet("node/{$activity_node->nid}/certificate", array(
      'query' => array(
        'certificate_ok' => 1,
      ),
    ));
    $this
      ->assertNoResponse(403, 'Did not get access denied.');
    $this
      ->assertNoText('Custom access denied message.', 'Did not find module provided access denied message on certificate page.');
    $this
      ->assertNoText('Sorry, there is no certificate available.', 'User received certificate.');
  }

  /**
   * Test certicificate templating and tokens.
   */
  function testCertificateTemplates() {
    $account = $this
      ->drupalCreateUser(array(
      'administer certificates',
    ));
    $node = $this
      ->drupalCreateNode(array(
      'title' => 'My test certifiable type',
    ));
    $certificate = $this
      ->drupalCreateNode(array(
      'type' => 'certificate',
      'body' => array(
        LANGUAGE_NONE => array(
          array(
            'value' => '[node:title][user:name]',
          ),
        ),
      ),
    ));
    $firstletter = $account->name[0];

    // Map the first letter of the user's name to the certificate.
    certificate_update_node_mappings($node->nid, array(
      'firstletter' => array(
        $firstletter => $certificate->nid,
      ),
    ));
    $this
      ->drupalLogin($account);
    $this
      ->drupalGet("node/{$node->nid}/certificate?preview");
    $this
      ->assertText('My test certifiable type', "Saw node title.");
    $this
      ->assertText($account->name, "Saw user name.");
  }

}

Classes

Namesort descending Description
CertificateTestCase Tests for Certificate.