function CToolsViewsEntityViewBlockTest::testConfigureFiltersDate

Test ctools_views 'configure_filters' configuration with date field values.

File

modules/ctools_views/tests/src/Functional/CToolsViewsEntityViewBlockTest.php, line 481

Class

CToolsViewsEntityViewBlockTest
Tests the ctools_views block display plugin overriding entity View filters.

Namespace

Drupal\Tests\ctools_views\Functional

Code

public function testConfigureFiltersDate() {
    $default_theme = $this->config('system.theme')
        ->get('default');
    // Get the "Configure block" form for our Views block.
    $this->drupalGet('admin/structure/block/add/views_block:ctools_views_entity_test-block_filter_date/' . $default_theme);
    $this->assertSession()
        ->fieldExists('settings[exposed][filter-field_ctools_views_date_value][field_ctools_views_date_value_wrapper][field_ctools_views_date_value][min]');
    $this->assertSession()
        ->fieldExists('settings[exposed][filter-field_ctools_views_date_value][field_ctools_views_date_value_wrapper][field_ctools_views_date_value][max]');
    // Add block to sidebar_first region with default settings.
    $edit = [];
    $edit['region'] = 'sidebar_first';
    $edit['id'] = 'views_block__ctools_views_entity_test_block_filter_date';
    $this->drupalGet('admin/structure/block/add/views_block:ctools_views_entity_test-block_filter_date/' . $default_theme);
    $this->submitForm($edit, 'Save block');
    // Assert configure_filters default settings.
    $this->drupalGet('<front>');
    // Check that the default settings return all results.
    $this->assertEquals(3, count($this->xpath('//div[contains(@class, "view-display-id-block_filter_date")]//table/tbody/tr')));
    // Override configure_filters settings for between date filter.
    $edit = [];
    $edit['region'] = 'sidebar_first';
    $edit['settings[exposed][filter-field_ctools_views_date_value][field_ctools_views_date_value_wrapper][field_ctools_views_date_value][min]'] = '2016-01-01';
    $edit['settings[exposed][filter-field_ctools_views_date_value][field_ctools_views_date_value_wrapper][field_ctools_views_date_value][max]'] = '2016-12-31';
    $this->drupalGet('admin/structure/block/manage/views_block__ctools_views_entity_test_block_filter_date');
    $this->submitForm($edit, 'Save block');
    $block = $this->storage
        ->load('views_block__ctools_views_entity_test_block_filter_date');
    $config = $block->getPlugin()
        ->getConfiguration();
    $this->assertEquals([
        'min' => '2016-01-01',
        'max' => '2016-12-31',
    ], $config['exposed']['filter-field_ctools_views_date_value']['value'], "'configure_filters' setting is properly saved.");
    // Assert overridden between date filter settings.
    $this->drupalGet('<front>');
    // Check that the overridden settings return proper results.
    $this->assertEquals(1, count($this->xpath('//div[contains(@class, "view-display-id-block_filter_date")]//table/tbody/tr')));
    // Reset between date filter.
    $edit = [];
    $edit['region'] = 'sidebar_first';
    $edit['settings[exposed][filter-field_ctools_views_date_value][field_ctools_views_date_value_wrapper][field_ctools_views_date_value][min]'] = '';
    $edit['settings[exposed][filter-field_ctools_views_date_value][field_ctools_views_date_value_wrapper][field_ctools_views_date_value][max]'] = '';
    $this->drupalGet('admin/structure/block/manage/views_block__ctools_views_entity_test_block_filter_date');
    $this->submitForm($edit, 'Save block');
    // Assert configure_filters reset/default settings.
    $this->drupalGet('<front>');
    // Check that the default settings return all results.
    $this->assertEquals(3, count($this->xpath('//div[contains(@class, "view-display-id-block_filter_date")]//table/tbody/tr')));
    // Override configure_filters settings for greater than date filter.
    $edit = [];
    $edit['region'] = 'sidebar_first';
    $edit['settings[exposed][filter-field_ctools_views_date_value_greater][field_ctools_views_date_value_greater]'] = '2016-01-01';
    $this->drupalGet('admin/structure/block/manage/views_block__ctools_views_entity_test_block_filter_date');
    $this->submitForm($edit, 'Save block');
    $block = $this->storage
        ->load('views_block__ctools_views_entity_test_block_filter_date');
    $config = $block->getPlugin()
        ->getConfiguration();
    $this->assertEquals('2016-01-01', $config['exposed']['filter-field_ctools_views_date_value_greater']['value'], "'configure_filters' setting is properly saved.");
    // Assert overridden greater then date filter settings.
    $this->drupalGet('<front>');
    // Check that the overridden settings return proper results.
    $this->assertEquals(2, count($this->xpath('//div[contains(@class, "view-display-id-block_filter_date")]//table/tbody/tr')));
}