You are here

function SharerichTests::testBlock in Sharerich 8

Test sharerich block.

File

tests/src/Functional/SharerichTests.php, line 129

Class

SharerichTests
Sharerich tests.

Namespace

Drupal\Tests\sharerich\Functional

Code

function testBlock() {
  $this
    ->drupalLogin($this->adminUser);

  // Create content type.
  $node_type = NodeType::create([
    'type' => 'page',
    'name' => 'Basic page',
  ]);
  $node_type
    ->save();

  // Create page.
  $page = Node::create([
    'type' => 'page',
    'title' => 'Sharerich page',
  ]);
  $page
    ->save();

  // Visit node.
  $url = \Drupal\Core\Url::fromRoute('entity.node.canonical', [
    'node' => $page
      ->id(),
  ]);
  $this
    ->drupalGet($url
    ->toString());
  $text = $this
    ->xpath('//div[@id="block-sharerich-block"]//h2');
  $this
    ->assertEqual($text[0]
    ->getText(), $this
    ->t('Share this'), t("The title of sharerich block is correct"));
  $elements = $this
    ->xpath('//ul[contains(@class, :class)]/li', [
    ':class' => 'sharerich-buttons',
  ]);
  $this
    ->assertTrue(!empty($elements), 'Found a sticky sharerich block');
  foreach ($this->services as $item) {
    $text = $this
      ->xpath('//div[@id="block-sharerich-block"]//ul/li[@class="rrssb-' . $item . '"]//span[@class="rrssb-text"]');
    $this
      ->assertEqual($text[0]
      ->getText(), $item, $this
      ->t('The text of :item button is correct', [
      ':item' => $item,
    ]));
  }

  // Test that tokens were rendered correctly.
  $this
    ->assertElementByXPath('//div[@id="block-sharerich-block"]//ul/li[contains(@class, :li_class)]/a[contains(@href, :href)]', [
    ':li_class' => 'rrssb-email',
    ':href' => 'mailto:?subject=Sharerich%20page&body=http',
  ], "Email Tokens rendered correctly.");
  $this
    ->assertElementByXPath('//div[@id="block-sharerich-block"]//ul/li[contains(@class, :li_class)]/a[contains(@href, :href)]', [
    ':li_class' => 'rrssb-facebook',
    ':href' => 'https://www.facebook.com/sharer/sharer.php?u=http',
  ], "Facebook Tokens rendered correctly.");
  $this
    ->assertElementByXPath('//div[@id="block-sharerich-block"]//ul/li[contains(@class, :li_class)]/a[contains(@href, :href)]', [
    ':li_class' => 'rrssb-tumblr',
    ':href' => 'http://www.tumblr.com/share?s=&v=3&t=Sharerich%20page&u=http',
  ], "Tumblr Tokens rendered correctly.");
  $this
    ->assertElementByXPath('//div[@id="block-sharerich-block"]//ul/li[contains(@class, :li_class)]/a[contains(@href, :href)]', [
    ':li_class' => 'rrssb-twitter',
    ':href' => 'https://twitter.com/intent/tweet?url=http',
  ], "Twitter Tokens rendered correctly.");

  // Test contextual links.
  $id = 'block:block=sharerich_block:langcode=en|sharerich:sharerich=default:langcode=en';
  $this
    ->assertElementByXPath('//div[@data-contextual-id="' . $id . '"]', [], "Contextual link placeholder is rendered correctly.");

  // Temporarily commenting out this test, it is not passing on Drupal CI
  // Get server-rendered contextual links.
  // @see \Drupal\contextual\Tests\ContextualDynamicContextTest:renderContextualLinks()
  // $response = $this->drupalPost('contextual/render', 'application/json', ['ids[0]' => $id], ['query' => ['destination' => 'test-page']]);
  // $this->assertResponse(200);
  // $json = Json::decode($response);

  //$this->assertIdentical($json[$id], '<ul class="contextual-links"><li class="block-configure"><a href="/admin/structure/block/manage/sharerich_block">Configure block</a></li><li class="entitysharerich-edit-form"><a href="/admin/structure/sharerich/default">Edit Sharerich set</a></li></ul>', $this->t('Contextual links are correct.'));
}