View source
<?php
namespace Drupal\Tests\devel_generate\Functional;
use Drupal\node\Entity\Node;
use Drupal\taxonomy\Entity\Term;
use Drupal\Tests\media\Traits\MediaTypeCreationTrait;
class DevelGenerateBrowserTest extends DevelGenerateBrowserTestBase {
use MediaTypeCreationTrait;
public function testDevelGenerateUsers() {
$edit = [
'num' => 4,
];
$this
->drupalPostForm('admin/config/development/generate/user', $edit, 'Generate');
$this
->assertText('4 users created.');
$this
->assertText('Generate process complete.');
}
public function testDevelGenerateContent() {
$edit = [
'num' => 4,
'title_length' => 4,
];
$this
->drupalPostForm('admin/config/development/generate/content', $edit, 'Generate');
$this
->assertText('Please select at least one content type');
$this
->drupalCreateNode([
'type' => 'article',
]);
$edit = [
'num' => 4,
'kill' => TRUE,
'node_types[article]' => TRUE,
'time_range' => 604800,
'max_comments' => 3,
'title_length' => 4,
'add_alias' => 1,
];
$this
->drupalPostForm('admin/config/development/generate/content', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Deleted 1 node');
$this
->assertSession()
->pageTextContains('Created 4 nodes');
$this
->assertSession()
->pageTextContains('Generate process complete.');
$this
->assertSession()
->pageTextNotContains('translations');
$nodes = Node::loadMultiple();
$this
->assert(count($nodes) == 4, 'Nodes generated successfully.');
foreach ($nodes as $node) {
$alias = 'node-' . $node
->id() . '-' . $node
->bundle();
$this
->drupalGet($alias);
$this
->assertSession()
->statusCodeEquals('200');
$this
->assertSession()
->pageTextContains($node
->getTitle(), 'Generated url alias for the node works.');
}
$edit = [
'num' => 3,
'kill' => TRUE,
'node_types[article]' => TRUE,
'add_language[]' => [
'en',
],
'translate_language[]' => [
'de',
'ca',
],
'add_alias' => TRUE,
];
$this
->drupalPostForm('admin/config/development/generate/content', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Deleted 4 nodes');
$this
->assertSession()
->pageTextContains('Created 3 nodes');
$this
->assertSession()
->pageTextContains('Created 6 node translations');
$articles = \Drupal::entityQuery('node')
->execute();
$this
->assertCount(3, $articles);
$node = Node::load(end($articles));
$this
->assertTrue($node
->hasTranslation('de'));
$this
->assertTrue($node
->hasTranslation('ca'));
$this
->assertFalse($node
->hasTranslation('fr'));
foreach (Node::loadMultiple($articles) as $node) {
foreach ([
'de',
'ca',
] as $langcode) {
$translation_node = $node
->getTranslation($langcode);
$alias = 'node-' . $translation_node
->id() . '-' . $translation_node
->bundle() . '-' . $langcode;
$this
->drupalGet($langcode . '/' . $alias);
$this
->assertSession()
->statusCodeEquals('200');
$this
->assertSession()
->pageTextContains($translation_node
->getTitle());
}
}
$article = $this
->drupalCreateNode([
'type' => 'article',
'title' => 'Alive',
]);
$edit = [
'num' => 2,
'kill' => TRUE,
'node_types[page]' => TRUE,
'add_language[]' => [
'en',
],
'translate_language[]' => [
'fr',
],
];
$this
->drupalPostForm('admin/config/development/generate/content', $edit, 'Generate');
$this
->assertSession()
->pageTextNotContains('Deleted');
$this
->assertSession()
->pageTextContains('Created 2 nodes');
$this
->assertSession()
->pageTextNotContains('node translations');
$this
->assertNotEmpty(Node::load($article
->id()));
$pages = \Drupal::entityQuery('node')
->condition('type', 'page')
->execute();
$this
->assertCount(2, $pages);
$node = Node::load(end($pages));
$this
->assertFalse($node
->hasTranslation('fr'));
$edit = [
'num' => 5,
'kill' => TRUE,
'node_types[article]' => TRUE,
'add_type_label' => TRUE,
];
$this
->drupalPostForm('admin/config/development/generate/content', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Created 5 nodes');
$this
->assertSession()
->pageTextContains('Generate process complete');
$nodes = \Drupal::entityQuery('node')
->condition('type', 'article')
->execute();
$this
->assertCount(5, $nodes);
$node = Node::load(end($nodes));
$this
->assertEquals('Article - ', substr($node->title->value, 0, 10));
for ($i = 0; $i < 15; $i++) {
$this
->drupalCreateUser();
}
$edit = [
'num' => 10,
'kill' => TRUE,
'node_types[article]' => TRUE,
'authors[3]' => TRUE,
'authors[4]' => TRUE,
];
$this
->drupalPostForm('admin/config/development/generate/content', $edit, 'Generate');
$this
->drupalGet('admin/content');
$nodes_by_user_3 = \Drupal::entityQuery('node')
->condition('type', 'article')
->condition('uid', [
'3',
], 'IN')
->execute();
$nodes_by_user_4 = \Drupal::entityQuery('node')
->condition('type', 'article')
->condition('uid', [
'4',
], 'IN')
->execute();
$nodes_by_others = \Drupal::entityQuery('node')
->condition('type', 'article')
->condition('uid', [
'3',
'4',
], 'NOT IN')
->execute();
$this
->assertEquals(10, count($nodes_by_user_3) + count($nodes_by_user_4));
$this
->assertCount(0, $nodes_by_others);
$this
->assertGreaterThan(0, count($nodes_by_user_3));
$this
->assertGreaterThan(0, count($nodes_by_user_4));
}
public function testDevelGenerateTerms() {
$edit = [
'vids[]' => $this->vocabulary
->id(),
'num' => 5,
'title_length' => 12,
];
$this
->drupalPostForm('admin/config/development/generate/term', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Created 5 new terms');
$this
->assertSession()
->pageTextContains('In vocabulary ' . $this->vocabulary
->label());
$this
->assertSession()
->pageTextNotContains('translations');
$this
->assertSession()
->pageTextContains('Generate process complete.');
$this
->assertCount(5, \Drupal::entityQuery('taxonomy_term')
->execute());
$edit = [
'vids[]' => $this->vocabulary
->id(),
'num' => 3,
'add_language[]' => [
'en',
],
'translate_language[]' => [
'ca',
],
];
$this
->drupalPostForm('admin/config/development/generate/term', $edit, 'Generate');
$this
->assertSession()
->pageTextNotContains('Deleted');
$this
->assertSession()
->pageTextContains('Created 3 new terms');
$this
->assertSession()
->pageTextContains('Created 3 term translations');
$terms = \Drupal::entityQuery('taxonomy_term')
->execute();
$this
->assertCount(8, $terms);
$term = Term::load(end($terms));
$this
->assertTrue($term
->hasTranslation('ca'));
$this
->assertFalse($term
->hasTranslation('de'));
$this
->assertFalse($term
->hasTranslation('fr'));
$edit = [
'vids[]' => $this->vocabulary2
->id(),
'num' => 4,
];
$this
->drupalPostForm('admin/config/development/generate/term', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Created 4 new terms');
$this
->assertSession()
->pageTextNotContains('In vocabulary ' . $this->vocabulary
->label());
$this
->assertSession()
->pageTextContains('In vocabulary ' . $this->vocabulary2
->label());
$terms1 = \Drupal::entityQuery('taxonomy_term')
->condition('vid', $this->vocabulary
->id())
->execute();
$this
->assertCount(8, $terms1);
$terms2 = \Drupal::entityQuery('taxonomy_term')
->condition('vid', $this->vocabulary2
->id())
->execute();
$this
->assertCount(4, $terms2);
$edit = [
'vids[]' => $this->vocabulary2
->id(),
'num' => 6,
'kill' => TRUE,
];
$this
->drupalPostForm('admin/config/development/generate/term', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Deleted 4 existing terms');
$this
->assertSession()
->pageTextContains('Created 6 new terms');
$terms1 = \Drupal::entityQuery('taxonomy_term')
->condition('vid', $this->vocabulary
->id())
->execute();
$this
->assertCount(8, $terms1);
$terms2 = \Drupal::entityQuery('taxonomy_term')
->condition('vid', $this->vocabulary2
->id())
->execute();
$this
->assertCount(6, $terms2);
$edit = [
'vids[]' => [
$this->vocabulary
->id(),
$this->vocabulary2
->id(),
],
'num' => 9,
'minimum_depth' => 2,
'maximum_depth' => 6,
];
$this
->drupalPostForm('admin/config/development/generate/term', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Created 9 new terms');
$terms1 = \Drupal::entityQuery('taxonomy_term')
->condition('vid', $this->vocabulary
->id())
->execute();
$terms2 = \Drupal::entityQuery('taxonomy_term')
->condition('vid', $this->vocabulary2
->id())
->execute();
$this
->assertCount(23, $terms1 + $terms2);
}
public function testDevelGenerateVocabs() {
$edit = [
'num' => 5,
'title_length' => 12,
'kill' => TRUE,
];
$this
->drupalPostForm('admin/config/development/generate/vocabs', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Created the following new vocabularies: ');
$this
->assertSession()
->pageTextContains('Generate process complete.');
}
public function testDevelGenerateMenus() {
$edit = [
'num_menus' => 5,
'num_links' => 7,
];
$this
->drupalPostForm('admin/config/development/generate/menu', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Created the following 5 new menus: ');
$this
->assertSession()
->pageTextContains('Created 7 new menu links');
$this
->assertSession()
->pageTextContains('Generate process complete.');
$edit = [
'num_menus' => 160,
'num_links' => 380,
'title_length' => 3,
'kill' => 1,
];
$this
->drupalPostForm('admin/config/development/generate/menu', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Deleted 5 menu(s) and 0 other link(s).');
$this
->assertSession()
->pageTextContains('Created the following 160 new menus: ');
$this
->assertSession()
->pageTextContains('Created 380 new menu links');
$this
->assertSession()
->pageTextContains('Generate process complete.');
}
public function testDevelGenerateMedia() {
$this
->drupalGet('admin/config/development/generate/media');
$this
->assertSession()
->statusCodeEquals(404);
\Drupal::service('module_installer')
->install([
'media',
]);
$this
->getSession()
->reload();
$this
->assertSession()
->statusCodeEquals(200);
$this
->assertSession()
->pageTextContains('Generate media');
$media_type1 = $this
->createMediaType('image');
$media_type2 = $this
->createMediaType('audio_file');
$edit = [
'num' => 5,
'name_length' => 12,
"media_types[{$media_type1->id()}]" => 1,
"media_types[{$media_type2->id()}]" => 1,
'kill' => 1,
];
$this
->drupalPostForm('admin/config/development/generate/media', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Finished creating 5 media items.');
$this
->assertSession()
->pageTextContains('Generate process complete.');
$this
->assertCount(5, \Drupal::entityQuery('media')
->execute());
$edit = [
'num' => 56,
'name_length' => 6,
"media_types[{$media_type1->id()}]" => 1,
"media_types[{$media_type2->id()}]" => 1,
'kill' => 1,
];
$this
->drupalPostForm('admin/config/development/generate/media', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Finished 56 elements created successfully.');
$this
->assertSession()
->pageTextContains('Generate process complete.');
$this
->assertCount(56, \Drupal::entityQuery('media')
->execute());
}
public function testDevelGenerateBatchContent() {
$edit = [
'num' => 55,
'kill' => TRUE,
'node_types[article]' => TRUE,
'node_types[page]' => TRUE,
];
$this
->drupalPostForm('admin/config/development/generate/content', $edit, 'Generate');
$this
->assertSession()
->pageTextContains('Finished 55 elements created successfully.');
$this
->assertSession()
->pageTextContains('Generate process complete.');
$count = count(Node::loadMultiple());
$this
->assertEquals(55, $count, sprintf('The expected total number of nodes is %s, found %s', 55, $count));
$edit = [
'num' => 52,
'kill' => TRUE,
'node_types[article]' => TRUE,
'node_types[page]' => TRUE,
'add_language[]' => [
'en',
],
'translate_language[]' => [
'de',
'ca',
],
];
$this
->drupalPostForm('admin/config/development/generate/content', $edit, 'Generate');
$this
->assertCount(52, \Drupal::entityQuery('node')
->execute());
$articles = \Drupal::entityQuery('node')
->condition('type', 'article')
->execute();
$this
->assertSession()
->pageTextContains(sprintf('Finished 52 elements and %s translations created successfully.', 2 * count($articles)));
$edit = [
'num' => 60,
'kill' => TRUE,
'node_types[article]' => TRUE,
'node_types[page]' => FALSE,
];
$this
->drupalPostForm('admin/config/development/generate/content', $edit, 'Generate');
$nodeStorage = $this->container
->get('entity_type.manager')
->getStorage('node');
$type = 'article';
$count = $nodeStorage
->getQuery()
->condition('type', $type)
->count()
->execute();
$this
->assertEquals(60, $count, sprintf('The expected number of %s is %s, found %s', $type, 60, $count));
}
}