/**
  * Tests the sendMailMessages method.
  *
  * @dataProvider getSendMailMessages
  *
  * @covers ::sendMailMessages
  */
 public function testSendMailMessages(MessageInterface $message, AccountInterface $sender, $results)
 {
     $this->logger->expects($this->once())->method('notice');
     $this->mailManager->expects($this->any())->method('mail')->willReturnCallback(function ($module, $key, $to, $langcode, $params, $from) use(&$results) {
         $result = array_shift($results);
         $this->assertEquals($module, $result['module']);
         $this->assertEquals($key, $result['key']);
         $this->assertEquals($to, $result['to']);
         $this->assertEquals($langcode, $result['langcode']);
         $this->assertArrayEquals($params, $result['params']);
         $this->assertEquals($from, $result['from']);
     });
     $this->userStorage->expects($this->any())->method('load')->willReturn(clone $sender);
     $this->contactMailHandler->sendMailMessages($message, $sender);
 }
 /**
  * {@inheritdoc}
  */
 public function save(array $form, FormStateInterface $form_state)
 {
     $message = $this->entity;
     $user = $this->currentUser();
     $this->mailHandler->sendMailMessages($message, $user);
     $this->flood->register('contact', $this->config('contact.settings')->get('flood.interval'));
     drupal_set_message($this->t('Your message has been sent.'));
     // To avoid false error messages caused by flood control, redirect away from
     // the contact form; either to the contacted user account or the front page.
     if ($message->isPersonal() && $user->hasPermission('access user profiles')) {
         $form_state->setRedirectUrl($message->getPersonalRecipient()->urlInfo());
     } else {
         $form_state->setRedirect('<front>');
     }
     // Save the message. In core this is a no-op but should contrib wish to
     // implement message storage, this will make the task of swapping in a real
     // storage controller straight-forward.
     $message->save();
 }