You are here

public function AcquiaSearchApiClientTest::testAcquiaSearchApiCache in Acquia Search 3.x

Tests invalidation if cache.

File

tests/src/Unit/AcquiaSearchApiClientTest.php, line 192

Class

AcquiaSearchApiClientTest
@coversDefaultClass \Drupal\acquia_search\AcquiaSearchApiClient @group Acquia Search Solr

Namespace

Drupal\Tests\acquia_search\Unit

Code

public function testAcquiaSearchApiCache() {
  $indexes = [
    'WXYZ-12345' => [
      'balancer' => 'example.com',
      'core_id' => 'WXYZ-12345',
      'data' => [
        'key' => 'WXYZ-12345',
        'secret_key' => 'secret_key',
        'product_policies' => [
          'salt' => 'salt',
        ],
        'host' => 'example.com',
      ],
    ],
    'WXYZ-12345.dev.drupal8' => [
      'balancer' => 'example.com',
      'core_id' => 'WXYZ-12345.dev.drupal8',
      'data' => [
        'key' => 'WXYZ-12345.dev.drupal8',
        'secret_key' => 'secret_key',
        'product_policies' => [
          'salt' => 'salt',
        ],
        'host' => 'example.com',
      ],
    ],
  ];
  $auth_info = [
    'host' => Storage::getApiHost(),
    'app_uuid' => Storage::getUuid(),
    'key' => Storage::getApiKey(),
  ];
  $this
    ->assertEquals('WXYZ-12345', Storage::getIdentifier());
  $client = new AcquiaSearchApiClient($auth_info, $this->guzzleClient
    ->reveal(), $this->cacheBackend
    ->reveal());
  $fresh_cache = (object) [
    'data' => $indexes,
    'expire' => \Drupal::time()
      ->getRequestTime() + 24 * 60 * 60,
  ];
  $this->cacheBackend
    ->get('acquia_search.indexes.WXYZ-12345')
    ->willReturn($fresh_cache);
  $client
    ->getSearchIndexes('WXYZ-12345');

  // New cache should not have been set when there is already a valid cache.
  $this->cacheBackend
    ->set('acquia_search.indexes.WXYZ-12345', $indexes, \Drupal::time()
    ->getRequestTime() + 24 * 60 * 60)
    ->shouldHaveBeenCalledTimes(0);
  $expired_cache = (object) [
    'data' => $indexes,
    'expire' => 0,
  ];
  $this->cacheBackend
    ->get('acquia_search.indexes.WXYZ-12345')
    ->willReturn($expired_cache);
  $client
    ->getSearchIndexes('WXYZ-12345');

  // When the current cache value is expired, it should have set a new one.
  $this->cacheBackend
    ->set('acquia_search.indexes.WXYZ-12345', $indexes, \Drupal::time()
    ->getRequestTime() + 24 * 60 * 60)
    ->shouldHaveBeenCalledTimes(1);
}