You are here

class PagerPluginBaseTest in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/views/tests/src/Unit/Plugin/pager/PagerPluginBaseTest.php \Drupal\Tests\views\Unit\Plugin\pager\PagerPluginBaseTest

@coversDefaultClass \Drupal\views\Plugin\views\pager\PagerPluginBase @group views

Hierarchy

Expanded class hierarchy of PagerPluginBaseTest

File

core/modules/views/tests/src/Unit/Plugin/pager/PagerPluginBaseTest.php, line 17
Contains \Drupal\Tests\views\Unit\Plugin\pager\PagerPluginBaseTest.

Namespace

Drupal\Tests\views\Unit\Plugin\pager
View source
class PagerPluginBaseTest extends UnitTestCase {

  /**
   * The mock pager plugin instance.
   *
   * @var \Drupal\views\Plugin\views\pager\PagerPluginBase|\PHPUnit_Framework_MockObject_MockObject
   */
  protected $pager;
  protected function setUp() {
    $this->pager = $this
      ->getMockBuilder('Drupal\\views\\Plugin\\views\\pager\\PagerPluginBase')
      ->disableOriginalConstructor()
      ->getMockForAbstractClass();
    $view = $this
      ->getMockBuilder('Drupal\\views\\ViewExecutable')
      ->disableOriginalConstructor()
      ->getMock();
    $display = $this
      ->getMockBuilder('Drupal\\views\\Plugin\\views\\display\\DisplayPluginBase')
      ->disableOriginalConstructor()
      ->getMock();
    $options = array(
      'items_per_page' => 5,
      'offset' => 1,
    );
    $this->pager
      ->init($view, $display, $options);
    $this->pager->current_page = 1;
  }

  /**
   * Tests the getItemsPerPage() method.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::getItemsPerPage()
   */
  public function testGetItemsPerPage() {
    $this
      ->assertEquals(5, $this->pager
      ->getItemsPerPage());
  }

  /**
   * Tests the setItemsPerPage() method.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::setItemsPerPage()
   */
  public function testSetItemsPerPage() {
    $this->pager
      ->setItemsPerPage(6);
    $this
      ->assertEquals(6, $this->pager
      ->getItemsPerPage());
  }

  /**
   * Tests the getOffset() method.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::getOffset()
   */
  public function testGetOffset() {
    $this
      ->assertEquals(1, $this->pager
      ->getOffset());
  }

  /**
   * Tests the setOffset() method.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::setOffset()
   */
  public function testSetOffset() {
    $this->pager
      ->setOffset(2);
    $this
      ->assertEquals(2, $this->pager
      ->getOffset());
  }

  /**
   * Tests the getCurrentPage() method.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::getCurrentPage()
   */
  public function testGetCurrentPage() {
    $this
      ->assertEquals(1, $this->pager
      ->getCurrentPage());
  }

  /**
   * Tests the setCurrentPage() method.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::setCurrentPage()
   */
  public function testSetCurrentPage() {
    $this->pager
      ->setCurrentPage(2);
    $this
      ->assertEquals(2, $this->pager
      ->getCurrentPage());

    // A non numeric number or number below 0 should return 0.
    $this->pager
      ->setCurrentPage('two');
    $this
      ->assertEquals(0, $this->pager
      ->getCurrentPage());
    $this->pager
      ->setCurrentPage(-2);
    $this
      ->assertEquals(0, $this->pager
      ->getCurrentPage());
  }

  /**
   * Tests the getTotalItems() method.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::getTotalItems()
   */
  public function testGetTotalItems() {

    // Should return 0 by default.
    $this
      ->assertEquals(0, $this->pager
      ->getTotalItems());
    $this->pager->total_items = 10;
    $this
      ->assertEquals(10, $this->pager
      ->getTotalItems());
  }

  /**
   * Tests the getPagerId() method.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::getPagerId()
   */
  public function testGetPagerId() {

    // Should return 0 if 'id' is not set.
    $this
      ->assertEquals(0, $this->pager
      ->getPagerId());
    $this->pager->options['id'] = 1;
    $this
      ->assertEquals(1, $this->pager
      ->getPagerId());
  }

  /**
   * Tests the usePager() method.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::usePager()
   */
  public function testUsePager() {
    $this
      ->assertTrue($this->pager
      ->usePager());
  }

  /**
   * Tests the useCountQuery() method.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::useCountQuery()
   */
  public function testUseCountQuery() {
    $this
      ->assertTrue($this->pager
      ->useCountQuery());
  }

  /**
   * Tests the usesExposed() method.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::usedExposed()
   */
  public function testUsesExposed() {
    $this
      ->assertFalse($this->pager
      ->usesExposed());
  }

  /**
   * Tests the hasMoreRecords() method.
   *
   * @dataProvider providerTestHasMoreRecords
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::hasMoreRecords()
   */
  public function testHasMoreRecords($items_per_page, $total_items, $current_page, $has_more_records) {
    $this->pager
      ->setItemsPerPage($items_per_page);
    $this->pager->total_items = $total_items;
    $this->pager
      ->setCurrentPage($current_page);
    $this
      ->assertEquals($has_more_records, $this->pager
      ->hasMoreRecords());
  }

