You are here

class CertificateTestCase in Certificate 3.x

Same name and namespace in other branches
  1. 8.3 certificate.test \CertificateTestCase
  2. 6.2 certificate.test \CertificateTestCase
  3. 7.3 certificate.test \CertificateTestCase
  4. 7.2 certificate.test \CertificateTestCase

Tests for Certificate.

Hierarchy

Expanded class hierarchy of CertificateTestCase

File

./certificate.test, line 10
certificate.test

View source
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.");
  }

}

Members