Same name in other branches
  1. 8.x-1.x tests/src/Functional/EntityCloneContentRecursiveTest.php \Drupal\Tests\entity_clone\Functional\EntityCloneContentRecursiveTest::testContentEntityClone()

Test clone a content entity with another entities attached.

File

tests/src/Functional/EntityCloneContentRecursiveTest.php, line 70

Class

EntityCloneContentRecursiveTest
Create a content and test a clone.

Namespace

Drupal\Tests\entity_clone\Functional

Code

public function testContentEntityClone() {
    $term_title = $this->randomMachineName(8);
    $term = Term::create([
        'vid' => 'tags',
        'name' => $term_title,
    ]);
    $term->save();
    $node_title = $this->randomMachineName(8);
    $node = Node::create([
        'type' => 'article',
        'title' => $node_title,
        'field_tags' => [
            'target_id' => $term->id(),
        ],
    ]);
    $node->save();
    $settings = [
        'taxonomy_term' => [
            'default_value' => 1,
            'disable' => 0,
            'hidden' => 0,
        ],
    ];
    \Drupal::service('config.factory')->getEditable('entity_clone.settings')
        ->set('form_settings', $settings)
        ->save();
    $this->drupalGet('entity_clone/node/' . $node->id());
    $this->submitForm([
        'recursive[node.article.field_tags][references][' . $term->id() . '][clone]' => 1,
    ], $this->t('Clone'));
    $nodes = \Drupal::entityTypeManager()->getStorage('node')
        ->loadByProperties([
        'title' => $node_title . ' - Cloned',
    ]);
    
    /** @var \Drupal\node\Entity\Node $node */
    $node = reset($nodes);
    $this->assertInstanceOf(Node::class, $node, 'Test node cloned found in database.');
    $terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')
        ->loadByProperties([
        'name' => $term_title . ' - Cloned',
    ]);
    
    /** @var \Drupal\taxonomy\Entity\Term $term */
    $term = reset($terms);
    $this->assertInstanceOf(Term::class, $term, 'Test term referenced by node cloned too found in database.');
    $node->delete();
    $term->delete();
    $nodes = \Drupal::entityTypeManager()->getStorage('node')
        ->loadByProperties([
        'title' => $node_title,
    ]);
    $node = reset($nodes);
    $this->assertInstanceOf(Node::class, $node, 'Test original node found in database.');
    $terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')
        ->loadByProperties([
        'name' => $term_title,
    ]);
    $term = reset($terms);
    $this->assertInstanceOf(Term::class, $term, 'Test original term found in database.');
}