message_digest-8.x-1.x-dev/tests/src/Functional/Form/MessageDigestIntervalFormTest.php

tests/src/Functional/Form/MessageDigestIntervalFormTest.php
<?php

namespace Drupal\Tests\message_digest\Functional\Form;

use Drupal\message_digest\Entity\MessageDigestInterval;
use Drupal\Tests\BrowserTestBase;

/**
 * Tests the message digest interval UI and forms.
 *
 * @group message_digest
 */
class MessageDigestIntervalFormTest extends BrowserTestBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = ['block', 'message_digest', 'system'];

  /**
   * {@inheritdoc}
   */
  protected $defaultTheme = 'stark';

  /**
   * An admin user.
   *
   * @var \Drupal\user\UserInterface
   */
  protected $adminUser;

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();

    // Skip UID 1.
    $this->createUser();

    $this->adminUser = $this->createUser([
      'access administration pages',
      'administer message digest',
      'administer message templates',
    ]);

    $this->placeBlock('local_actions_block');
  }

  /**
   * Tests CRUD operations.
   */
  public function testCrud() {
    $this->drupalLogin($this->adminUser);

    $this->drupalGet('/admin/config/message');
    $this->clickLink('Message digest intervals');
    $this->clickLink('Add digest interval');

    $edit = [
      'id' => 'bi_weekly',
      'label' => 'Every 2 weeks',
      'interval' => '2 weeks',
      'description' => 'Send digests every 2 weeks',
    ];
    $this->submitForm($edit, 'Save');

    /** @var \Drupal\message_digest\Entity\MessageDigestIntervalInterface $config */
    $config = MessageDigestInterval::load('bi_weekly');
    $this->assertEquals('2 weeks', $config->getInterval());
    $this->assertEquals('Every 2 weeks', $config->label());
    $this->assertEquals('Send digests every 2 weeks', $config->getDescription());

    $this->assertSession()->pageTextContains('Interval Every 2 weeks has been added.');
    $this->assertSession()->addressEquals($config->toUrl('collection')->setAbsolute(TRUE)->toString());
    $this->assertSession()->pageTextContains('Every 2 weeks');

    // Edit the interval.
    $this->drupalGet($config->toUrl('edit-form'));
    $edit = [
      'label' => 'Every 14 days',
    ];
    $this->submitForm($edit, 'Save');
    $this->assertSession()->addressEquals($config->toUrl('collection')->setAbsolute(TRUE)->toString());
    $this->assertSession()->pageTextContains('Interval Every 14 days has been updated.');

    // Try an invalid interval.
    $this->drupalGet($config->toUrl('edit-form'));
    $edit = [
      'interval' => '42 bananas',
    ];
    $this->submitForm($edit, 'Save');
    $this->assertSession()->pageTextContains('The interval 42 bananas is invalid');

    // Delete the interval.
    $this->drupalGet($config->toUrl('delete-form'));
    $this->assertSession()->pageTextContains('Delete Every 14 days interval? This action cannot be undone.');
    $this->submitForm([], 'Delete interval');
    $this->assertSession()->pageTextContains('The Every 14 days message digest interval has been deleted.');
    $this->assertSession()->addressEquals($config->toUrl('collection')->setAbsolute(TRUE)->toString());
    \Drupal::entityTypeManager()->getStorage('message_digest_interval')->resetCache();
    $this->assertNull(MessageDigestInterval::load('bi_weekly'), 'The interval was not deleted.');
  }

}

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

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