public function testCommunicationEmailProviderCreatesCommunications()
 {
     $this->assertCount(0, CommunicationItem::find(), "CommunicationItem count was not 0");
     $this->assertCount(0, Communication::find(), "Communication count was not 0");
     $email = new SimpleEmail();
     $email->setSubject("A fine day in the park");
     $email->addRecipientByEmail("*****@*****.**", "Joe Bloggs");
     $email->setHtml("<html><head>Test Head</head><body>Test Body</body></html>");
     $email->setText("Test Text Body");
     CommunicationProcessor::setProviderClassName(EmailProvider::class, UnitTestingEmailProvider::class);
     EmailProvider::setProviderClassName(CommunicationEmailProvider::class);
     EmailProvider::getProvider()->send($email);
     $this->assertCount(1, Communication::find(), "Communication count was not 1");
     $this->assertCount(1, CommunicationItem::find(), "CommunicationItem count was not 1");
     $communication = Communication::findLast();
     $this->assertEquals($email->getSubject(), $communication->Title, "Subject not set correctly");
     $this->assertTrue($communication->DateCreated->isValidDateTime(), "Date Created not set correctly");
     $communicationEmail = CommunicationItem::findLast();
     $this->assertEquals($communicationEmail->CommunicationID, $communication->CommunicationID);
     $this->assertEquals($email->getRecipients()[0]->__toString(), $communicationEmail->Recipient, "Name not set correctly");
     $this->assertEquals($email->getText(), $communicationEmail->Text, "Text Body not set correctly");
     $email->addRecipientByEmail("*****@*****.**", "Jane Doe");
     EmailProvider::getProvider()->send($email);
     $this->assertCount(3, CommunicationItem::find(), "CommunicationItem count was not 3 (2 recipients in email)");
     $communicationEmail = CommunicationItem::findLast();
     $this->assertEquals('"Jane Doe" <*****@*****.**>', $communicationEmail->Recipient, "Recipient not set correctly");
 }
 /**
  * @return Communication
  * @throws \Rhubarb\Stem\Exceptions\RecordNotFoundException
  */
 public function createCommunicationForEmail()
 {
     $email = new SimpleEmail();
     $email->setSubject("The three billy goats");
     $email->addRecipientByEmail("*****@*****.**", "John Smith");
     $email->setSender("*****@*****.**", "Jane Smith");
     $email->setText("Michael went to mow, went to mow a meadow.");
     $email->setHtml("<p>Michael went to mow, went to mow a meadow.</p>");
     $package = new CommunicationPackage();
     $package->addSendable($email);
     $package->title = $email->getSubject();
     $package->send();
     return Communication::findLast();
 }
 private function createCommunicationWithMultipleRecipients($dateToSend, $noOfRecipients)
 {
     $email = new SimpleEmail();
     $email->setText("Test Message Body");
     $email->setSender("*****@*****.**");
     foreach (range(1, $noOfRecipients) as $i) {
         $email->addRecipientByEmail("test@test" . $i . ".com");
     }
     $package = new CommunicationPackage();
     if ($dateToSend) {
         $package->dateToSend = $dateToSend;
     }
     $package->addSendable($email);
     $package->send();
     $communication = Communication::findLast();
     return $communication;
 }
 public function testPackageCanBeRecordedNotSent()
 {
     $lastEmail = UnitTestingEmailProvider::getLastEmail();
     $email = new SimpleEmail();
     $package = new CommunicationPackage();
     $package->title = "Test With No Send";
     $package->addSendable($email);
     $package->draft();
     $communication = Communication::findLast();
     $communication->markSent();
     $this->assertEquals("Sent", $communication->Status);
     $this->assertEquals($lastEmail, UnitTestingEmailProvider::getLastEmail());
 }