Unverified Commit 1950bd5f authored by alexpott's avatar alexpott

Issue #2870444 by Lendude, michielnugter, jonathan1055, borisson_: Convert web...

Issue #2870444 by Lendude, michielnugter, jonathan1055, borisson_: Convert web tests to browser tests for field module
parent 533dfa64
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
namespace Drupal\field\Tests\Views; namespace Drupal\field\Tests\Views;
@trigger_error(__NAMESPACE__ . '\FieldTestBase is deprecated in Drupal 8.6.0 and will be removed before Drupal 9.0.0. Instead, use \Drupal\Tests\field\Functional\Views\FieldTestBase. See https://www.drupal.org/node/2971931.', E_USER_DEPRECATED);
use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldConfig;
use Drupal\node\Entity\NodeType; use Drupal\node\Entity\NodeType;
use Drupal\views\Tests\ViewTestBase; use Drupal\views\Tests\ViewTestBase;
...@@ -17,6 +19,11 @@ ...@@ -17,6 +19,11 @@
* - Use basic fields and make sure that the full wanted object is built. * - Use basic fields and make sure that the full wanted object is built.
* - Use relationships between different entity types, for example node and * - Use relationships between different entity types, for example node and
* the node author(user). * the node author(user).
*
* @deprecated in Drupal 8.6.0. Will be removed before Drupal 9.0.0. Use
* \Drupal\Tests\field\Functional\Views\FieldTestBase instead.
*
* @see https://www.drupal.org/node/2989020
*/ */
abstract class FieldTestBase extends ViewTestBase { abstract class FieldTestBase extends ViewTestBase {
......
<?php <?php
namespace Drupal\field\Tests; namespace Drupal\field_test;
/** /**
* Helper class for \Drupal\field\Tests\FieldDefaultValueCallbackTest. * Helper class for \Drupal\Tests\field\Functional\FieldDefaultValueCallbackTest.
*/ */
class FieldDefaultValueCallbackProvider { class FieldDefaultValueCallbackProvider {
......
<?php <?php
namespace Drupal\field\Tests\Email; namespace Drupal\Tests\field\Functional\Email;
use Drupal\entity_test\Entity\EntityTest; use Drupal\entity_test\Entity\EntityTest;
use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldConfig;
use Drupal\simpletest\WebTestBase;
use Drupal\field\Entity\FieldStorageConfig; use Drupal\field\Entity\FieldStorageConfig;
use Drupal\Tests\BrowserTestBase;
/** /**
* Tests email field functionality. * Tests email field functionality.
* *
* @group field * @group field
*/ */
class EmailFieldTest extends WebTestBase { class EmailFieldTest extends BrowserTestBase {
/** /**
* Modules to enable. * Modules to enable.
...@@ -90,7 +90,7 @@ public function testEmailField() { ...@@ -90,7 +90,7 @@ public function testEmailField() {
"{$field_name}[0][value]" => $value, "{$field_name}[0][value]" => $value,
]; ];
$this->drupalPostForm(NULL, $edit, t('Save')); $this->drupalPostForm(NULL, $edit, t('Save'));
preg_match('|entity_test/manage/(\d+)|', $this->url, $match); preg_match('|entity_test/manage/(\d+)|', $this->getUrl(), $match);
$id = $match[1]; $id = $match[1];
$this->assertText(t('entity_test @id has been created.', ['@id' => $id])); $this->assertText(t('entity_test @id has been created.', ['@id' => $id]));
$this->assertRaw($value); $this->assertRaw($value);
...@@ -99,8 +99,8 @@ public function testEmailField() { ...@@ -99,8 +99,8 @@ public function testEmailField() {
$entity = EntityTest::load($id); $entity = EntityTest::load($id);
$display = entity_get_display($entity->getEntityTypeId(), $entity->bundle(), 'full'); $display = entity_get_display($entity->getEntityTypeId(), $entity->bundle(), 'full');
$content = $display->build($entity); $content = $display->build($entity);
$this->setRawContent(\Drupal::service('renderer')->renderRoot($content)); $rendered_content = (string) \Drupal::service('renderer')->renderRoot($content);
$this->assertLinkByHref('mailto:test@example.com'); $this->assertContains('href="mailto:test@example.com"', $rendered_content);
} }
} }
<?php <?php
namespace Drupal\field\Tests\EntityReference; namespace Drupal\Tests\field\Functional\EntityReference;
use Drupal\Core\Field\FieldStorageDefinitionInterface; use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldConfig;
use Drupal\simpletest\WebTestBase;
use Drupal\field\Entity\FieldStorageConfig; use Drupal\field\Entity\FieldStorageConfig;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\TestFileCreationTrait;
/** /**
* Tests an autocomplete widget with file upload. * Tests an autocomplete widget with file upload.
* *
* @group entity_reference * @group entity_reference
*/ */
class EntityReferenceFileUploadTest extends WebTestBase { class EntityReferenceFileUploadTest extends BrowserTestBase {
use TestFileCreationTrait;
public static $modules = ['entity_reference', 'node', 'file']; public static $modules = ['entity_reference', 'node', 'file'];
...@@ -113,7 +116,7 @@ public function testFileUpload() { ...@@ -113,7 +116,7 @@ public function testFileUpload() {
$user1 = $this->drupalCreateUser(['access content', "create $this->referencingType content"]); $user1 = $this->drupalCreateUser(['access content', "create $this->referencingType content"]);
$this->drupalLogin($user1); $this->drupalLogin($user1);
$test_file = current($this->drupalGetTestFiles('text')); $test_file = current($this->getTestFiles('text'));
$edit['files[file_field_0]'] = \Drupal::service('file_system')->realpath($test_file->uri); $edit['files[file_field_0]'] = \Drupal::service('file_system')->realpath($test_file->uri);
$this->drupalPostForm('node/add/' . $this->referencingType, $edit, 'Upload'); $this->drupalPostForm('node/add/' . $this->referencingType, $edit, 'Upload');
$this->assertResponse(200); $this->assertResponse(200);
......
<?php <?php
namespace Drupal\field\Tests; namespace Drupal\Tests\field\Functional;
use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig; use Drupal\field\Entity\FieldStorageConfig;
use Drupal\simpletest\WebTestBase; use Drupal\Tests\BrowserTestBase;
/** /**
* Tests the default value callback. * Tests the default value callback.
* *
* @group field * @group field
*/ */
class FieldDefaultValueCallbackTest extends WebTestBase { class FieldDefaultValueCallbackTest extends BrowserTestBase {
/** /**
* Modules to enable. * Modules to enable.
...@@ -81,7 +81,7 @@ public function testDefaultValueCallbackForm() { ...@@ -81,7 +81,7 @@ public function testDefaultValueCallbackForm() {
// Set a default value callback instead, and the default field form should // Set a default value callback instead, and the default field form should
// not be visible. // not be visible.
$field_config->setDefaultValueCallback('\Drupal\field\Tests\FieldDefaultValueCallbackProvider::calculateDefaultValue')->save(); $field_config->setDefaultValueCallback('\Drupal\field_test\FieldDefaultValueCallbackProvider::calculateDefaultValue')->save();
$this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_test'); $this->drupalGet('/admin/structure/types/manage/article/fields/node.article.field_test');
$this->assertNoFieldByName('default_value_input[field_test][0][value]', 'Calculated default value', 'The default field form is not visible when a callback is defined.'); $this->assertNoFieldByName('default_value_input[field_test][0][value]', 'Calculated default value', 'The default field form is not visible when a callback is defined.');
} }
......
<?php <?php
namespace Drupal\field\Tests; namespace Drupal\Tests\field\Functional;
use Drupal\entity_test\Entity\EntityTest; use Drupal\entity_test\Entity\EntityTest;
use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldConfig;
......
<?php <?php
namespace Drupal\field\Tests; namespace Drupal\Tests\field\Functional;
use Drupal\Component\Utility\Html; use Drupal\Component\Utility\Html;
use Drupal\Core\Entity\Entity\EntityFormDisplay; use Drupal\Core\Entity\Entity\EntityFormDisplay;
...@@ -131,7 +131,7 @@ public function testFieldFormSingle() { ...@@ -131,7 +131,7 @@ public function testFieldFormSingle() {
"{$field_name}[0][value]" => $value, "{$field_name}[0][value]" => $value,
]; ];
$this->drupalPostForm(NULL, $edit, t('Save')); $this->drupalPostForm(NULL, $edit, t('Save'));
preg_match('|entity_test/manage/(\d+)|', $this->url, $match); preg_match('|entity_test/manage/(\d+)|', $this->getUrl(), $match);
$id = $match[1]; $id = $match[1];
$this->assertText(t('entity_test @id has been created.', ['@id' => $id]), 'Entity was created'); $this->assertText(t('entity_test @id has been created.', ['@id' => $id]), 'Entity was created');
$entity = EntityTest::load($id); $entity = EntityTest::load($id);
...@@ -190,7 +190,7 @@ public function testFieldFormDefaultValue() { ...@@ -190,7 +190,7 @@ public function testFieldFormDefaultValue() {
"{$field_name}[0][value]" => '', "{$field_name}[0][value]" => '',
]; ];
$this->drupalPostForm(NULL, $edit, t('Save')); $this->drupalPostForm(NULL, $edit, t('Save'));
preg_match('|entity_test/manage/(\d+)|', $this->url, $match); preg_match('|entity_test/manage/(\d+)|', $this->getUrl(), $match);
$id = $match[1]; $id = $match[1];
$this->assertText(t('entity_test @id has been created.', ['@id' => $id]), 'Entity was created.'); $this->assertText(t('entity_test @id has been created.', ['@id' => $id]), 'Entity was created.');
$entity = EntityTest::load($id); $entity = EntityTest::load($id);
...@@ -219,7 +219,7 @@ public function testFieldFormSingleRequired() { ...@@ -219,7 +219,7 @@ public function testFieldFormSingleRequired() {
"{$field_name}[0][value]" => $value, "{$field_name}[0][value]" => $value,
]; ];
$this->drupalPostForm(NULL, $edit, t('Save')); $this->drupalPostForm(NULL, $edit, t('Save'));
preg_match('|entity_test/manage/(\d+)|', $this->url, $match); preg_match('|entity_test/manage/(\d+)|', $this->getUrl(), $match);
$id = $match[1]; $id = $match[1];
$this->assertText(t('entity_test @id has been created.', ['@id' => $id]), 'Entity was created'); $this->assertText(t('entity_test @id has been created.', ['@id' => $id]), 'Entity was created');
$entity = EntityTest::load($id); $entity = EntityTest::load($id);
...@@ -300,7 +300,7 @@ public function testFieldFormUnlimited() { ...@@ -300,7 +300,7 @@ public function testFieldFormUnlimited() {
// Submit the form and create the entity. // Submit the form and create the entity.
$this->drupalPostForm(NULL, $edit, t('Save')); $this->drupalPostForm(NULL, $edit, t('Save'));
preg_match('|entity_test/manage/(\d+)|', $this->url, $match); preg_match('|entity_test/manage/(\d+)|', $this->getUrl(), $match);
$id = $match[1]; $id = $match[1];
$this->assertText(t('entity_test @id has been created.', ['@id' => $id]), 'Entity was created'); $this->assertText(t('entity_test @id has been created.', ['@id' => $id]), 'Entity was created');
$entity = EntityTest::load($id); $entity = EntityTest::load($id);
...@@ -418,7 +418,7 @@ public function testFieldFormMultipleWidget() { ...@@ -418,7 +418,7 @@ public function testFieldFormMultipleWidget() {
$field_name => '1, 2, 3', $field_name => '1, 2, 3',
]; ];
$this->drupalPostForm(NULL, $edit, t('Save')); $this->drupalPostForm(NULL, $edit, t('Save'));
preg_match('|entity_test/manage/(\d+)|', $this->url, $match); preg_match('|entity_test/manage/(\d+)|', $this->getUrl(), $match);
$id = $match[1]; $id = $match[1];
// Check that the values were saved. // Check that the values were saved.
...@@ -498,7 +498,7 @@ public function testFieldFormAccess() { ...@@ -498,7 +498,7 @@ public function testFieldFormAccess() {
"{$field_name}[0][value]" => 1, "{$field_name}[0][value]" => 1,
]; ];
$this->drupalPostForm(NULL, $edit, t('Save')); $this->drupalPostForm(NULL, $edit, t('Save'));
preg_match("|$entity_type/manage/(\d+)|", $this->url, $match); preg_match("|$entity_type/manage/(\d+)|", $this->getUrl(), $match);
$id = $match[1]; $id = $match[1];
// Check that the default value was saved. // Check that the default value was saved.
...@@ -554,7 +554,7 @@ public function testHiddenField() { ...@@ -554,7 +554,7 @@ public function testHiddenField() {
// the field that uses the hidden widget. // the field that uses the hidden widget.
$this->assertNoField("{$field_name}[0][value]", 'The field does not appear in the form'); $this->assertNoField("{$field_name}[0][value]", 'The field does not appear in the form');
$this->drupalPostForm(NULL, [], t('Save')); $this->drupalPostForm(NULL, [], t('Save'));
preg_match('|' . $entity_type . '/manage/(\d+)|', $this->url, $match); preg_match('|' . $entity_type . '/manage/(\d+)|', $this->getUrl(), $match);
$id = $match[1]; $id = $match[1];
$this->assertText(t('entity_test_rev @id has been created.', ['@id' => $id]), 'Entity was created'); $this->assertText(t('entity_test_rev @id has been created.', ['@id' => $id]), 'Entity was created');
$storage = $this->container->get('entity_type.manager') $storage = $this->container->get('entity_type.manager')
......
<?php
namespace Drupal\Tests\field\Functional\Views;
use Drupal\field\Entity\FieldConfig;
use Drupal\node\Entity\NodeType;
use Drupal\Tests\views\Functional\ViewTestBase;
use Drupal\views\Tests\ViewTestData;
use Drupal\field\Entity\FieldStorageConfig;
/**
* Provides some helper methods for testing fieldapi integration into views.
*
* @todo Test on a generic entity not on a node. What has to be tested:
* - Make sure that every wanted field is added to the according entity type.
* - Make sure the joins are done correctly.
* - Use basic fields and make sure that the full wanted object is built.
* - Use relationships between different entity types, for example node and
* the node author(user).
*/
abstract class FieldTestBase extends ViewTestBase {
/**
* Modules to enable.
*
* @var array
*/
public static $modules = ['node', 'field_test_views'];
/**
* Stores the field definitions used by the test.
*
* @var array
*/
public $fieldStorages;
/**
* Stores the fields of the field storage. They have the same keys as the
* field storages.
*
* @var array
*/
public $fields;
protected function setUp($import_test_views = TRUE) {
parent::setUp($import_test_views);
// Ensure the page node type exists.
NodeType::create([
'type' => 'page',
'name' => 'page',
])->save();
ViewTestData::createTestViews(get_class($this), ['field_test_views']);
}
public function setUpFieldStorages($amount = 3, $type = 'string') {
// Create three fields.
$field_names = [];
for ($i = 0; $i < $amount; $i++) {
$field_names[$i] = 'field_name_' . $i;
$this->fieldStorages[$i] = FieldStorageConfig::create([
'field_name' => $field_names[$i],
'entity_type' => 'node',
'type' => $type,
]);
$this->fieldStorages[$i]->save();
}
return $field_names;
}
public function setUpFields($bundle = 'page') {
foreach ($this->fieldStorages as $key => $field_storage) {
$this->fields[$key] = FieldConfig::create([
'field_storage' => $field_storage,
'bundle' => $bundle,
]);
$this->fields[$key]->save();
}
}
}
<?php <?php
namespace Drupal\field\Tests\Views; namespace Drupal\Tests\field\Functional\Views;
use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig; use Drupal\field\Entity\FieldStorageConfig;
...@@ -58,7 +58,7 @@ public function testHandlerUI() { ...@@ -58,7 +58,7 @@ public function testHandlerUI() {
// Tests the available formatter options. // Tests the available formatter options.
$result = $this->xpath('//select[@id=:id]/option', [':id' => 'edit-options-type']); $result = $this->xpath('//select[@id=:id]/option', [':id' => 'edit-options-type']);
$options = array_map(function ($item) { $options = array_map(function ($item) {
return (string) $item->attributes()->value[0]; return $item->getAttribute('value');
}, $result); }, $result);
// @todo Replace this sort by assertArray once it's in. // @todo Replace this sort by assertArray once it's in.
sort($options, SORT_STRING); sort($options, SORT_STRING);
...@@ -112,7 +112,7 @@ public function testHandlerUIAggregation() { ...@@ -112,7 +112,7 @@ public function testHandlerUIAggregation() {
// Tests the available formatter options. // Tests the available formatter options.
$result = $this->xpath('//select[@id=:id]/option', [':id' => 'edit-options-click-sort-column']); $result = $this->xpath('//select[@id=:id]/option', [':id' => 'edit-options-click-sort-column']);
$options = array_map(function ($item) { $options = array_map(function ($item) {
return (string) $item->attributes()->value[0]; return (string) $item->getAttribute('value');
}, $result); }, $result);
sort($options, SORT_STRING); sort($options, SORT_STRING);
...@@ -143,15 +143,15 @@ public function testBooleanFilterHandler() { ...@@ -143,15 +143,15 @@ public function testBooleanFilterHandler() {
// Verify that using a boolean field as a filter also results in using the // Verify that using a boolean field as a filter also results in using the
// boolean plugin. // boolean plugin.
$option = $this->xpath('//label[@for="edit-options-value-1"]'); $option = $this->xpath('//label[@for="edit-options-value-1"]');
$this->assertEqual(t('True'), (string) $option[0]); $this->assertEqual(t('True'), $option[0]->getText());
$option = $this->xpath('//label[@for="edit-options-value-0"]'); $option = $this->xpath('//label[@for="edit-options-value-0"]');
$this->assertEqual(t('False'), (string) $option[0]); $this->assertEqual(t('False'), $option[0]->getText());
// Expose the filter and see if the 'Any' option is added and if we can save // Expose the filter and see if the 'Any' option is added and if we can save
// it. // it.
$this->drupalPostForm(NULL, [], 'Expose filter'); $this->drupalPostForm(NULL, [], 'Expose filter');
$option = $this->xpath('//label[@for="edit-options-value-all"]'); $option = $this->xpath('//label[@for="edit-options-value-all"]');
$this->assertEqual(t('- Any -'), (string) $option[0]); $this->assertEqual(t('- Any -'), $option[0]->getText());
$this->drupalPostForm(NULL, ['options[value]' => 'All', 'options[expose][required]' => FALSE], 'Apply'); $this->drupalPostForm(NULL, ['options[value]' => 'All', 'options[expose][required]' => FALSE], 'Apply');
$this->drupalPostForm(NULL, [], 'Save'); $this->drupalPostForm(NULL, [], 'Save');
$this->drupalGet('/admin/structure/views/nojs/handler/test_view_fieldapi/default/filter/field_boolean_value'); $this->drupalGet('/admin/structure/views/nojs/handler/test_view_fieldapi/default/filter/field_boolean_value');
......
<?php <?php
namespace Drupal\field\Tests\Views; namespace Drupal\Tests\field\Functional\Views;
use Drupal\Core\Field\FieldStorageDefinitionInterface; use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\views\ViewExecutable; use Drupal\views\ViewExecutable;
......
<?php <?php
namespace Drupal\field\Tests; namespace Drupal\Tests\field\Functional;
use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldConfig;
use Drupal\simpletest\WebTestBase;
use Drupal\field\Entity\FieldStorageConfig; use Drupal\field\Entity\FieldStorageConfig;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\Traits\Core\CronRunTrait;
/** /**
* Tests the behavior of a field module after being disabled and re-enabled. * Tests the behavior of a field module after being disabled and re-enabled.
* *
* @group field * @group field
*/ */
class reEnableModuleFieldTest extends WebTestBase { class reEnableModuleFieldTest extends BrowserTestBase {
use CronRunTrait;
/** /**
* Modules to enable. * Modules to enable.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment