*/ class MessageTest extends \PHPUnit_Framework_TestCase { /** @var ContainerBuilder */ protected $container; /** @var SmartyParser */ protected $parser; /** @var TheliaTemplateHelper */ protected $templateHelper; private $backup_mail_template = 'undefined'; public function setUp() { $this->backup_mail_template = ConfigQuery::read('active-mail-template', 'default'); ConfigQuery::write('active-mail-template', 'test'); $this->templateHelper = new TheliaTemplateHelper(); @mkdir($this->templateHelper->getActiveMailTemplate()->getAbsolutePath(), 0777, true); $container = new ContainerBuilder(); $session = new Session(new MockArraySessionStorage()); $request = new Request(); $requestStack = new RequestStack(); $requestStack->push($request); $dispatcher = $this->getMock("Symfony\Component\EventDispatcher\EventDispatcherInterface"); $request->setSession($session); $parserContext = new ParserContext( $requestStack, new TheliaFormFactory($requestStack, $container, []), new TheliaFormValidator(new Translator($container), 'dev') ); $container->set("event_dispatcher", $dispatcher); $container->set('request', $request); $this->parser = new SmartyParser($requestStack, $dispatcher, $parserContext, $this->templateHelper, 'dev', true); $this->parser->setTemplateDefinition($this->templateHelper->getActiveMailTemplate()); $container->set('thelia.parser', $this->parser); $this->container = $container; } /** * Create message with HTML and TEXT body from message HTMl and TEXT fields */ public function testMessageWithTextAndHtmlBody() { $message = new ModelMessage(); $message->setLocale('fr_FR'); $message->setSubject("The subject"); $message->setHtmlMessage("The HTML content"); $message->setTextMessage("The TEXT content"); $instance = \Swift_Message::newInstance(); $message->buildMessage($this->parser, $instance); $this->assertEquals("The subject", $instance->getSubject()); $this->assertEquals("The HTML content", $instance->getBody()); $this->assertEquals("The TEXT content", $instance->getChildren()[0]->getBody()); } /** * Create message with TEXT body only from message HTMl and TEXT fields */ public function testMessageWithTextOnlyBody() { $message = new ModelMessage(); $message->setLocale('fr_FR'); $message->setSubject("The subject"); $message->setTextMessage("The TEXT content"); $instance = \Swift_Message::newInstance(); $message->buildMessage($this->parser, $instance); $this->assertEquals("The subject", $instance->getSubject()); $this->assertEquals("The TEXT content", $instance->getBody()); $this->assertEquals(0, count($instance->getChildren())); } /** * Create message with HTML and TEXT body from message HTMl and TEXT fields * using a text and a html layout */ public function testMessageWithTextAndHtmlBodyAndTextAndHtmlLayout() { $message = new ModelMessage(); $message->setLocale('fr_FR'); $message->setSubject("The subject"); $message->setTextMessage("The TEXT content"); $message->setHtmlMessage("The HTML content"); $message->setHtmlLayoutFileName('layout.html.tpl'); $message->setTextLayoutFileName('layout.text.tpl'); $path = $this->templateHelper->getActiveMailTemplate()->getAbsolutePath(); file_put_contents($path.DS.'layout.html.tpl', 'HTML Layout: {$message_body nofilter}'); file_put_contents($path.DS.'layout.text.tpl', 'TEXT Layout: {$message_body nofilter}'); $instance = \Swift_Message::newInstance(); $message->buildMessage($this->parser, $instance); $this->assertEquals("The subject", $instance->getSubject()); $this->assertEquals("HTML Layout: The HTML content", $instance->getBody()); $this->assertEquals("TEXT Layout: The TEXT content", $instance->getChildren()[0]->getBody()); } /** * Create message with TEXT only body from message HTMl and TEXT fields * using a text only layout */ public function testMessageWithTextOnlyBodyAndTextOnlyLayout() { $message = new ModelMessage(); $message->setLocale('fr_FR'); $message->setSubject("The subject"); $message->setTextMessage("The & content"); $message->setTextLayoutFileName('layout3.text.tpl'); $path = $this->templateHelper->getActiveMailTemplate()->getAbsolutePath(); file_put_contents($path.DS.'layout3.text.tpl', 'TEXT Layout 3: {$message_body nofilter} :-) <>'); $instance = \Swift_Message::newInstance(); $message->buildMessage($this->parser, $instance); $this->assertEquals("The subject", $instance->getSubject()); $this->assertEquals("TEXT Layout 3: The & content :-) <>", $instance->getBody()); $this->assertEquals(0, count($instance->getChildren())); } /** * Create message with TEXT and HTML body from message HTMl and TEXT fields * using a text only layout */ public function testMessageWithTextAndHtmlBodyAndTextOnlyLayout() { $message = new ModelMessage(); $message->setLocale('fr_FR'); $message->setSubject("The subject"); $message->setTextMessage("The & content"); $message->setHtmlMessage("The & content"); $message->setTextLayoutFileName('layout3.text.tpl'); $path = $this->templateHelper->getActiveMailTemplate()->getAbsolutePath(); file_put_contents($path.DS.'layout3.text.tpl', 'TEXT Layout 3: {$message_body nofilter} :-) <>'); $instance = \Swift_Message::newInstance(); $message->buildMessage($this->parser, $instance); $this->assertEquals("The subject", $instance->getSubject()); $this->assertEquals("The & content", $instance->getBody()); $this->assertEquals("TEXT Layout 3: The & content :-) <>", $instance->getChildren()[0]->getBody()); } /** * Create message with HTML and TEXT body from template HTMl and TEXT fields * using a text and a html layout */ public function testMessageWithTextAndHtmlBodyAndTextAndHtmlLayoutAndTextAndHtmlTemplate() { $message = new ModelMessage(); $message->setLocale('fr_FR'); $message->setSubject("The subject"); $message->setTextMessage("The TEXT content"); $message->setHtmlMessage("The HTML content"); $message->setTextTemplateFileName('template4-text.txt'); $message->setHtmlTemplateFileName('template4-html.html'); $message->setHtmlLayoutFileName('layout4.html.tpl'); $message->setTextLayoutFileName('layout4.text.tpl'); $path = $this->templateHelper->getActiveMailTemplate()->getAbsolutePath(); $this->parser->assign('myvar', 'my-value'); file_put_contents($path.DS.'layout4.html.tpl', 'HTML Layout 4: {$message_body nofilter}'); file_put_contents($path.DS.'layout4.text.tpl', 'TEXT Layout 4: {$message_body nofilter}'); file_put_contents($path.DS.'template4-html.html', 'HTML