73 lines
2.4 KiB
PHP
73 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace Drupal\Tests\tdd_dublin\Functional;
|
|
|
|
use Drupal\Tests\BrowserTestBase;
|
|
|
|
class PageListTest extends BrowserTestBase {
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected static $modules = ['tdd_dublin'];
|
|
|
|
/**
|
|
* Test that the pages listing page exists and is accessible.
|
|
*/
|
|
public function testListingPageExists() {
|
|
// Go to /pages and check that it is accessible by checking the status
|
|
// code.
|
|
$this->drupalGet('pages');
|
|
$this->assertSession()->statusCodeEquals(200);
|
|
}
|
|
|
|
/**
|
|
* Ensure that only the correct nodes are returned.
|
|
*
|
|
* Ensure that only published pages are returned by the view. Unpublished
|
|
* pages or content of different types should not be shown.
|
|
*/
|
|
public function testOnlyPublishedPagesAreShown() {
|
|
$this->drupalCreateContentType(['type' => 'article']);
|
|
|
|
// This is a published page, so it should be visible.
|
|
$this->drupalCreateNode(['type' => 'page', 'status' => TRUE]);
|
|
|
|
// This is an article, so it should not be visible.
|
|
$this->drupalCreateNode(['type' => 'article']);
|
|
|
|
// This page is not published, so it should not be visible.
|
|
$this->drupalCreateNode(['type' => 'page', 'status' => FALSE]);
|
|
|
|
// Rather than testing the rendered HTML, we are going to load the view
|
|
// results programmatically and run assertions against the data it returns.
|
|
// This makes it easier to test certain scenarios, and ensures that the
|
|
// test is future-proofed and won't fail at a later date due to a change in
|
|
// the presentation code.
|
|
$result = views_get_view_result('pages');
|
|
|
|
// $result contains an array of Drupal\views\ResultRow objects. We can use
|
|
// array_column to get the nid from each node and return them as an array.
|
|
$nids = array_column($result, 'nid');
|
|
|
|
// Only node 1 matches the criteria of being a published page, so only that
|
|
// node ID should be being returned from the view. assertEquals() can be
|
|
// used to compare the expected result to what is being returned.
|
|
$this->assertEquals([1], $nids);
|
|
}
|
|
|
|
/**
|
|
* Ensure that the results are ordered by title.
|
|
*/
|
|
public function testResultsAreOrderedAlphabetically() {
|
|
$this->drupalCreateNode(['title' => 'Page A']);
|
|
$this->drupalCreateNode(['title' => 'Page D']);
|
|
$this->drupalCreateNode(['title' => 'Page C']);
|
|
$this->drupalCreateNode(['title' => 'Page B']);
|
|
|
|
$nids = array_column(views_get_view_result('pages'), 'nid');
|
|
|
|
$this->assertEquals([1, 4, 3, 2], $nids);
|
|
}
|
|
|
|
}
|