workflow_participants-8.x-2.x-dev/tests/src/Functional/AdminUiNotificationsTest.php

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

namespace Drupal\Tests\workflow_participants\Functional;

use Drupal\content_moderation_notifications\ContentModerationNotificationInterface;
use Drupal\content_moderation_notifications\Entity\ContentModerationNotification;
use Drupal\user\Entity\Role;

/**
 * Tests admin UI with content moderation notifications enabled.
 *
 * @group workflow_participants
 *
 * @requires module content_moderation_notifications
 */
class AdminUiNotificationsTest extends TestBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = ['content_moderation_notifications'];

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

    foreach ($this->adminUser->getRoles(TRUE) as $role_id) {
      /** @var \Drupal\user\RoleInterface $role */
      $role = Role::load($role_id);
      $role->grantPermission('administer content moderation notifications');
      $role->save();
    }
  }

  /**
   * Tests 3rd-party settings on the content moderation notifications form.
   */
  public function testNotifications() {
    // Add a notification.
    $this->drupalGet('admin/config/workflow/notifications/add');
    $edit = [
      'id' => mb_strtolower($this->randomMachineName()),
      'label' => $this->randomString(),
      'subject' => $this->randomString(),
      'transitions[create_new_draft]' => TRUE,
      'transitions[archive]' => TRUE,
      'workflow_participants[editors]' => TRUE,
      'workflow_participants[reviewers]' => TRUE,
    ];
    $this->submitForm($edit, 'Create Notification');

    /** @var \Drupal\content_moderation_notifications\ContentModerationNotificationInterface $notification */
    $notification = ContentModerationNotification::load($edit['id']);
    $this->assertInstanceOf(ContentModerationNotificationInterface::class, $notification, 'Failed to save the notification.');
    $this->assertTrue($notification->getThirdPartySetting('workflow_participants', 'editors', FALSE));
    $this->assertTrue($notification->getThirdPartySetting('workflow_participants', 'reviewers', FALSE));

    $edit = [
      'workflow_participants[editors]' => FALSE,
    ];
    $this->drupalGet($notification->toUrl('edit-form'));
    $this->submitForm($edit, 'Update Notification');
    $notification = ContentModerationNotification::load($notification->id());
    $this->assertFalse($notification->getThirdPartySetting('workflow_participants', 'editors', FALSE));
    $this->assertTrue($notification->getThirdPartySetting('workflow_participants', 'reviewers', FALSE));

    $edit = [
      'workflow_participants[reviewers]' => FALSE,
    ];
    $this->drupalGet($notification->toUrl('edit-form'));
    $this->submitForm($edit, 'Update Notification');
    $notification = ContentModerationNotification::load($notification->id());
    $this->assertFalse($notification->getThirdPartySetting('workflow_participants', 'editors', FALSE));
    $this->assertFalse($notification->getThirdPartySetting('workflow_participants', 'reviewers', FALSE));

  }

}

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

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