Chris@0: drupalLogin($this->drupalCreateUser([ Chris@0: 'view test entity', Chris@0: 'administer entity_test content', Chris@0: 'administer content types', Chris@0: ])); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests email field. Chris@0: */ Chris@0: public function testEmailField() { Chris@0: // Create a field with settings to validate. Chris@0: $field_name = Unicode::strtolower($this->randomMachineName()); Chris@0: $this->fieldStorage = FieldStorageConfig::create([ Chris@0: 'field_name' => $field_name, Chris@0: 'entity_type' => 'entity_test', Chris@0: 'type' => 'email', Chris@0: ]); Chris@0: $this->fieldStorage->save(); Chris@0: $this->field = FieldConfig::create([ Chris@0: 'field_storage' => $this->fieldStorage, Chris@0: 'bundle' => 'entity_test', Chris@0: ]); Chris@0: $this->field->save(); Chris@0: Chris@0: // Create a form display for the default form mode. Chris@0: entity_get_form_display('entity_test', 'entity_test', 'default') Chris@0: ->setComponent($field_name, [ Chris@0: 'type' => 'email_default', Chris@0: 'settings' => [ Chris@0: 'placeholder' => 'example@example.com', Chris@0: ], Chris@0: ]) Chris@0: ->save(); Chris@0: // Create a display for the full view mode. Chris@0: entity_get_display('entity_test', 'entity_test', 'full') Chris@0: ->setComponent($field_name, [ Chris@0: 'type' => 'email_mailto', Chris@0: ]) Chris@0: ->save(); Chris@0: Chris@0: // Display creation form. Chris@0: $this->drupalGet('entity_test/add'); Chris@0: $this->assertFieldByName("{$field_name}[0][value]", '', 'Widget found.'); Chris@0: $this->assertRaw('placeholder="example@example.com"'); Chris@0: Chris@0: // Submit a valid email address and ensure it is accepted. Chris@0: $value = 'test@example.com'; Chris@0: $edit = [ Chris@0: "{$field_name}[0][value]" => $value, Chris@0: ]; Chris@0: $this->drupalPostForm(NULL, $edit, t('Save')); Chris@0: preg_match('|entity_test/manage/(\d+)|', $this->url, $match); Chris@0: $id = $match[1]; Chris@0: $this->assertText(t('entity_test @id has been created.', ['@id' => $id])); Chris@0: $this->assertRaw($value); Chris@0: Chris@0: // Verify that a mailto link is displayed. Chris@0: $entity = EntityTest::load($id); Chris@0: $display = entity_get_display($entity->getEntityTypeId(), $entity->bundle(), 'full'); Chris@0: $content = $display->build($entity); Chris@0: $this->setRawContent(\Drupal::service('renderer')->renderRoot($content)); Chris@0: $this->assertLinkByHref('mailto:test@example.com'); Chris@0: } Chris@0: Chris@0: }