page_tester-1.0.x-dev/src/Plugin/Tests/TestsOrganigramsTree.php
src/Plugin/Tests/TestsOrganigramsTree.php
<?php
declare(strict_types=1);
namespace Drupal\page_tester\Plugin\Tests;
use Drupal\page_tester\TestsPluginBase;
use Drupal\taxonomy\Entity\Term;
/**
* Plugin implementation of the tests.
*
* @Tests(
* id = "tests_organigrams_tree",
* label = @Translation("Tests Organigrams Tree"),
* description = @Translation("Tests for Organigrams Tree.")
* )
*/
final class TestsOrganigramsTree extends TestsPluginBase {
/**
* {@inheritdoc}
*/
public function getTests($testId): array {
$data = [];
$tests = \Drupal::entityTypeManager()->getStorage('page_tester_test')->load($testId);
$dataResourceResource = \Drupal::entityTypeManager()->getStorage('data_resource_resource')->load($tests->resource->value);
$resourceManager = \Drupal::service('plugin.manager.resources');
$plugin_definitions = $resourceManager->getDefinitions();
foreach ($plugin_definitions as $plugin_id => $definition) {
if ($plugin_id == $dataResourceResource->resource->value) {
return $resourceManager->createInstance($plugin_id)->getData($dataResourceResource);
}
}
return $data;
}
/**
* {@inheritdoc}
*/
public function setTest($testId, $testNumber): bool {
$vocabularyTestItems = $this->getTests($testId);
if(isset($vocabularyTestItems[$testNumber])) {
$fields = \Drupal::service('page_tester.field_definition_service')->getAllVocabularyFields();
foreach ($vocabularyTestItems[$testNumber] as $id => $values) {
$term = Term::load($id);
if($term) {
foreach ($fields as $field) {
if($term->hasField($field)) {
if (isset($values[$field])) {
$term->set($field, $values[$field]);
$term->save();
return TRUE;
}
}
}
}
}
}
return FALSE;
}
}
