Skip to content
Snippets Groups Projects
FacetParamBuilderTest.php 1.47 KiB
Newer Older
Kim Pepper's avatar
Kim Pepper committed
<?php

namespace Drupal\Tests\search_api_opensearch\Unit\SearchAPI\Query;

use Drupal\search_api\Query\QueryInterface;
use Drupal\search_api_opensearch\SearchAPI\Query\FacetParamBuilder;
use Drupal\Tests\UnitTestCase;
use Psr\Log\LoggerInterface;
Kim Pepper's avatar
Kim Pepper committed

/**
 * Tests the facet param builder.
 *
 * @coversDefaultClass \Drupal\search_api_opensearch\SearchAPI\Query\FacetParamBuilder
 * @group search_api_opensearch
 */
class FacetParamBuilderTest extends UnitTestCase {

  /**
   * @covers ::buildFacetParams
   */
  public function testBuildFacetParams() {
    $logger = $this->prophesize(LoggerInterface::class);
    $builder = new FacetParamBuilder($logger->reveal());
Kim Pepper's avatar
Kim Pepper committed

    $query = $this->prophesize(QueryInterface::class);
    $query->getOption('search_api_facets', [])
      ->willReturn([
        'facet1' => [
          'field' => 'field1',
          'operator' => 'and',
        ],
        'facet2' => [
          'field' => 'field1',
          'operator' => 'or',
        ],
      ]);

    $indexFields = [
      'field1' => [],
      'field2' => [],
    ];

    $aggs = $builder->buildFacetParams($query->reveal(), $indexFields);

    $expected = [
Kim Pepper's avatar
Kim Pepper committed
      'facet1' => ['terms' => ['field' => 'field1', 'size' => '10']],
      'facet2_global' => [
        'global' => (object) NULL,
Kim Pepper's avatar
Kim Pepper committed
        'aggs' => [
          'facet2' =>
            ['terms' => ['field' => 'field1', 'size' => '10']],
Kim Pepper's avatar
Kim Pepper committed
        ],
      ],
    ];

    $this->assertNotEmpty($aggs);
    $this->assertEquals($expected, $aggs);
  }

}