public function ShsTermTest::testFirstLevel in Simple hierarchical select 2.0.x
Tests getting the first level of terms.
File
- tests/
src/ Functional/ ShsTermTest.php, line 19
Class
- ShsTermTest
- Test term functions in SHS.
Namespace
Drupal\Tests\shs\FunctionalCode
public function testFirstLevel() : void {
// Get all predefined terms with no parent.
$expected = array_filter($this
->getTermStructure(), function ($parent) {
return empty($parent);
});
$field_name = 'shs-' . strtr($this->fieldName, [
'_' => '-',
]);
$request_url = "shs-term-data/{$field_name}/{$this->vocabulary->id()}/0";
// Request term data.
$data = $this
->drupalGetJson($request_url);
$expected_count = count($expected);
$this
->assertCount($expected_count, $data, "JSON callback returned {$expected_count} result");
// Check if returned data is correct.
$terms_with_children_expected = [
'aaa 1',
'aaa 3',
];
// Get keys of all returned terms where "hasChildren" is true.
$keys = array_flip(array_keys(array_column($data, 'hasChildren'), TRUE, TRUE));
$terms_with_children = array_intersect_key($data, $keys);
$this
->assertCount(2, $terms_with_children, 'Expected 2 terms having children');
foreach ($terms_with_children_expected as $name) {
$term_exists = array_keys(array_column($terms_with_children, 'name'), $name, TRUE);
$this
->assertCount(1, $term_exists, "Expected term '{$name}' to have children.");
}
}