1 link.attribute.test LinkAttributeCrudTest::testFormatters()

Test the link_plain formatter and it's output.

File

core/modules/link/tests/link.attribute.test, line 48
Basic simpletests to test options on link module.

Class

LinkAttributeCrudTest

Code

function testFormatters() {
  $this->field_name = $this->createLinkField();

  // Test the plain formatter.
  $this->backdropGet('admin/structure/types/manage/page/display/default');
  $edit = array(
    'fields[' . $this->field_name . '][label]' => 'above',
    'fields[' . $this->field_name . '][type]' => 'link_plain',
  );
  $this->backdropPost(NULL, $edit, t('Save'));

  $link_tests = array(
    'plain' => array(
      'text' => 'Display',
      'url' => 'http://www.example.com/',
    ),
    'query' => array(
      'text' => 'Display',
      'url' => 'http://www.example.com/?q=test',
    ),
    'fragment' => array(
      'text' => 'Display',
      'url' => 'http://www.example.com/#test',
    ),
  );

  foreach ($link_tests as $key => $link_test) {
    $link_text = $link_test['text'];
    $link_url = $link_test['url'];
    $this->createNodeForTesting($link_text, $link_url);

    $this->assertText($link_url);
    $this->assertNoText($link_text);
    $this->assertNoLinkByHref($link_url);
  }

  // Test the URL formatter.
  $this->backdropGet('admin/structure/types/manage/page/display/default');
  $edit = array(
    'fields[' . $this->field_name . '][label]' => 'above',
    'fields[' . $this->field_name . '][type]' => 'link_url',
  );
  $this->backdropPost(NULL, $edit, t('Save'));

  foreach ($link_tests as $key => $link_test) {
    $link_text = $link_test['text'];
    $link_url = $link_test['url'];
    $this->createNodeForTesting($link_text, $link_url);

    $this->assertNoText($link_text);
    $this->assertLinkByHref($link_url);
  }

  // Test the short formatter.
  $this->backdropGet('admin/structure/types/manage/page/display/default');
  $edit = array(
    'fields[' . $this->field_name . '][label]' => 'above',
    'fields[' . $this->field_name . '][type]' => 'link_short',
  );
  $this->backdropPost(NULL, $edit, t('Save'));

  foreach ($link_tests as $key => $link_test) {
    $link_text = $link_test['text'];
    $link_url = $link_test['url'];
    $this->createNodeForTesting($link_text, $link_url);

    $this->assertText('Link');
    $this->assertNoText($link_text);
    $this->assertLinkByHref($link_url);
  }

  // Test the label formatter.
  $this->backdropGet('admin/structure/types/manage/page/display/default');
  $edit = array(
    'fields[' . $this->field_name . '][label]' => 'above',
    'fields[' . $this->field_name . '][type]' => 'link_label',
  );
  $this->backdropPost(NULL, $edit, t('Save'));

  foreach ($link_tests as $key => $link_test) {
    $link_text = $link_test['text'];
    $link_url = $link_test['url'];
    $this->createNodeForTesting($link_text, $link_url);

    $this->assertNoText($link_text);
    $this->assertText(str_replace('field_', '', $this->field_name));
    $this->assertLinkByHref($link_url);
  }

  // Test the separate formatter.
  $this->backdropGet('admin/structure/types/manage/page/display/default');
  $edit = array(
    'fields[' . $this->field_name . '][label]' => 'above',
    'fields[' . $this->field_name . '][type]' => 'link_separate',
  );
  $this->backdropPost(NULL, $edit, t('Save'));

  $plain_url = 'http://www.example.com/';
  $link_tests = array(
    'plain' => array(
      'text' => $this->randomName(20),
      'url' => $plain_url,
    ),
    'query' => array(
      'text' => $this->randomName(20),
      'url' => $plain_url . '?q=test',
    ),
    'fragment' => array(
      'text' => $this->randomName(20),
      'url' => $plain_url . '#test',
    ),
  );

  foreach ($link_tests as $key => $link_test) {
    $link_text = $link_test['text'];
    $link_url = $link_test['url'];
    $this->createNodeForTesting($link_text, $link_url);

    $this->assertText($link_text);
    $this->assertLink($plain_url);
    $this->assertLinkByHref($link_url);
  }

  // Test the plain title formatter.
  $this->backdropGet('admin/structure/types/manage/page/display/default');
  $edit = array(
    'fields[' . $this->field_name . '][label]' => 'above',
    'fields[' . $this->field_name . '][type]' => 'link_title_plain',
  );
  $this->backdropPost(NULL, $edit, t('Save'));

  $link_text = 'Display';
  $link_url = 'http://www.example.com/';
  $this->createNodeForTesting($link_text, $link_url);

  $this->assertText($link_text);
  $this->assertNoText($link_url);
  $this->assertNoLinkByHref($link_url);
}