search_api_meilisearch-1.0.x-dev/tests/src/Kernel/Api/IndexTest.php

tests/src/Kernel/Api/IndexTest.php
<?php

namespace Drupal\Tests\search_api_meilisearch\Kernel\Api;

use Drupal\search_api_meilisearch\Api\MeilisearchApiException;
use Drupal\Tests\search_api_meilisearch\Kernel\MeilisearchKernelTestBase;
use Drupal\Tests\search_api_meilisearch\Traits\Api\IndexCreationTrait;
use Meilisearch\Endpoints\Indexes;
use PHPUnit\Framework\Attributes\Group;

/**
 * Provides index api tests.
 *
 * @group search_api_meilisearch
 */
#[Group('search_api_meilisearch')]
class IndexTest extends MeilisearchKernelTestBase {

  use IndexCreationTrait;

  protected const TEST_INDEX = 'kernel_index_test_index';

  /**
   * Tests index creation and retrieval.
   */
  public function testCreateAndGetIndex(): void {
    $this->createIndex(self::TEST_INDEX, $this->apiService);
    $index = $this->apiService->getIndex(self::TEST_INDEX);
    $this->assertInstanceOf(Indexes::class, $index);
  }

  /**
   * Tests index removal.
   */
  public function testRemoveIndex(): void {
    $this->createIndex(self::TEST_INDEX, $this->apiService);
    $this->assertTrue($this->apiService->removeIndex(self::TEST_INDEX));
  }

  /**
   * Tests removing index that does not exist.
   */
  public function testRemovingNonexistingIndex(): void {
    $this->assertFalse($this->apiService->removeIndex(self::TEST_INDEX));
  }

  /**
   * Tests retrieving all indexes.
   */
  public function testListingAllIndexes(): void {
    $this->createIndex(self::TEST_INDEX, $this->apiService);
    $this->createIndex(self::TEST_INDEX . '_1', $this->apiService);
    $indexes = $this->apiService->listIndexes();

    // Instance may already contain non-test indexes so assertion is needed for
    // test indexes in results.
    $this->assertGreaterThanOrEqual(2, $indexes->count());
    $this->assertContainsOnlyInstancesOf(Indexes::class, $indexes);
    $testIndexFound = FALSE;
    $testIndex1Found = FALSE;
    /** @var \MeiliSearch\Endpoints\Indexes $index */
    foreach ($indexes as $index) {
      if ($index->getUid() === self::TEST_INDEX) {
        $testIndexFound = TRUE;
        continue;
      }

      if ($index->getUid() === self::TEST_INDEX . '_1') {
        $testIndex1Found = TRUE;
      }
    }

    if (!$testIndexFound || !$testIndex1Found) {
      $this->fail();
    }
  }

  /**
   * Tests endpoints on invalid connection.
   */
  public function testIndexEndpointsOnInvalidConnection(): void {
    $this->apiService->setUrl('http://non-existing-connection');
    $this->expectException(MeilisearchApiException::class);
    $this->createIndex(self::TEST_INDEX, $this->apiService);
    $this->apiService->getIndex(self::TEST_INDEX);
    $this->apiService->removeIndex(self::TEST_INDEX);
  }

  /**
   * {@inheritdoc}
   */
  protected function getTestIndexes(): array {
    return [
      self::TEST_INDEX,
      self::TEST_INDEX . '_1',
    ];
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc