You are here

public function ReorderChildrenWithRevisionsFunctionalTest::testReordering in Entity Reference Hierarchy 3.x

Same name and namespace in other branches
  1. 8.2 tests/src/Functional/ReorderChildrenWithRevisionsFunctionalTest.php \Drupal\Tests\entity_hierarchy\Functional\ReorderChildrenWithRevisionsFunctionalTest::testReordering()

Tests children reorder form.

File

tests/src/Functional/ReorderChildrenWithRevisionsFunctionalTest.php, line 91

Class

ReorderChildrenWithRevisionsFunctionalTest
Tests reordering with revisions.

Namespace

Drupal\Tests\entity_hierarchy\Functional

Code

public function testReordering() {
  $entities = $this
    ->createChildEntities($this->parent
    ->id());
  $root_node = $this->treeStorage
    ->getNode($this->parentStub);
  $children = $this->treeStorage
    ->findChildren($root_node
    ->getNodeKey());
  $mapper = $this->container
    ->get('entity_hierarchy.entity_tree_node_mapper');
  $ancestors = $mapper
    ->loadEntitiesForTreeNodesWithoutAccessChecks('entity_test_rev', $children);
  $labels = $this
    ->getLabels($ancestors);
  $this
    ->assertEquals([
    'Child 5',
    'Child 4',
    'Child 3',
    'Child 2',
    'Child 1',
  ], $labels);

  // Now insert one in the middle.
  $name = 'Child 6';
  $entities[$name] = $this
    ->createTestEntity($this->parent
    ->id(), $name, -2);
  $children = $this->treeStorage
    ->findChildren($root_node
    ->getNodeKey());
  $ancestors = $mapper
    ->loadEntitiesForTreeNodesWithoutAccessChecks('entity_test_rev', $children);
  $labels = $this
    ->getLabels($ancestors);
  $this
    ->assertEquals([
    'Child 5',
    'Child 4',
    'Child 3',
    'Child 2',
    'Child 6',
    'Child 1',
  ], $labels);

  // Now we visit the form for reordering.
  $this
    ->drupalLogin($this
    ->drupalCreateUser([
    'reorder entity_hierarchy children',
    'view test entity',
    'administer entity_test content',
  ]));
  $this
    ->drupalGet($this->parent
    ->toUrl('entity_hierarchy_reorder'));
  $assert = $this
    ->assertSession();
  $assert
    ->statusCodeEquals(200);
  foreach ($entities as $entity) {
    $assert
      ->linkExists($entity
      ->label());
  }

  // Now move Child 6 to the top.
  $this
    ->submitForm([
    'children[' . $entities[$name]
      ->id() . '][weight]' => -10,
  ], 'Update child order');
  $children = $this->treeStorage
    ->findChildren($root_node
    ->getNodeKey());
  $ancestors = $mapper
    ->loadEntitiesForTreeNodesWithoutAccessChecks('entity_test_rev', $children);
  $labels = $this
    ->getLabels($ancestors);
  $this
    ->assertEquals([
    'Child 6',
    'Child 5',
    'Child 4',
    'Child 3',
    'Child 2',
    'Child 1',
  ], $labels);
}