  /**
   * Provides test data for the hasMoreRecord method test.
   *
   * @see self::testHasMoreRecords
   */
  public function providerTestHasMoreRecords() {
    return array(
      // No items per page, so there can't be more available records.
      array(
        0,
        0,
        0,
        FALSE,
      ),
      array(
        0,
        10,
        0,
        FALSE,
      ),
      // The amount of total items equals the items per page, so there is no
      // next page available.
      array(
        5,
        5,
        0,
        FALSE,
      ),
      // There is one more item, and we are at the first page.
      array(
        5,
        6,
        0,
        TRUE,
      ),
      // Now we are on the second page, which has just a single one left.
      array(
        5,
        6,
        1,
        FALSE,
      ),
      // Increase the total items, so we have some available on the third page.
      array(
        5,
        12,
        1,
        TRUE,
      ),
    );
  }

  /**
   * Tests the executeCountQuery method without a set offset.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::executeCountQuery()
   */
  public function testExecuteCountQueryWithoutOffset() {
    $statement = $this
      ->getMock('\\Drupal\\Tests\\views\\Unit\\Plugin\\pager\\TestStatementInterface');
    $statement
      ->expects($this
      ->once())
      ->method('fetchField')
      ->will($this
      ->returnValue(3));
    $query = $this
      ->getMockBuilder('\\Drupal\\Core\\Database\\Query\\Select')
      ->disableOriginalConstructor()
      ->getMock();
    $query
      ->expects($this
      ->once())
      ->method('execute')
      ->will($this
      ->returnValue($statement));
    $this->pager
      ->setOffset(0);
    $this
      ->assertEquals(3, $this->pager
      ->executeCountQuery($query));
  }

  /**
   * Tests the executeCountQuery method with a set offset.
   *
   * @see \Drupal\views\Plugin\views\pager\PagerPluginBase::executeCountQuery()
   */
  public function testExecuteCountQueryWithOffset() {
    $statement = $this
      ->getMock('\\Drupal\\Tests\\views\\Unit\\Plugin\\pager\\TestStatementInterface');
    $statement
      ->expects($this
      ->once())
      ->method('fetchField')
      ->will($this
      ->returnValue(3));
    $query = $this
      ->getMockBuilder('\\Drupal\\Core\\Database\\Query\\Select')
      ->disableOriginalConstructor()
      ->getMock();
    $query
      ->expects($this
      ->once())
      ->method('execute')
      ->will($this
      ->returnValue($statement));
    $this->pager
      ->setOffset(2);
    $this
      ->assertEquals(1, $this->pager
      ->executeCountQuery($query));
  }

}

Members

Namesort descending Modifiers Type Description Overrides
PagerPluginBaseTest::$pager protected property The mock pager plugin instance.
PagerPluginBaseTest::providerTestHasMoreRecords public function Provides test data for the hasMoreRecord method test.
PagerPluginBaseTest::setUp protected function Overrides UnitTestCase::setUp
PagerPluginBaseTest::testExecuteCountQueryWithOffset public function Tests the executeCountQuery method with a set offset.
PagerPluginBaseTest::testExecuteCountQueryWithoutOffset public function Tests the executeCountQuery method without a set offset.
PagerPluginBaseTest::testGetCurrentPage public function Tests the getCurrentPage() method.
PagerPluginBaseTest::testGetItemsPerPage public function Tests the getItemsPerPage() method.
PagerPluginBaseTest::testGetOffset public function Tests the getOffset() method.
PagerPluginBaseTest::testGetPagerId public function Tests the getPagerId() method.
PagerPluginBaseTest::testGetTotalItems public function Tests the getTotalItems() method.
PagerPluginBaseTest::testHasMoreRecords public function Tests the hasMoreRecords() method.
PagerPluginBaseTest::testSetCurrentPage public function Tests the setCurrentPage() method.
PagerPluginBaseTest::testSetItemsPerPage public function Tests the setItemsPerPage() method.
PagerPluginBaseTest::testSetOffset public function Tests the setOffset() method.
PagerPluginBaseTest::testUseCountQuery public function Tests the useCountQuery() method.
PagerPluginBaseTest::testUsePager public function Tests the usePager() method.
PagerPluginBaseTest::testUsesExposed public function Tests the usesExposed() method.
UnitTestCase::$randomGenerator protected property The random generator.
UnitTestCase::$root protected property The app root.
UnitTestCase::assertArrayEquals protected function Asserts if two arrays are equal by sorting them first.
UnitTestCase::getBlockMockWithMachineName protected function Mocks a block with a block plugin.
UnitTestCase::getClassResolverStub protected function Returns a stub class resolver.
UnitTestCase::getConfigFactoryStub public function Returns a stub config factory that behaves according to the passed in array.
UnitTestCase::getConfigStorageStub public function Returns a stub config storage that returns the supplied configuration.
UnitTestCase::getContainerWithCacheTagsInvalidator protected function Sets up a container with a cache tags invalidator.
UnitTestCase::getRandomGenerator protected function Gets the random generator for the utility methods.
UnitTestCase::getStringTranslationStub public function Returns a stub translation manager that just returns the passed string.
UnitTestCase::randomMachineName public function Generates a unique random string containing letters and numbers.