You are here

public function PrintablePdfTest::testCustomPageExists in Printer and PDF versions for Drupal 8+ 8

Same name and namespace in other branches
  1. 2.x src/Tests/PrintablePdfTest.php \Drupal\printable\Tests\PrintablePdfTest::testCustomPageExists()

Tests that the 'node/{node}/printable/pdf' path returns the right content.

File

src/Tests/PrintablePdfTest.php, line 51

Class

PrintablePdfTest
Tests the printable_pdf module functionality.

Namespace

Drupal\printable\Tests

Code

public function testCustomPageExists() {
  global $base_url;
  $node_type_storage = \Drupal::entityManager()
    ->getStorage('node_type');

  // Test /node/add page with only one content type.
  $node_type_storage
    ->load('article')
    ->delete();
  $this
    ->drupalGet('node/add');
  $this
    ->assertResponse(200);
  $this
    ->assertUrl('node/add/page');

  // Create a node.
  $edit = [];
  $edit['title[0][value]'] = $this
    ->randomMachineName(8);
  $bodytext = $this
    ->randomMachineName(16) . 'This is functional test which I am writing for printable module.';
  $edit['body[0][value]'] = $bodytext;
  $this
    ->drupalPostForm('node/add/page', $edit, t('Save'));

  // Check that the Basic page has been created.
  $this
    ->assertRaw(t('!post %title has been created.', [
    '!post' => 'Basic page',
    '%title' => $edit['title[0][value]'],
  ]), 'Basic page created.');

  // Check that the node exists in the database.
  $node = $this
    ->drupalGetNodeByTitle($edit['title[0][value]']);
  $this
    ->assertTrue($node, 'Node found in database.');

  // Verify that pages do not show submitted information by default.
  $this
    ->drupalGet('node/' . $node
    ->id());
  $this
    ->assertResponse(200);

  // Set the PDF generating tool.
  $this
    ->drupalGet('admin/config/user-interface/printable/pdf');
  $this
    ->drupalPostForm(NULL, [
    'print_pdf_pdf_tool' => 'mPDF',
    'print_pdf_content_disposition' => 1,
    'print_pdf_filename' => 'modules/custom/printable/src/Tests/testPDF',
  ], t('Submit'));
  $this
    ->drupalGet('admin/config/user-interface/printable/pdf');
  $this
    ->assertResponse(200);

  // Test whether PDF page is being generated.
  $this
    ->drupalGet('node/' . $node
    ->id() . '/printable/pdf');
  $parser = new Parser();
  $pdf = $parser
    ->parseFile('modules/custom/printable/src/Tests/testPDF.pdf');
  $text = $pdf
    ->getText();
  $this
    ->drupalGet('node/add');
  $new_edit = [];
  $new_edit['title[0][value]'] = $this
    ->randomMachineName(8);
  $bodytext = $text;
  $new_edit['body[0][value]'] = $bodytext;
  $this
    ->drupalPostForm('node/add/page', $new_edit, t('Save'));
  $new_node = $this
    ->drupalGetNodeByTitle($new_edit['title[0][value]']);
  $this
    ->drupalGet('node/' . $new_node
    ->id());
  $this
    ->assertResponse(200);

  // Checks the presence of body in the page.
  $this
    ->assertRaw($edit['body[0][value]'], 'Body discovered successfully in the printable page');

  // Check if footer is rendering correctly.
  $this
    ->assertRaw($base_url . '/node/' . $node
    ->id(), 'Source Url discovered in the printable page');
}