Commit d35eacbd authored by xjm's avatar xjm

Issue #2846782 by tacituseu, swentel, tim.plunkett, Gábor Hojtsy, borisson_:...

Issue #2846782 by tacituseu, swentel, tim.plunkett, Gábor Hojtsy, borisson_: Bulk operation actions might not act on the selected items
parent a03dfbf5
......@@ -345,7 +345,8 @@ protected function getBulkOptions($filtered = TRUE) {
public function viewsFormSubmit(&$form, FormStateInterface $form_state) {
if ($form_state->get('step') == 'views_form_views_form') {
// Filter only selected checkboxes.
$selected = array_filter($form_state->getValue($this->options['id']));
$user_input = $form_state->getUserInput();
$selected = array_filter($user_input[$this->options['id']]);
$entities = array();
$action = $this->actions[$form_state->getValue('action')];
$count = 0;
......
<?php
namespace Drupal\views\Tests\Plugin;
use Drupal\simpletest\WebTestBase;
/**
* Tests views bulk operation selection.
*
* @group views
*/
class ViewsBulkTest extends WebTestBase {
/**
* An admin user
*
* @var \Drupal\user\UserInterface
*/
protected $admin_user;
/**
* Modules to enable.
*
* @var array
*/
public static $modules = array('node', 'views');
public function setUp() {
parent::setUp();
$this->drupalCreateContentType(['type' => 'page']);
$this->admin_user = $this->createUser(['bypass node access', 'administer nodes', 'access content overview']);
}
/**
* Tests bulk selection.
*/
public function testBulkSelection() {
// Create first node, set updated time to the past.
$node_1 = $this->drupalCreateNode([
'type' => 'page',
'title' => 'The first node',
'changed' => \Drupal::time()->getRequestTime() - 180
]);
// Login as administrator and go to admin/content.
$this->drupalLogin($this->admin_user);
$this->drupalGet('admin/content');
$this->assertText($node_1->getTitle());
// Create second node now that the admin overview has been rendered.
$node_2 = $this->drupalCreateNode([
'type' => 'page',
'title' => 'The second node',
'changed' => \Drupal::time()->getRequestTime() - 120
]);
// Now click 'Apply to selected items' and assert the first node is selected
// on the confirm form.
$this->drupalPostForm(NULL, ['node_bulk_form[0]' => TRUE], 'Apply to selected items');
$this->assertText($node_1->getTitle());
$this->assertNoText($node_2->getTitle());
// Change the pager limit to 2.
$this->config('views.view.content')->set('display.default.display_options.pager.options.items_per_page', 2)->save();
$this->drupalGet('admin/content');
// Render the overview page again.
$this->drupalGet('admin/content');
// Create third node now that the admin overview has been rendered.
$node_3 = $this->drupalCreateNode([
'type' => 'page',
'title' => 'The third node']
);
// Now click 'Apply to selected items' and assert the second node is
// selected on the confirm form.
$this->drupalPostForm(NULL, ['node_bulk_form[1]' => TRUE], 'Apply to selected items');
$this->assertText($node_1->getTitle());
$this->assertNoText($node_3->getTitle());
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment