Issue #2865401 by Berdir, yassin.barrani, ankithashetty, dxvargas, Hardik_Patel_12, ayushmishra206: Views pager is using exposed_raw_input instead of exposed_input

(cherry picked from commit a487817dbe)
merge-requests/3575/head
Alex Pott 2023-02-24 00:58:58 +00:00
parent dce8ca6584
commit 9041793c01
No known key found for this signature in database
GPG Key ID: BDA67E7EE836E5CE
3 changed files with 53 additions and 2 deletions

View File

@ -198,4 +198,55 @@ class FilterDateTest extends ViewTestBase {
$this->assertEquals($expected_ids, $actual_ids);
}
/**
* Tests exposed date filters with a pager.
*/
public function testExposedFilterWithPager() {
// Expose the empty and not empty operators in a grouped filter.
$this->drupalGet('admin/structure/views/nojs/handler/test_filter_datetime/default/filter/' . $this->fieldName . '_value');
$this->submitForm([], t('Expose filter'));
$edit = [];
$edit['options[operator]'] = '>';
$this->submitForm($edit, 'Apply');
// Expose the view and set the pager to 2 items.
$path = 'test_filter_datetime-path';
$this->drupalGet('admin/structure/views/view/test_filter_datetime/edit');
$this->submitForm([], 'Add Page');
$this->drupalGet('admin/structure/views/nojs/display/test_filter_datetime/page_1/path');
$this->submitForm(['path' => $path], 'Apply');
$this->drupalGet('admin/structure/views/nojs/display/test_filter_datetime/default/pager_options');
$this->submitForm(['pager_options[items_per_page]' => 2], 'Apply');
$this->submitForm([], t('Save'));
// Assert the page without filters.
$this->drupalGet($path);
$results = $this->cssSelect('.views-row');
$this->assertCount(2, $results);
$this->assertSession()->pageTextContains('Next');
// Assert the page with filter in the future, one results without pager.
$page = $this->getSession()->getPage();
$now = \Drupal::time()->getRequestTime();
$page->fillField($this->fieldName . '_value', DrupalDateTime::createFromTimestamp($now + 1)->format('Y-m-d H:i:s'));
$page->pressButton('Apply');
$results = $this->cssSelect('.views-row');
$this->assertCount(1, $results);
$this->assertSession()->pageTextNotContains('Next');
// Assert the page with filter in the past, 3 results with pager.
$page->fillField($this->fieldName . '_value', DrupalDateTime::createFromTimestamp($now - 1000000)->format('Y-m-d H:i:s'));
$this->getSession()->getPage()->pressButton('Apply');
$results = $this->cssSelect('.views-row');
$this->assertCount(2, $results);
$this->assertSession()->pageTextContains('Next');
$page->clickLink('2');
$results = $this->cssSelect('.views-row');
$this->assertCount(1, $results);
}
}

View File

@ -2241,7 +2241,7 @@ abstract class DisplayPluginBase extends PluginBase implements DisplayPluginInte
$element['#feed_icons'] = !empty($view->feedIcons) ? $view->feedIcons : [];
if ($view->display_handler->renderPager()) {
$exposed_input = $view->exposed_raw_input ?? NULL;
$exposed_input = $view->getExposedInput();
$element['#pager'] = $view->renderPager($exposed_input);
}

View File

@ -99,7 +99,7 @@ class PaginationAJAXTest extends WebDriverTestBase {
$this->assertStringContainsString('Node 6 content', $rows[0]->getHtml());
$link = $page->findLink('Go to page 3');
// Test that no unwanted parameters are added to the URL.
$this->assertEquals('?status=All&type=All&langcode=All&items_per_page=5&order=changed&sort=asc&title=&page=2', $link->getAttribute('href'));
$this->assertEquals('?status=All&type=All&langcode=All&items_per_page=5&order=changed&sort=asc&page=2', $link->getAttribute('href'));
$this->assertNoDuplicateAssetsOnPage();
$this->clickLink('Go to page 3');