You are here

public function StateFilterTest::testFilter in State Machine 8

Tests the filter.

File

tests/src/Functional/StateFilterTest.php, line 44

Class

StateFilterTest
Tests the Views state filter.

Namespace

Drupal\Tests\state_machine\Functional

Code

public function testFilter() {
  $first_entity = EntityTestWithBundle::create([
    'type' => 'first',
    'name' => 'First',
  ]);
  $first_entity
    ->save();
  $second_entity = EntityTestWithBundle::create([
    'type' => 'second',
    'name' => 'Second',
    'field_state' => 'validation',
  ]);
  $second_entity
    ->save();
  $this
    ->drupalGet('/state-machine-test');
  $this
    ->assertSession()
    ->pageTextContains('First');
  $this
    ->assertSession()
    ->pageTextContains('New');
  $this
    ->assertSession()
    ->pageTextContains('Second');
  $this
    ->assertSession()
    ->pageTextContains('Validation');

  // Confirm that the states from both workflows are in the dropdown.
  $expected_options = [
    'All' => '- Any -',
    'new' => 'New',
    'validation' => 'Validation',
    'fulfillment' => 'Fulfillment',
    'completed' => 'Completed',
    'canceled' => 'Canceled',
  ];
  $elements = $this
    ->xpath('//select[@name="field_state_value"]/option');
  $found_options = [];
  foreach ($elements as $element) {
    $found_options[$element
      ->getValue()] = $element
      ->getText();
  }
  $this
    ->assertEquals($expected_options, $found_options);
}