3 namespace Drupal\inline_entity_form\Tests;
6 * Tests the IEF element on a custom form.
8 * @group inline_entity_form
10 class ElementWebTest extends InlineEntityFormTestBase {
17 public static $modules = ['inline_entity_form_test'];
20 * Prepares environment for
22 protected function setUp() {
25 $this->user = $this->createUser([
26 'create ief_simple_single content',
27 'edit any ief_test_custom content',
28 'view own unpublished content',
32 $this->drupalLogin($this->user);
34 $this->fieldStorageConfigStorage = $this->container->get('entity_type.manager')->getStorage('field_storage_config');
38 * Tests IEF on a custom form.
40 public function testCustomFormIEF() {
41 $form_mode_possibilities = [
45 foreach ($form_mode_possibilities as $form_mode_possibility) {
46 $title = $this->randomMachineName();
47 $this->drupalGet("ief-test/$form_mode_possibility");
48 $this->assertText(t('Title'), 'Title field found on the form.');
49 $this->assertText(t('Positive int'), 'Positive int field found on form.');
50 $this->checkFormDisplayFields("node.ief_test_custom.$form_mode_possibility", 'inline_entity_form');
53 $this->drupalPostForm('ief-test', $edit, t('Save'));
54 $this->assertText('Title field is required.');
55 $this->assertNoNodeByTitle($title);
57 $edit['inline_entity_form[title][0][value]'] = $title;
58 $edit['inline_entity_form[positive_int][0][value]'] = -1;
59 $this->drupalPostForm('ief-test', $edit, t('Save'));
60 $this->assertText('Positive int must be higher than or equal to 1');
61 $this->assertNoNodeByTitle($title);
63 $edit['inline_entity_form[positive_int][0][value]'] = 11;
64 $this->drupalPostForm('ief-test', $edit, t('Save'));
65 $message = t('Created @entity_type @label.', ['@entity_type' => t('Content'), '@label' => $edit['inline_entity_form[title][0][value]']]);
66 $this->assertText($message, 'Status message found on the page.');
67 $this->assertNodeByTitle($title, 'ief_test_custom');
69 if ($node = $this->getNodeByTitle($title)) {
70 $this->drupalGet("ief-test/$form_mode_possibility/{$node->id()}");
71 $this->assertFieldByName('inline_entity_form[title][0][value]', $title, 'Node title appears in form.');
72 $this->checkFormDisplayFields("node.ief_test_custom.$form_mode_possibility", 'inline_entity_form');
73 $this->assertFieldByName('inline_entity_form[positive_int][0][value]', 11, 'Positive int field appears in form.');
74 $updated_title = $title . ' - updated';
75 $edit['inline_entity_form[title][0][value]'] = $updated_title;
76 $this->drupalPostForm(NULL, $edit, t('Update'));
77 $this->assertNodeByTitle($updated_title, 'ief_test_custom');