Kernel Test: Programmatically create a vocabulary and add a field to it

July 29   8 0 0 Views
Advertisement

I want to add a taxonomy term and add field to it. My current code looks this way:

<?php  namespace Drupal\Tests\permissions_by_term\Kernel;  use Drupal\KernelTests\KernelTestBase; use Drupal\field\Entity\FieldStorageConfig; use Drupal\taxonomy\Entity\Vocabulary;  /**  * Tests the ERR composite relationship upgrade path.  *  * @group permissions_by_term  */ class SelectTermTest extends KernelTestBase {    /**    * {@inheritdoc}    */   public static $modules = array('taxonomy', 'text');    /**    * List of taxonomy term names by language.    *    * @var array    */   public $termNames = [];    /**    * The vocabulary used for creating terms.    *    * @var \Drupal\taxonomy\VocabularyInterface    */   protected $vocabulary;    function setUp() {     parent::setUp();      $this->installEntitySchema('taxonomy_term');      // Create a vocabulary.     $this->vocabulary = Vocabulary::create([       'name' => 'Views testing tags',       'vid' => 'views_testing_tags',     ]);     $this->vocabulary->save();      // Add a translatable field to the vocabulary.     $field = FieldStorageConfig::create(array(       'field_name' => 'field_foo',       'entity_type' => 'taxonomy_term',       'type' => 'text',     ));     $field->save();     FieldConfig::create([       'field_name' => 'field_foo',       'entity_type' => 'taxonomy_term',       'label' => 'Foo',       'bundle' => 'views_testing_tags',     ])->save();   }    public function testSomething() {   }  } 

If I run the test by the following command:

vendor/bin/phpunit -c modules/permissions_by_term modules/permissions_by_term/tests/src/Kernel/SelectTermTest.php

I'm getting the following output:

PHPUnit 4.8.11 by Sebastian Bergmann and contributors.

E

Time: 882 ms, Memory: 6.00Mb

There was 1 error:

1) Drupal\Tests\permissions_by_term\Kernel\SelectTermTest::testSomething Drupal\Core\Entity\Exception\NoCorrespondingEntityClassException: The Drupal\field\Entity\FieldStorageConfig class does not correspond to an entity type.

/home/peter/Websites/pbt-d8/core/lib/Drupal/Core/Entity/EntityTypeRepository.php:98 /home/peter/Websites/pbt-d8/core/lib/Drupal/Core/Entity/EntityManager.php:375 /home/peter/Websites/pbt-d8/core/lib/Drupal/Core/Entity/Entity.php:509 /home/peter/Websites/pbt-d8/modules/permissions_by_term/tests/src/Kernel/SelectTermTest.php:49

FAILURES! Tests: 1, Assertions: 1, Errors: 1.

I do not understand this part:

Drupal\Core\Entity\Exception\NoCorrespondingEntityClassException: The Drupal\field\Entity\FieldStorageConfig class does not correspond to an entity type.

As an example I have used the Drupal core taxonomy test from

core/modules/taxonomy/src/Tests/Views/TaxonomyFieldFilterTest.php

This test does what I want to do, but is not a Kernel test. It is a Simpletest, since it inherits from WebTestBase. If I use WebTestBase, it works. But the test is much slower then. Do you know what's missing in my code for running it as a Kernel Test?

Advertisement

Replay

Tags: testing, taxonomy
PC site About | Contact

©2016 avrocks.com all rights reserved

processed in 0.124 (s). 5 q(s)