Commit f7c10393 authored by catch's avatar catch
Browse files

Issue #3265798 by mohit_aghera, seyfettinkahveci, paulmckibben, smustgrave,...

Issue #3265798 by mohit_aghera, seyfettinkahveci, paulmckibben, smustgrave, Lendude, larowlan: [view:total-rows] problem in Display a 'Specified number of items' pager
parent 4d500c50
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -69,4 +69,11 @@ public function query() {
    $this->view->query->setOffset($this->options['offset']);
  }

  /**
   * {@inheritdoc}
   */
  public function postExecute(&$result): void {
    $this->total_items = count($result);
  }

}
+32 −0
Original line number Diff line number Diff line
@@ -107,3 +107,35 @@ display:
            value: "Total rows: [view:total-rows] - Page count: [view:page-count]"
            format: basic_html
          plugin_id: text
  page_4:
    display_plugin: page
    id: page_4
    display_title: Specific items page
    position: 5
    display_options:
      defaults:
        title: false
        pager: false
        header: false
      pager:
        type: some
        options:
          offset: 0
          items_per_page: 3
      title: 'Test token page with "Display a specified number of items" pager plugin.'
      path: test_tokens_display_specific_items
      display_extenders: { }
      header:
        area:
          id: area
          table: views
          field: area
          relationship: none
          group_type: group
          admin_label: ''
          empty: false
          tokenize: false
          content:
            value: "Total rows: [view:total-rows]"
            format: basic_html
          plugin_id: text
+35 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@

use Drupal\Component\Render\FormattableMarkup;
use Drupal\Core\Render\BubbleableMetadata;
use Drupal\views\Tests\ViewTestData;
use Drupal\views\Views;

/**
@@ -106,6 +107,40 @@ public function testTokenReplacementWithMiniPager() {
    }
  }

  /**
   * Tests token replacement of [view:total-rows] when pager is disabled.
   *
   * It calls "Some" views pager plugin.
   */
  public function testTokenReplacementWithSpecificNumberOfItems(): void {
    $token_handler = \Drupal::token();
    $view = Views::getView('test_tokens');
    $view->setDisplay('page_4');
    $this->executeView($view);

    $total_rows_in_table = ViewTestData::dataSet();
    $this->assertTrue($view->get_total_rows, 'The query was set to calculate the total number of rows.');
    $this->assertGreaterThan(3, count($total_rows_in_table));

    $expected = [
      '[view:label]' => 'Test tokens',
      '[view:id]' => 'test_tokens',
      '[view:url]' => $view->getUrl(NULL, 'page_4')
        ->setAbsolute(TRUE)
        ->toString(),
      '[view:total-rows]' => '3',
    ];

    $base_bubbleable_metadata = BubbleableMetadata::createFromObject($view->storage);

    foreach ($expected as $token => $expected_output) {
      $bubbleable_metadata = new BubbleableMetadata();
      $output = $token_handler->replace($token, ['view' => $view], [], $bubbleable_metadata);
      $this->assertSame($expected_output, $output, sprintf('Token %s replaced correctly.', $token));
      $this->assertEquals($base_bubbleable_metadata, $bubbleable_metadata);
    }
  }

  /**
   * Tests core token replacements generated from a view without results.
   */