-
-
Notifications
You must be signed in to change notification settings - Fork 13
/
SearchApiTrait.php
65 lines (52 loc) · 1.39 KB
/
SearchApiTrait.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
declare(strict_types=1);
namespace DrevOps\BehatSteps;
use Drupal\node\Entity\Node;
/**
* Trait SearchApiTrait.
*
* Search API-related steps.
*
* @package DrevOps\BehatSteps
*
* @SuppressWarnings(PHPMD.UnusedLocalVariable)
*/
trait SearchApiTrait {
use ContentTrait;
/**
* Index a node with all Search API indices.
*
* @When I index :type :title for search
*/
public function searchApiIndexContent(string $type, string $title): void {
$nids = $this->contentLoadMultiple($type, [
'title' => $title,
]);
if (empty($nids)) {
throw new \RuntimeException(sprintf('Unable to find %s page "%s"', $type, $title));
}
ksort($nids);
$nid = end($nids);
$node = Node::load($nid);
search_api_entity_insert($node);
$this->searchApiDoIndex(1);
}
/**
* Index a number of items across all active Search API indices.
*
* @When I index :limit Search API items
* @When I index 1 Search API item
*/
public function searchApiDoIndex(string|int $limit = 1): void {
$limit = intval($limit);
$index_storage = \Drupal::entityTypeManager()->getStorage('search_api_index');
/** @var \Drupal\search_api\IndexInterface[] $indexes */
$indexes = $index_storage->loadByProperties(['status' => TRUE]);
if (!$indexes) {
return;
}
foreach ($indexes as $index) {
$index->indexItems($limit);
}
}
}