Skip to content
Snippets Groups Projects
Commit d5877d47 authored by Eirik Morland's avatar Eirik Morland
Browse files

Issue #3452117 by eiriksm: Use a trait for setting up fields for Kernel tests for easier reuse

parent 313338fb
No related branches found
No related tags found
1 merge request!61Add the trait and use it
Pipeline #189566 passed with warnings
......@@ -13,6 +13,8 @@ use Drupal\violinist_teams\TeamNode;
*/
abstract class KernelTestBase extends CoreKernelTestBase {
use TeamFieldKernelSetupTrait;
/**
* Node type.
*
......@@ -46,65 +48,8 @@ abstract class KernelTestBase extends CoreKernelTestBase {
$this->installEntitySchema('user');
$this->installEntitySchema('node');
$this->installConfig(static::$modules);
// Create the field for holding members.
$fieldStorage = FieldStorageConfig::create([
'field_name' => 'field_team_members',
'entity_type' => 'node',
'type' => 'entity_reference',
'cardinality' => -1,
'settings' => [
'target_type' => 'user',
],
]);
$fieldStorage->save();
$field = FieldConfig::create([
'field_storage' => $fieldStorage,
'bundle' => $this->nodeType->id(),
'field_type' => 'entity_reference',
'required' => FALSE,
'settings' => [
['handler' => 'default:user'],
],
]);
$field->save();
// Create the field for holding admins.
$fieldStorage = FieldStorageConfig::create([
'field_name' => 'field_team_admins',
'entity_type' => 'node',
'type' => 'entity_reference',
'cardinality' => -1,
'settings' => [
'target_type' => 'user',
],
]);
$fieldStorage->save();
$field = FieldConfig::create([
'field_storage' => $fieldStorage,
'bundle' => $this->nodeType->id(),
'field_type' => 'entity_reference',
'required' => FALSE,
'settings' => [
['handler' => 'default:user'],
],
]);
$field->save();
// The field we use for notifications.
$fieldStorage = FieldStorageConfig::create([
'field_name' => 'field_team_notification_emails',
'entity_type' => 'node',
'type' => 'string_long',
'cardinality' => 1,
]);
$fieldStorage->save();
$field = FieldConfig::create([
'field_storage' => $fieldStorage,
'bundle' => $this->nodeType->id(),
'field_type' => 'string_long',
'required' => FALSE,
]);
$field->save();
$this->createTeamFields();
// The field we use for max concurrent notifications.
$fieldStorage = FieldStorageConfig::create([
......
<?php
namespace Drupal\Tests\violinist_teams\Kernel;
use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\violinist_teams\TeamNode;
/**
* A trait for setting up team fields.
*/
trait TeamFieldKernelSetupTrait {
/**
* Create fields we need on the team content type.
*/
public function createTeamFields() {
// The field we use for notifications.
$fieldStorage = FieldStorageConfig::create([
'field_name' => 'field_team_notification_emails',
'entity_type' => 'node',
'type' => 'string_long',
'cardinality' => 1,
]);
$fieldStorage->save();
$field = FieldConfig::create([
'field_storage' => $fieldStorage,
'bundle' => TeamNode::NODE_TYPE,
'field_type' => 'string_long',
'required' => FALSE,
]);
$field->save();
// Create the field for holding members.
$fieldStorage = FieldStorageConfig::create([
'field_name' => 'field_team_members',
'entity_type' => 'node',
'type' => 'entity_reference',
'cardinality' => -1,
'settings' => [
'target_type' => 'user',
],
]);
$fieldStorage->save();
$field = FieldConfig::create([
'field_storage' => $fieldStorage,
'bundle' => TeamNode::NODE_TYPE,
'field_type' => 'entity_reference',
'required' => FALSE,
'settings' => [
['handler' => 'default:user'],
],
]);
$field->save();
// Create the field for holding admins.
$fieldStorage = FieldStorageConfig::create([
'field_name' => 'field_team_admins',
'entity_type' => 'node',
'type' => 'entity_reference',
'cardinality' => -1,
'settings' => [
'target_type' => 'user',
],
]);
$fieldStorage->save();
$field = FieldConfig::create([
'field_storage' => $fieldStorage,
'bundle' => TeamNode::NODE_TYPE,
'field_type' => 'entity_reference',
'required' => FALSE,
'settings' => [
['handler' => 'default:user'],
],
]);
$field->save();
// Slack notifications.
$fieldStorage = FieldStorageConfig::create([
'field_name' => TeamNode::NOTIFICATION_ENABLED_FIELD,
'entity_type' => 'node',
'type' => 'boolean',
'cardinality' => 1,
]);
$fieldStorage->save();
$field = FieldConfig::create([
'field_storage' => $fieldStorage,
'bundle' => TeamNode::NODE_TYPE,
'field_type' => 'boolean',
'required' => FALSE,
'default_value' => [
[
'value' => 0,
],
],
]);
$field->save();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment