entity_legal-4.0.x-dev/tests/src/Functional/EntityLegalDocumentTest.php

tests/src/Functional/EntityLegalDocumentTest.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\entity_legal\Functional;

use Drupal\entity_legal\Entity\EntityLegalDocument;

/**
 * Tests admin functionality for the legal document entity.
 *
 * @group entity_legal
 */
class EntityLegalDocumentTest extends EntityLegalTestBase {

  /**
   * Test the overview page contains a list of entities.
   */
  public function testAdminOverviewUi(): void {
    // Create 3 legal documents.
    $documents = [];
    for ($i = 0; $i < 3; $i++) {
      $documents[] = $this->createDocument();
    }
    $this->drupalLogin($this->adminUser);
    $this->drupalGet('admin/structure/legal');

    $assert = $this->assertSession();

    /** @var \Drupal\entity_legal\Entity\EntityLegalDocument $document */
    foreach ($documents as $document) {
      $assert->responseContains($document->label());
      $assert->linkByHrefExists('/admin/structure/legal/manage/' . $document->id());
    }

    $assert->linkByHrefExists('/admin/structure/legal/add');
  }

  /**
   * Test the functionality of the create form.
   */
  public function testCreateForm(): void {
    $test_label = $this->randomMachineName();
    $test_id = $this->randomMachineName();

    $this->drupalLogin($this->adminUser);
    $this->drupalGet('admin/structure/legal/add');
    $this->submitForm([
      'label' => $test_label,
      'id' => $test_id,
      'settings[new_users][require]' => 1,
      'settings[new_users][require_method]' => 'form_inline',
      'settings[existing_users][require]' => 1,
      'settings[existing_users][require_method]' => 'redirect',
    ], 'Save');

    /** @var \Drupal\entity_legal\EntityLegalDocumentInterface $created_document */
    $created_document = EntityLegalDocument::load($test_id);

    $this->assertNotNull($created_document);

    if ($created_document) {
      $this->assertSame($test_label, $created_document->label());
      $this->assertSame($test_id, $created_document->id());
      $this->assertTrue($created_document->get('require_signup'));
      $this->assertTrue($created_document->get('require_existing'));
      $this->assertSame('form_inline', $created_document->get('settings')['new_users']['require_method']);
      $this->assertSame('redirect', $created_document->get('settings')['existing_users']['require_method']);
    }
  }

  /**
   * Test the functionality of the edit form.
   */
  public function testEditForm(): void {
    $document = $this->createDocument(TRUE, TRUE, [
      'new_users' => [
        'require_method' => 'form_inline',
      ],
      'existing_users' => [
        'require_method' => 'redirect',
      ],
    ]);

    $this->drupalLogin($this->adminUser);
    $this->drupalGet('admin/structure/legal/manage/' . $document->id());

    $assert = $this->assertSession();

    // Test field default values.
    $assert->fieldValueEquals('label', $document->label());
    $assert->fieldValueEquals('settings[new_users][require]', '1');
    $assert->fieldValueEquals('settings[new_users][require_method]', 'form_inline');
    $assert->fieldValueEquals('settings[existing_users][require]', '1');
    $assert->fieldValueEquals('settings[existing_users][require_method]', 'redirect');

    // Test that changing values saves correctly.
    $new_label = $this->randomMachineName();
    $this->submitForm([
      'label' => $new_label,
      'settings[new_users][require]' => FALSE,
      'settings[new_users][require_method]' => 'form_link',
      'settings[existing_users][require]' => FALSE,
      'settings[existing_users][require_method]' => 'popup',
    ], 'Save');

    $document = EntityLegalDocument::load($document->id());

    $this->assertSame($new_label, $document->label());
    $this->assertFalse($document->get('require_signup'));
    $this->assertFalse($document->get('require_existing'));
    $this->assertSame('form_link', $document->get('settings')['new_users']['require_method']);
    $this->assertSame('popup', $document->get('settings')['existing_users']['require_method']);
  }

  /**
   * Test the functionality of the delete form.
   */
  public function testDeleteForm(): void {
    $document = $this->createDocument();

    $document_name = $document->id();

    // Log in and check for existence of the created document.
    $this->drupalLogin($this->adminUser);
    $this->drupalGet('admin/structure/legal');
    $assert = $this->assertSession();

    $assert->responseContains($document_name);

    // Delete the document.
    $this->drupalGet('admin/structure/legal/manage/' . $document_name . '/delete');
    $this->submitForm([], 'Delete');

    // Ensure document no longer exists on the overview page.
    $assert->addressEquals('admin/structure/legal');
    $assert->pageTextNotContains($document_name);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc