Add automated tests for map form element.
This commit is contained in:
parent
0516346d23
commit
26c9746681
|
@ -0,0 +1,8 @@
|
|||
langcode: en
|
||||
status: true
|
||||
id: test
|
||||
label: Test
|
||||
description: ''
|
||||
name_pattern: 'Test log [log:id]'
|
||||
workflow: log_default
|
||||
new_revision: true
|
|
@ -0,0 +1,10 @@
|
|||
name: farmOS map tests
|
||||
type: module
|
||||
description: Support module for farmOS map testing.
|
||||
package: Testing
|
||||
core_version_requirement: ^8.8 || ^9
|
||||
dependencies:
|
||||
- farm:farm_location
|
||||
- farm:farm_map
|
||||
- farm:farm_quick
|
||||
- log:log
|
|
@ -0,0 +1,67 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\farm_map_test\Plugin\QuickForm;
|
||||
|
||||
use Drupal\Core\Form\FormStateInterface;
|
||||
use Drupal\farm_quick\Plugin\QuickForm\QuickFormBase;
|
||||
use Drupal\farm_quick\Traits\QuickLogTrait;
|
||||
|
||||
/**
|
||||
* Test quick form.
|
||||
*
|
||||
* @QuickForm(
|
||||
* id = "test",
|
||||
* label = @Translation("Test quick form"),
|
||||
* description = @Translation("Test quick form description."),
|
||||
* helpText = @Translation("Test quick form help text."),
|
||||
* permissions = {
|
||||
* "create test log",
|
||||
* }
|
||||
* )
|
||||
*/
|
||||
class Test extends QuickFormBase {
|
||||
|
||||
use QuickLogTrait;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function buildForm(array $form, FormStateInterface $form_state) {
|
||||
|
||||
// Geometry field with a default value and no raw data textfield.
|
||||
$form['geometry1'] = [
|
||||
'#type' => 'farm_map_wkt',
|
||||
'#title' => $this->t('Geometry 1'),
|
||||
'#display_raw_geometry' => FALSE,
|
||||
'#default_value' => 'POINT(-42.689862437640826 32.621823310499934)',
|
||||
];
|
||||
|
||||
// Geometry field without a default value and a raw data field.
|
||||
$form['geometry2'] = [
|
||||
'#type' => 'farm_map_wkt',
|
||||
'#title' => $this->t('Geometry 2'),
|
||||
'#display_raw_geometry' => TRUE,
|
||||
];
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function submitForm(array &$form, FormStateInterface $form_state) {
|
||||
|
||||
// Create two logs.
|
||||
$this->createLog([
|
||||
'type' => 'test',
|
||||
'name' => 'Test 1',
|
||||
'geometry' => $form_state->getValue('geometry1'),
|
||||
]);
|
||||
$this->createLog([
|
||||
'type' => 'test',
|
||||
'name' => 'Test 2',
|
||||
'geometry' => $form_state->getValue('geometry2'),
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\farm_map\Functional;
|
||||
|
||||
use Drupal\Core\StringTranslation\StringTranslationTrait;
|
||||
use Drupal\Tests\farm_test\Functional\FarmBrowserTestBase;
|
||||
|
||||
/**
|
||||
* Tests the farmOS map form element.
|
||||
*
|
||||
* @group farm
|
||||
*/
|
||||
class MapFormTest extends FarmBrowserTestBase {
|
||||
|
||||
use StringTranslationTrait;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected static $modules = [
|
||||
'farm_map_test',
|
||||
];
|
||||
|
||||
/**
|
||||
* Test the farmOS map form element.
|
||||
*/
|
||||
public function testMapForm() {
|
||||
|
||||
// Create and login a test user with permission to create test logs.
|
||||
$user = $this->createUser(['create test log']);
|
||||
$this->drupalLogin($user);
|
||||
|
||||
// Go to the test quick form and confirm that both of the geometry fields
|
||||
// are visible.
|
||||
$this->drupalGet('quick/test');
|
||||
$this->assertSession()->statusCodeEquals(200);
|
||||
$this->assertSession()->pageTextContains($this->t('Geometry 1'));
|
||||
$this->assertSession()->pageTextContains($this->t('Geometry 2'));
|
||||
|
||||
// Submit the form with a value for the second geometry.
|
||||
$edit = ['geometry2[value]' => 'POINT(-45.967095060886315 32.77503850904169)'];
|
||||
$this->submitForm($edit, 'Submit');
|
||||
|
||||
// Load logs.
|
||||
$logs = \Drupal::entityTypeManager()->getStorage('log')->loadMultiple();
|
||||
|
||||
// Confirm that two logs were created.
|
||||
$this->assertCount(2, $logs);
|
||||
|
||||
// Check that the first log's geometry was populated with the form field's
|
||||
// default value.
|
||||
$log = $logs[1];
|
||||
$this->assertEquals('POINT(-42.689862437640826 32.621823310499934)', $log->get('geometry')->value);
|
||||
|
||||
// Check that the second log's geometry field was populated with the value
|
||||
// entered into the form.
|
||||
$log = $logs[2];
|
||||
$this->assertEquals('POINT(-45.967095060886315 32.77503850904169)', $log->get('geometry')->value);
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue