You are here

public function FilterFactoryTest::testFilterFromConditionB 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::testFilterFromConditionB()
  2. 8.6 tests/src/Unit/ElasticSearch/Parameters/Factory/FilterFactoryTest.php \Drupal\Tests\elasticsearch_connector\Unit\ElasticSearch\Parameters\Factory\FilterFactoryTest::testFilterFromConditionB()

@covers ::filterFromCondition

File

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

Class

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

Namespace

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

Code

public function testFilterFromConditionB() {

  // Normal filters.

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

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

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

  /** @var \Prophecy\Prophecy\ObjectProphecy $condition */
  $condition = $this
    ->prophesize(Condition::class);
  $condition
    ->getValue()
    ->willReturn(1);
  $condition
    ->getOperator()
    ->willReturn('>');
  $condition
    ->getField()
    ->willReturn('foo');
  $filter = FilterFactory::filterFromCondition($condition
    ->reveal());
  $expected_filter = [
    'range' => [
      'foo' => [
        'from' => 1,
        'to' => NULL,
        'include_lower' => FALSE,
        'include_upper' => FALSE,
      ],
    ],
  ];
  $this
    ->assertEquals($expected_filter, $filter);

  /** @var \Prophecy\Prophecy\ObjectProphecy $condition */
  $condition = $this
    ->prophesize(Condition::class);
  $condition
    ->getValue()
    ->willReturn(1);
  $condition
    ->getOperator()
    ->willReturn('>=');
  $condition
    ->getField()
    ->willReturn('foo');
  $filter = FilterFactory::filterFromCondition($condition
    ->reveal());
  $expected_filter = [
    'range' => [
      'foo' => [
        'from' => 1,
        'to' => NULL,
        'include_lower' => TRUE,
        'include_upper' => FALSE,
      ],
    ],
  ];
  $this
    ->assertEquals($expected_filter, $filter);

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

  /** @var \Prophecy\Prophecy\ObjectProphecy $condition */
  $condition = $this
    ->prophesize(Condition::class);
  $condition
    ->getValue()
    ->willReturn(1);
  $condition
    ->getOperator()
    ->willReturn('<=');
  $condition
    ->getField()
    ->willReturn('foo');
  $filter = FilterFactory::filterFromCondition($condition
    ->reveal());
  $expected_filter = [
    'range' => [
      'foo' => [
        'from' => NULL,
        'to' => 1,
        'include_lower' => FALSE,
        'include_upper' => TRUE,
      ],
    ],
  ];
  $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('other-operator');
  $condition
    ->getField()
    ->willReturn('foo');
  $this
    ->expectException(\Exception::class, 'Incorrect filter criteria');
  FilterFactory::filterFromCondition($condition
    ->reveal());
}