You are here

class WebformMessageManagerTest in Webform 8.5

Same name and namespace in other branches
  1. 6.x tests/src/Unit/WebformMessageManagerTest.php \Drupal\Tests\webform\Unit\WebformMessageManagerTest

Tests webform message manager.

@group webform

Hierarchy

Expanded class hierarchy of WebformMessageManagerTest

File

tests/src/Unit/WebformMessageManagerTest.php, line 24

Namespace

Drupal\Tests\webform\Unit
View source
class WebformMessageManagerTest extends UnitTestCase {

  /**
   * Test webform message manager.
   */
  public function testMessageManager() {

    // Mock webform.
    $webform = $this
      ->getMockBuilder(WebformInterface::class)
      ->disableOriginalConstructor()
      ->getMock();
    $webform
      ->method('getSettings')
      ->will($this
      ->returnCallback(function () {
      return [
        WebformMessageManagerInterface::DRAFT_PENDING_SINGLE => '{single}',
        WebformMessageManagerInterface::DRAFT_PENDING_MULTIPLE => '[none]',
      ];
    }));

    // Mock url.
    $url = $this
      ->getMockBuilder('\\Drupal\\Core\\Url')
      ->disableOriginalConstructor()
      ->getMock();
    $url
      ->method('toString')
      ->willReturn('http://example.com/');

    /**************************************************************************/

    // Mock current user.
    $current_user = $this
      ->getMockBuilder(AccountInterface::class)
      ->disableOriginalConstructor()
      ->getMock();

    // Mock config factory.
    $config_factory = $this
      ->getConfigFactoryStub([
      'webform.settings' => [
        'html_editor.tidy' => TRUE,
        'html_editor.element_format' => '',
        'element.allowed_tags' => 'p',
      ],
    ]);

    // Mock webform submission storage.
    $webform_submission_storage = $this
      ->getMockBuilder(WebformSubmissionStorageInterface::class)
      ->getMock();

    // Mock entity type manager.
    $entity_type_manager = $this
      ->getMockBuilder(EntityTypeManagerInterface::class)
      ->getMock();
    $entity_type_manager
      ->method('getStorage')
      ->willReturnMap([
      [
        'webform_submission',
        $webform_submission_storage,
      ],
    ]);

    // Mock logger.
    $logger = $this
      ->getMockBuilder(LoggerInterface::class)
      ->disableOriginalConstructor()
      ->getMock();

    // Mock renderer.
    $renderer = $this
      ->getMockBuilder(RendererInterface::class)
      ->disableOriginalConstructor()
      ->getMock();

    // Mock messenger.
    $messenger = $this
      ->getMockBuilder(MessengerInterface::class)
      ->disableOriginalConstructor()
      ->getMock();

    // Mock webform request handler.
    $request_handler = $this
      ->getMockBuilder(WebformRequestInterface::class)
      ->disableOriginalConstructor()
      ->getMock();
    $request_handler
      ->method('getUrl')
      ->willReturn($url);

    // Mock webform token manager.
    $token_manager = $this
      ->getMockBuilder(WebformTokenManagerInterface::class)
      ->disableOriginalConstructor()
      ->getMock();
    $token_manager
      ->method('replace')
      ->will($this
      ->returnCallback(function ($text) {
      return $text;
    }));

    // Mock Drupal's container.
    $container = new ContainerBuilder();
    $container
      ->set('string_translation', $this
      ->getStringTranslationStub());
    $container
      ->set('config.factory', $config_factory);
    \Drupal::setContainer($container);

    // Create webform message manager.
    $message_manager = new WebformMessageManager($current_user, $config_factory, $entity_type_manager, $logger, $renderer, $messenger, $request_handler, $token_manager);

    // Set message manager mock webform.
    $message_manager
      ->setWebform($webform);

    /**************************************************************************/

    // Check custom single message.
    $expected = [
      '#theme' => 'webform_html_editor_markup',
      '#markup' => '{single}',
      '#allowed_tags' => [
        0 => 'p',
      ],
    ];
    $result = $message_manager
      ->get(WebformMessageManagerInterface::DRAFT_PENDING_SINGLE);
    $this
      ->assertEquals($expected, $result);

    // Check [none] for multiple message returns an empty string.
    $result = $message_manager
      ->get(WebformMessageManagerInterface::DRAFT_PENDING_MULTIPLE);
    $this
      ->assertFalse($result);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
PhpunitCompatibilityTrait::getMock Deprecated public function Returns a mock object for the specified class using the available method.
PhpunitCompatibilityTrait::setExpectedException Deprecated public function Compatibility layer for PHPUnit 6 to support PHPUnit 4 code.
UnitTestCase::$randomGenerator protected property The random generator.
UnitTestCase::$root protected property The app root. 1
UnitTestCase::assertArrayEquals protected function Asserts if two arrays are equal by sorting them first.
UnitTestCase::getBlockMockWithMachineName Deprecated protected function Mocks a block with a block plugin. 1
UnitTestCase::getClassResolverStub protected function Returns a stub class resolver.
UnitTestCase::getConfigFactoryStub public function Returns a stub config factory that behaves according to the passed array.
UnitTestCase::getConfigStorageStub public function Returns a stub config storage that returns the supplied configuration.
UnitTestCase::getContainerWithCacheTagsInvalidator protected function Sets up a container with a cache tags invalidator.
UnitTestCase::getRandomGenerator protected function Gets the random generator for the utility methods.
UnitTestCase::getStringTranslationStub public function Returns a stub translation manager that just returns the passed string.
UnitTestCase::randomMachineName public function Generates a unique random string containing letters and numbers.
UnitTestCase::setUp protected function 340
WebformMessageManagerTest::testMessageManager public function Test webform message manager.