You are here

public function FilterFactoryTest::testFilterFromConditionA in Elasticsearch Connector 8.7

Same name and namespace in other branches
  1. 8.5 tests/src/Unit/ElasticSearch/Parameters/Factory/FilterFactoryTest.php \Drupal\Tests\elasticsearch_connector\Unit\ElasticSearch\Parameters\Factory\FilterFactoryTest::testFilterFromConditionA()
  2. 8.6 tests/src/Unit/ElasticSearch/Parameters/Factory/FilterFactoryTest.php \Drupal\Tests\elasticsearch_connector\Unit\ElasticSearch\Parameters\Factory\FilterFactoryTest::testFilterFromConditionA()

@covers ::filterFromCondition

File

tests/src/Unit/ElasticSearch/Parameters/Factory/FilterFactoryTest.php, line 24

Class

FilterFactoryTest
This test is long because it tests a long method.

Namespace

Drupal\Tests\elasticsearch_connector\Unit\ElasticSearch\Parameters\Factory

Code

public function testFilterFromConditionA() {

  // Empty and not empty operators.

  /** @var \Prophecy\Prophecy\ObjectProphecy $condition */
  $condition = $this
    ->prophesize(Condition::class);
  $condition
    ->getValue()
    ->willReturn(FALSE);
  $condition
    ->getOperator()
    ->willReturn('<>');
  $condition
    ->getField()
    ->willReturn('foo');
  $filter = FilterFactory::filterFromCondition($condition
    ->reveal());
  $expected_filter = [
    'exists' => [
      'field' => 'foo',
    ],
  ];
  $this
    ->assertEquals($expected_filter, $filter);

  // Test the = operator.

  /** @var \Prophecy\Prophecy\ObjectProphecy $condition */
  $condition = $this
    ->prophesize(Condition::class);
  $condition
    ->getValue()
    ->willReturn(FALSE);
  $condition
    ->getOperator()
    ->willReturn('=');
  $condition
    ->getField()
    ->willReturn('foo');
  $filter = FilterFactory::filterFromCondition($condition
    ->reveal());
  $expected_filter = [
    'bool' => [
      'must_not' => [
        'exists' => [
          'field' => 'foo',
        ],
      ],
    ],
  ];
  $this
    ->assertEquals($expected_filter, $filter);

  // Other operators will throw an exception.

  /** @var \Prophecy\Prophecy\ObjectProphecy $condition */
  $condition = $this
    ->prophesize(Condition::class);
  $condition
    ->getValue()
    ->willReturn(FALSE);
  $condition
    ->getOperator()
    ->willReturn('>');
  $condition
    ->getField()
    ->willReturn('foo');
  $this
    ->expectException(\Exception::class, 'Incorrect filter criteria');
  FilterFactory::filterFromCondition($condition
    ->reveal());
}