testInstance = new AttachedFileReportEmailGenerator('.thing', 'generic/thing'); Fixture::createWebsite('2011-01-01 00:00:00', $ecommerce = 0, 'sitename'); } public function test_makeEmail_ReturnsCorrectlyConfiguredEmailInstance() { $reportDetails = [ 'format' => 'html', 'period' => 'day', 'idsite' => '1', ]; $generatedReport = new GeneratedReport( $reportDetails, 'report', 'pretty date', 'report contents', [] ); $mail = $this->testInstance->makeEmail($generatedReport); $mailContent = $this->getMailContent($mail); $this->assertStringStartsWith('getBodyHtml()); $this->assertEquals('General_Report report - pretty date', $mail->getSubject()); self::assertStringContainsString('ScheduledReports_PleaseFindAttachedFile', $mailContent); self::assertStringContainsString('ScheduledReports_SentFromX', $mailContent); $this->assertStringContainsString("Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable ", $this->mail->createBody()); $attachments = $this->mail->getAttachments(); $this->assertEquals([ [ 'report contents', 'General_Report report - pretty date.thing', 'General_Report report - pretty date.thing', 'base64', 'generic/thing', true, 'attachment', 0 ], ], $attachments); } public function test_makeEmail_OmitsSentFrom_IfPiwikUrlDoesNotExist() { $this->testInstance = new AttachedFileReportEmailGenerator('.thing', 'generic/thing', false); $reportDetails = [ 'format' => 'html', 'period' => 'week', 'idsite' => '1', ]; $generatedReport = new GeneratedReport( $reportDetails, 'report', 'pretty date', 'report contents', [] ); $mail = $this->testInstance->makeEmail($generatedReport); $mailContent = $this->getMailContent($mail); $this->assertStringStartsWith('assertStringContainsString("Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable ", $this->mail->createBody()); } public function test_makeEmail_AddsSegmentInformation_IfReportIsForSavedSegment() { $idsegment = APISegmentEditor::getInstance()->add('testsegment', 'browserCode==ff'); $reportDetails = [ 'format' => 'html', 'period' => 'week', 'idsite' => '1', 'idsegment' => $idsegment, ]; $generatedReport = new GeneratedReport( $reportDetails, 'report', 'pretty date', 'report contents', [] ); $mail = $this->testInstance->makeEmail($generatedReport); $mailContent = $this->getMailContent($mail); $this->assertStringStartsWith('assertStringContainsString("Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable ", $this->mail->createBody()); } private function getMailContent(Mail $mail) { $mail->addTo('noreply@localhost'); $mail->send(); return $mail->getBodyHtml(); } public function provideContainerConfig() { return [ 'observers.global' => \DI\add([ ['Test.Mail.send', \DI\value(function (PHPMailer $mail) { $this->mail = $mail; $this->mail->preSend(); })], ]), ]; } }