You are here

nivo_slider.test in Nivo Slider 7

Tests for nivo_slider.module.

File

nivo_slider.test
View source
<?php

/**
 * @file
 * Tests for nivo_slider.module.
 */

/**
 * Defines a base class for testing the Nivo Slider module.
 */
class NivoSliderWebTestCase extends DrupalWebTestCase {
  function setUp() {
    parent::setUp('libraries', 'nivo_slider', 'jquery_update');
    $web_user = $this
      ->drupalCreateUser(array(
      'administer nivo slider',
    ));
    $this
      ->drupalLogin($web_user);
  }

  /**
   * Retrieves a sample image file.
   */
  function getTestImage() {

    // Get a file to upload.
    $file = current($this
      ->drupalGetTestFiles('image'));
    return $file;
  }

}

/**
 * Test creating, editing and deleting slides.
 */
class SlideTest extends NivoSliderWebTestCase {
  public static function getInfo() {
    return array(
      'name' => 'Slides',
      'description' => 'Test creating, editing and deleting slides.',
      'group' => 'Nivo Slider',
    );
  }
  function setUp() {
    parent::setUp();
  }

  /**
   * Add a new slide and ensure that it was created successfully.
   */
  function testSlideTest() {

    // Check to ensure that the slider is not displayed.
    $this
      ->drupalGet('<front>');
    $this
      ->assertNoRaw('//div[@id="slider"]', 'There is no slider on the front page.');

    // Load the slider slides administration page.
    $this
      ->drupalGet('admin/structure/nivo-slider');
    $this
      ->assertResponse(200, t('The privileged user can access the slider slides administration page.'));
    $file = $this
      ->getTestImage();

    // Create five new slide.
    for ($i = 0; $i <= 5; $i++) {
      $edit = array();
      $edit['files[upload]'] = drupal_realpath($file->uri);
      $this
        ->drupalPost('admin/structure/nivo-slider', $edit, t('Save configuration'));
      $this
        ->assertText(t('The configuration options have been saved.'));
    }

    // Check to ensure that the slider is displayed.
    $this
      ->drupalGet('<front>');
    $elements = $this
      ->xpath('//div[@id="slider"]');
    $this
      ->assertEqual(count($elements), 1, t('There is exactly one slider on the front page.'));

    // Delete the five existing slides.
    for ($i = 5; $i <= 0; $i--) {
      $edit = array();
      $edit["images[{$i}][delete]"] = TRUE;
      $this
        ->drupalPost('admin/structure/nivo-slider', $edit, t('Save configuration'));
      $this
        ->assertText(t('The configuration options have been saved.'));
    }
  }

}

/**
 * Test configuring slide options.
 */
class OptionTest extends NivoSliderWebTestCase {
  public static function getInfo() {
    return array(
      'name' => 'Options',
      'description' => 'Test configuring slider options.',
      'group' => 'Nivo Slider',
    );
  }
  function setUp() {
    parent::setUp();
  }

  /**
   * Add a new slide and ensure that it was created successfully.
   */
  function testOptionTest() {
    $file = $this
      ->getTestImage();

    // Create a new slide.
    $edit = array();
    $edit['files[upload]'] = drupal_realpath($file->uri);
    $this
      ->drupalPost('admin/structure/nivo-slider', $edit, t('Save configuration'));

    // Load the slider options administration page.
    $this
      ->drupalGet('admin/structure/nivo-slider/options');
    $this
      ->assertResponse(200, t('The privileged user can access the slider options administration page.'));
    $themes = array(
      'bar',
      'dark',
      'default',
      'light',
    );

    // Test to ensure that the slider theme can be changed.
    foreach ($themes as $theme) {
      $edit = array();
      $edit['nivo_slider_theme'] = $theme;
      $this
        ->drupalPost('admin/structure/nivo-slider/options', $edit, t('Save configuration'));

      // Check to ensure that the slider is displayed with the proper theme.
      $this
        ->drupalGet('<front>');
      $elements = $this
        ->xpath('//div[@class="slider-wrapper theme-' . $theme . '"]');
      $this
        ->assertEqual(count($elements), 1, t('There is exactly one slider with the current theme on the front page.'));
    }
  }

}

Classes

Namesort descending Description
NivoSliderWebTestCase Defines a base class for testing the Nivo Slider module.
OptionTest Test configuring slide options.
SlideTest Test creating, editing and deleting slides.