View source
<?php
namespace Drupal\Tests\realistic_dummy_content_api\Unit\includes;
use Drupal\realistic_dummy_content_api\includes\RealisticDummyContentTermReferenceField;
use PHPUnit\Framework\TestCase;
class RealisticDummyContentTermReferenceFieldTest extends TestCase {
public function callbackTaxonomyLoadTree($vocabulary) {
return $vocabulary['terms'];
}
public function callbackTermId($term) {
return $term['id'];
}
public function callbackVocabularyMachineName($vocabulary) {
return $vocabulary['vid'];
}
public function testGetTid(string $message, array $vocabularies, array $field_info, bool $expect_exception, string $name, $expected) {
$object = $this
->getMockBuilder(RealisticDummyContentTermReferenceField::class)
->setMethods([
'getAllVocabularies',
'fieldInfoField',
'vocabularyMachineName',
'taxonomyLoadTree',
'termId',
'termName',
'newVocabularyTerm',
])
->disableOriginalConstructor()
->getMock();
$object
->method('getAllVocabularies')
->willReturn($vocabularies);
$object
->method('newVocabularyTerm')
->willReturn([
'id' => 'this-is-a-new-term',
]);
$object
->method('fieldInfoField')
->willReturn([
'settings' => [
'allowed_values' => $field_info,
],
]);
$object
->method('vocabularyMachineName')
->will($this
->returnCallback([
$this,
'callbackVocabularyMachineName',
]));
$object
->method('taxonomyLoadTree')
->will($this
->returnCallback([
$this,
'callbackTaxonomyLoadTree',
]));
$object
->method('termId')
->will($this
->returnCallback([
$this,
'callbackTermId',
]));
$object
->method('termName')
->will($this
->returnCallback([
$this,
'callbackTermId',
]));
if ($expect_exception) {
$this
->expectException(\Exception::class);
}
$result = $object
->getTid($name);
$this
->assertTrue($result == $expected, $message);
}
public function providerGetTid() {
return [
[
'message' => 'Exception if no vocabulary.',
'vocabularies' => [],
'field_info' => [],
'expect_exception' => TRUE,
'name' => '',
'expected' => 0,
],
[
'message' => 'new term is created if none exists.',
'vocabularies' => [
[
'vid' => 'first',
'terms' => [],
],
],
'field_info' => [
[
'vocabulary' => 'not-first',
],
],
'expect_exception' => FALSE,
'name' => 'whatever',
'expected' => 'this-is-a-new-term',
],
[
'message' => 'new term is created if none exists in the vocabulary.',
'vocabularies' => [
[
'vid' => 'first',
'terms' => [
[
'id' => 'some-term',
],
],
],
],
'field_info' => [
[
'vocabulary' => 'first',
],
],
'expect_exception' => FALSE,
'name' => 'whatever',
'expected' => 'this-is-a-new-term',
],
[
'message' => 'new term is created if one exists in a different vocabulary.',
'vocabularies' => [
[
'vid' => 'first',
'terms' => [
[
'id' => 'some-term',
],
],
],
],
'field_info' => [
[
'vocabulary' => 'not-first',
],
],
'expect_exception' => FALSE,
'name' => 'some-term',
'expected' => 'this-is-a-new-term',
],
[
'message' => 'existing term is used if one exists in the target vocabulary.',
'vocabularies' => [
[
'vid' => 'first',
'terms' => [
[
'id' => 'some-term',
],
],
],
],
'field_info' => [
[
'vocabulary' => 'first',
],
],
'expect_exception' => FALSE,
'name' => 'some-term',
'expected' => 'some-term',
],
];
}
}