forms_steps-8.x-1.4/tests/src/Functional/FormsStepsNavigationTest.php
tests/src/Functional/FormsStepsNavigationTest.php
<?php namespace Drupal\Tests\forms_steps\Functional; use Drupal\Tests\BrowserTestBase; use Drupal\Tests\forms_steps\Traits\FormsStepsTestTrait; /** * Functional tests for Forms Steps. * * @package Drupal\Tests\forms_steps\Unit * @coversClass \Drupal\forms_steps\Service\FormsStepsManager * @requires module forms_steps * @group forms_steps */ class FormsStepsNavigationTest extends BrowserTestBase { use FormsStepsTestTrait; /** * Default theme to use for the functional tests. * * @var string */ protected $defaultTheme = 'stark'; /** * Modules to install. * * @var array */ protected static $modules = [ 'node', 'entity_test', 'field', 'field_ui', 'forms_steps', ]; /** * Setup the env for current test using trait methods. */ protected function setUp(): void { parent::setUp(); $this->formsStepsSetup(); $this->formsModesCreation(); } /** * Test the navigation in steps. */ public function testNavigation() { // @todo Seems that we have a bug in core, new form class not correctly. // defined coz of cache. drupal_flush_all_caches(); // Access the step 1. $this->drupalGet($this->data['forms_steps']['steps'][1]['url']); // Check status code. $this->assertSession()->statusCodeEquals(200); $this->assertSession() ->pageTextContains($this->data['forms_steps']['steps'][1]['label']); $value = 'This is an article Test Titre content'; $this->submitForm([ 'title[0][value]' => $value, ], t('Save')); // Access step 2. $this->assertSession() ->pageTextContains($this->data['forms_steps']['steps'][2]['label']); $this->assertStringContainsStringIgnoringCase($this->data['forms_steps']['steps'][2]['url'], $this->getUrl()); $this->assertSession()->pageTextContains($value); $value2 = 'This is an article Test Titre content 2'; $this->submitForm([ 'title[0][value]' => $value2, ], t('Save')); // Access step 3. $this->assertSession() ->pageTextContains($this->data['forms_steps']['steps'][3]['label']); $this->assertStringContainsStringIgnoringCase($this->data['forms_steps']['steps'][3]['url'], $this->getUrl()); $value3 = 'This is a page Test Titre content'; $this->submitForm([ 'title[0][value]' => $value3, ], t('Save')); // Access step 4. $this->assertSession() ->pageTextContains($this->data['forms_steps']['steps'][4]['label']); $this->assertStringContainsStringIgnoringCase($this->data['forms_steps']['steps'][4]['url'], $this->getUrl()); $this->assertSession()->fieldExists('title[0][value]'); $this->assertSession()->buttonExists('Previous'); $this->assertSession()->fieldValueEquals('title[0][value]', $value2); // Access step 3. $this->submitForm([], 'Previous'); $this->assertSession() ->pageTextContains($this->data['forms_steps']['steps'][3]['label']); $this->assertSession()->fieldValueEquals('title[0][value]', $value3); // Access step 2. $this->submitForm([], 'Previous'); $this->assertSession() ->pageTextContains($this->data['forms_steps']['steps'][2]['label']); $this->assertSession()->fieldValueEquals('title[0][value]', $value2); // Access step 1. $this->submitForm([], 'Previous'); $this->assertSession() ->pageTextContains($this->data['forms_steps']['steps'][1]['label']); $this->assertSession()->fieldValueEquals('title[0][value]', $value2); $this->assertSession()->buttonNotExists('Previous'); } }