403Webshell
Server IP : 195.130.67.5  /  Your IP : 216.73.217.154
Web Server : Microsoft-IIS/10.0
System : Windows NT WEBSERVER1 10.0 build 17763 (Windows Server 2016) i586
User : IUSR ( 0)
PHP Version : 7.4.19
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /inetpub/wwwroot/business/sites/all/modules/readmorecontrol/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /inetpub/wwwroot/business/sites/all/modules/readmorecontrol/readmorecontrol.test
<?php

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

/**
 * Tests for number field types.
 */
class ReadMoreControlTestCase extends DrupalWebTestCase {
  protected $field;
  protected $instance;
  protected $webUser;

  /**
   * Implements DrupalWebTestCase::getInfo().
   */
  public static function getInfo() {
    return array(
      'name'  => 'Base tests',
      'description'  => 'Test the creation of a number of fields and the responses found when looking for the Read more link on node entities.',
      'group' => 'Read More Control',
    );
  }

  /**
   * Implements DrupalWebTestCase::setUp().
   */
  function setUp() {
    parent::setUp(array('field_test', 'readmorecontrol'));

    $this->webUser = $this->drupalCreateUser(array(
      'access field_test content',
      'administer field_test content',
      'administer content types',
      'administer nodes',
      'bypass node access',
    ));
    $this->drupalLogin($this->webUser);
  }

  /**
   * Test that settings are saved against the node entity type and that these
   * are updated if the content type is renamed.
   */
  function testNodeTypeSettings() {
    // See if our option shows up on the edit pages.
    $this->drupalGet('admin/structure/types/manage/page');
    $this->assertFieldChecked('edit-readmorecontrol-node-default');
    $this->assertNoFieldChecked('edit-readmorecontrol-node-when-required');
    $this->assertNoFieldChecked('edit-readmorecontrol-node-never');

    $edit = array('readmorecontrol_behaviour__node_' => 'when_required');
    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
    $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Basic page')));
    // Check that there is no strange interaction with other types.
    $this->drupalGet('admin/structure/types/manage/article');
    $this->assertFieldChecked('edit-readmorecontrol-node-default');

    $this->drupalGet('admin/structure/types/manage/page');
    $this->assertFieldChecked('edit-readmorecontrol-node-when-required');

    // Change type and test.
    $edit = array('type' => 'pp');
    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
    $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Basic page')));

    $this->drupalGet('admin/structure/types/manage/pp');
    $this->assertFieldChecked('edit-readmorecontrol-node-when-required');
    // Check that there is no strange interaction with other types.
    $this->drupalGet('admin/structure/types/manage/article');
    $this->assertFieldChecked('edit-readmorecontrol-node-default');

    $edit = array('readmorecontrol_behaviour__node_' => 'never');
    $this->drupalPost('admin/structure/types/manage/pp', $edit, t('Save content type'));
    $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Basic page')));

    $this->drupalGet('admin/structure/types/manage/pp');
    $this->assertFieldChecked('edit-readmorecontrol-node-never');

    // Revert type settings and test.
    $edit = array('type' => 'page');
    $this->drupalPost('admin/structure/types/manage/pp', $edit, t('Save content type'));
    $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Basic page')));

    $this->drupalGet('admin/structure/types/manage/page');
    $this->assertFieldChecked('edit-readmorecontrol-node-never');
    $this->drupalGet('admin/structure/types/manage/article');
    $this->assertFieldChecked('edit-readmorecontrol-node-default');
  }

  /**
   * Tests three node content types and fields.
   *
   * The node bundles used are:
   *   - page
   *   - article
   *   - test
   *
   * We add one content type, test, and add fields to each:
   *   - long_text: A long text field with summary. (@todo)
   *   - number: An integer field.
   *   - short_text: An inline text field. (@todo)
   *   - options: A list field. (@todo)
   */
  function testNodeEntities() {
    // Add the third content type 'test'.
    $this->drupalGet('admin/structure/types/add');
    $edit = array('name' => 'Test', 'type' => 'test');
    $this->drupalPost(NULL, $edit, t('Save and add fields'));

    // Configure the settings for each type.
    // Set the article type to always display.
    $edit = array('readmorecontrol_behaviour__node_' => 'always');
    $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
    $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Basic page')));

    // Set the article type to never display.
    $edit = array('readmorecontrol_behaviour__node_' => 'never');
    $this->drupalPost('admin/structure/types/manage/article', $edit, t('Save content type'));
    $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Article')));

    // Set the test type to conditionally display.
    $edit = array('readmorecontrol_behaviour__node_' => 'when_required');
    $this->drupalPost('admin/structure/types/manage/test', $edit, t('Save content type'));
    $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Test')));


    // Creates the number field 'field_number' with display set to
    // 'number_unformatted'.
    $this->addNumberIntegerField('node', 'page');
    $this->addNumberIntegerField('node', 'article');
    $this->addNumberIntegerField('node', 'test');

    // Normalise the defaults formatter settings to be equal.
    // Update all teaser displays to have the same settings as the full display.
    $edit = array(
      'fields[body][type]' => 'text_default',
      'fields[field_number][type]' => 'number_integer',
    );
    $this->drupalPost('admin/structure/types/manage/page/display', $edit, t('Save'));
    $this->drupalPost('admin/structure/types/manage/test/display', $edit, t('Save'));
    $this->drupalPost('admin/structure/types/manage/page/display/teaser', $edit, t('Save'));
    $this->drupalPost('admin/structure/types/manage/test/display/teaser', $edit, t('Save'));

    // Article has tags and image too.
    $edit = array(
      'fields[body][type]' => 'text_default',
      'fields[field_number][type]' => 'number_integer',
      'fields[field_tags][type]' => 'taxonomy_term_reference_link',
      'fields[field_image][type]' => 'hidden',
    );
    $this->drupalPost('admin/structure/types/manage/article/display', $edit, t('Save'));
    $this->drupalPost('admin/structure/types/manage/article/display/teaser', $edit, t('Save'));

    // Test empty fields. If all fields are empty, no read more should appear.
    $langcode = LANGUAGE_NONE;
    $edit = array();
    $edit['status'] = 1;
    $edit['promote'] = 1;

    $node_page = $this->createNode('page', $edit);
    $page_more_link = t('Read more<span class="element-invisible"> about @title</span>', array('@title' => strip_tags($node_page->title)));
    $node_article = $this->createNode('article', $edit);
    $article_more_link = t('Read more<span class="element-invisible"> about @title</span>', array('@title' => strip_tags($node_article->title)));
    $node_test = $this->createNode('test', $edit);
    $test_more_link = t('Read more<span class="element-invisible"> about @title</span>', array('@title' => strip_tags($node_test->title)));

    // Page always displays, article never does and test is conditional.
    $this->drupalGet('node');
    $this->assertText($node_page->title);
    $this->assertText($node_article->title);
    $this->assertText($node_test->title);

    $this->assertRaw($page_more_link);
    $this->assertNoRaw($article_more_link);
    // The empty fields should never trigger a read more link.
    $this->assertNoRaw($test_more_link);

    // Create a large text chunk.
    $text = $this->randomName(10000);
    $node_page->body[$langcode][0]['value'] = $text;
    node_save($node_page);
    $node_article->body[$langcode][0]['value'] = $text;
    node_save($node_article);
    $node_test->body[$langcode][0]['value'] = $text;
    node_save($node_test);

    $this->drupalGet('node');
    $this->assertText($node_page->title);
    $this->assertText($node_article->title);
    $this->assertText($node_test->title);

    $this->assertRaw($page_more_link);
    $this->assertNoRaw($article_more_link);
    // The body field shouldn't trigger a read more link as the displays are
    // now the same.
    $this->assertNoRaw($test_more_link);


    // Update all teaser displays to show reduced size, 600 by default.
    $edit = array('fields[body][type]' => 'text_summary_or_trimmed');
    $this->drupalPost('admin/structure/types/manage/page/display/teaser', $edit, t('Save'));
    $this->drupalPost('admin/structure/types/manage/test/display/teaser', $edit, t('Save'));
    $this->drupalPost('admin/structure/types/manage/article/display/teaser', $edit, t('Save'));

    // The body field should trigger a read more link.
    $this->drupalGet('node');
    $this->assertText($node_page->title);
    $this->assertText($node_article->title);
    $this->assertText($node_test->title);
    $this->assertRaw($page_more_link);
    $this->assertNoRaw($article_more_link);
    $this->assertRaw($test_more_link);

    // Short text should not trigger it.
    $text = $this->randomName(10);
    $node_page->body[$langcode][0]['value'] = $text;
    node_save($node_page);
    $node_article->body[$langcode][0]['value'] = $text;
    node_save($node_article);
    $node_test->body[$langcode][0]['value'] = $text;
    node_save($node_test);

    $this->drupalGet('node');
    $this->assertRaw($page_more_link);
    $this->assertNoRaw($article_more_link);
    $this->assertNoRaw($test_more_link);

    // Set an integer value.
    $node_page->field_number[$langcode][0]['value'] = 123;
    $node_page->body[$langcode][0]['value'] = '';
    node_save($node_page);
    $node_article->body[$langcode][0]['value'] = '';
    $node_article->field_number[$langcode][0]['value'] = 123;
    node_save($node_article);
    $node_test->body[$langcode][0]['value'] = '';
    $node_test->field_number[$langcode][0]['value'] = 123;
    node_save($node_test);

    $this->drupalGet('node');
    $this->assertRaw($page_more_link);
    $this->assertNoRaw($article_more_link);
    $this->assertNoRaw($test_more_link);

    // Update all teaser displays to have the same settings as the full display.
    $edit = array(
      'fields[field_number][type]' => 'hidden',
    );
    $this->drupalPost('admin/structure/types/manage/page/display/teaser', $edit, t('Save'));
    $this->drupalPost('admin/structure/types/manage/test/display/teaser', $edit, t('Save'));
    $this->drupalPost('admin/structure/types/manage/article/display/teaser', $edit, t('Save'));

    $this->drupalGet('node');
    $this->assertRaw($page_more_link);
    $this->assertNoRaw($article_more_link);
    $this->assertRaw($test_more_link);

    // A different display will trigger a read-more link.
    $edit = array(
      'fields[field_number][type]' => 'number_unformatted',
    );
    $this->drupalPost('admin/structure/types/manage/page/display/teaser', $edit, t('Save'));
    $this->drupalPost('admin/structure/types/manage/test/display/teaser', $edit, t('Save'));
    $this->drupalPost('admin/structure/types/manage/article/display/teaser', $edit, t('Save'));

    $this->drupalGet('node');
    $this->assertRaw($page_more_link);
    $this->assertNoRaw($article_more_link);
    $this->assertRaw($test_more_link);

    // The same display will not trigger a read-more link.
    $edit = array(
      'fields[field_number][type]' => 'number_integer',
    );
    $this->drupalPost('admin/structure/types/manage/article/display/teaser', $edit, t('Save'));
    $this->drupalGet('node');
     // Conditional.
    $this->assertRaw($test_more_link);
  }

