public function testSendingMailWorks()
 {
     $message = new ParsedMessage();
     $message->setFrom('*****@*****.**', 'from');
     $message->setReplyTo('*****@*****.**');
     $message->addTo('*****@*****.**', 'to1');
     $message->addTo('*****@*****.**', 'to2');
     $message->addCc('*****@*****.**', 'cc1');
     $message->addCc('*****@*****.**', 'cc2');
     $message->addBcc('*****@*****.**', 'bcc1');
     $message->addBcc('*****@*****.**', 'bcc2');
     $message->setSubject('_subject');
     $message->setMessageText('_text_message');
     $message->setMessageHtml('_html_message');
     $this->mailer->send(Argument::type(\Swift_Message::class))->shouldBeCalled();
     $closureExceuted = false;
     $this->fixture->send($message, function (\Swift_Message $message) use(&$closureExceuted) {
         // from
         $this->assertEquals(['*****@*****.**' => 'from'], $message->getFrom());
         // reply-to
         $this->assertEquals(['*****@*****.**' => null], $message->getReplyTo());
         // to
         $this->assertEquals(['*****@*****.**' => 'to1', '*****@*****.**' => 'to2'], $message->getTo());
         // cc
         $this->assertEquals(['*****@*****.**' => 'cc1', '*****@*****.**' => 'cc2'], $message->getCc());
         // bcc
         $this->assertEquals(['*****@*****.**' => 'bcc1', '*****@*****.**' => 'bcc2'], $message->getBcc());
         $this->assertEquals('_subject', $message->getSubject());
         $this->assertEquals('_text_message', $message->getBody());
         $closureExceuted = true;
     });
     $this->assertTrue($closureExceuted, 'closure was not executed.');
 }
 /**
  * Parse XML Mail Definition string
  *
  * which looks something like this
  * <code>
  *   <email>
  *      <to name="yourname">your@mail.com</email>
  *      <subject locale="de">Your subject</subject>
  *      <messageText locale="de">Your Message</messageText>
  *   </email>
  * </code>
  *
  * @param string $xml
  * @param string $locale
  *
  * @return ParsedMessage
  *
  * @throws \Exception
  */
 public function parseMailDefinition($xml, $locale = null)
 {
     $this->validator->validate($xml, $this->xsdFile);
     $parsed = simplexml_load_string($xml);
     $message = new ParsedMessage();
     $from = $parsed->from;
     if ($from->count() > 0) {
         $message->setFrom((string) $from, (string) $from->attributes()['name']);
     }
     $replyTo = $parsed->replyTo;
     if ($replyTo->count() > 0) {
         $message->setReplyTo((string) $replyTo);
     }
     foreach ($parsed->to as $to) {
         $message->addTo((string) $to, (string) $to->attributes()['name']);
     }
     foreach ($parsed->cc as $cc) {
         $message->addCc((string) $cc, (string) $cc->attributes()['name']);
     }
     foreach ($parsed->bcc as $bcc) {
         $message->addBcc((string) $bcc, (string) $bcc->attributes()['name']);
     }
     $message->setSubject($this->getLocalizedTagContent($parsed->subject, $locale));
     $message->setMessageHtml($this->getLocalizedTagContent($parsed->messageHtml, $locale));
     $message->setMessageText($this->getLocalizedTagContent($parsed->messageText, $locale));
     return $message;
 }