  /**
   * Adds a number_integer field and sets the default formatter options.
   */
  function addNumberIntegerField($entity_type, $entity_bundle, $field_name = 'field_number', $display = 'number_unformatted') {

    // Create a field with settings to validate.
    $field = field_info_field($field_name);
    if (empty($field)) {
      $field = array(
        'field_name' => $field_name,
        'type' => 'number_integer',
        'settings' => array(),
      );
      field_create_field($field);
    }
    $instance = field_info_instance($entity_type, $field_name, $entity_bundle);
    if (!$instance) {
      $instance = array(
        'field_name' => $field_name,
        'entity_type' => $entity_type,
        'bundle' => $entity_bundle,
        'widget' => array(
          'type' => 'number',
        ),
        'display' => array(
          'default' => array(
            'type' => $display,
          ),
        ),
      );
      field_create_instance($instance);
    }
    else {
      // Updates the formatter if required.
      $this->setNodeFieldDisplay($entity_type, $field_name, $display);
    }
  }

  /**
   * Helper method to set a node field display.
   */
  function setNodeFieldDisplay($entity_type, $field_name, $display) {
    $this->drupalGet("admin/structure/types/manage/$entity_type/display");
    $edit = array(
      "fields[{$field_name}][type]" => $display,
    );
    $this->drupalPost(NULL, $edit, t('Save'));
  }

  /**
   * Helper method to create a new node.
   */
  function createNode($bundle, $edit = array()) {
    $edit['title'] = $this->randomName(8);
    $this->drupalPost("node/add/$bundle", $edit, t('Save'));

    // Check that the node exists in the database.
    return $this->drupalGetNodeByTitle($edit['title']);
  }

  /**
   * Helper method to load a node from a title.
   */
  function drupalGetNodeByTitle($title, $reset = FALSE) {
    // Load the first node returned from the database.
    $nodes = node_load_multiple(array(), array('title' => $title), $reset);
    $node = reset($nodes);
    return $node;
  }
}

Youez - 2016 - github.com/yon3zu
LinuXploit