NotificationMailMessageTest.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <?php
  2. namespace Illuminate\Tests\Notifications;
  3. use Illuminate\Notifications\Messages\MailMessage;
  4. use PHPUnit\Framework\TestCase;
  5. class NotificationMailMessageTest extends TestCase
  6. {
  7. public function testTemplate()
  8. {
  9. $message = new MailMessage;
  10. $this->assertSame('notifications::email', $message->markdown);
  11. $message->template('notifications::foo');
  12. $this->assertSame('notifications::foo', $message->markdown);
  13. }
  14. public function testHtmlAndPlainView()
  15. {
  16. $message = new MailMessage;
  17. $this->assertNull($message->view);
  18. $this->assertSame([], $message->viewData);
  19. $message->view(['notifications::foo', 'notifications::bar'], [
  20. 'foo' => 'bar',
  21. ]);
  22. $this->assertSame('notifications::foo', $message->view[0]);
  23. $this->assertSame('notifications::bar', $message->view[1]);
  24. $this->assertSame(['foo' => 'bar'], $message->viewData);
  25. }
  26. public function testHtmlView()
  27. {
  28. $message = new MailMessage;
  29. $this->assertNull($message->view);
  30. $this->assertSame([], $message->viewData);
  31. $message->view('notifications::foo', [
  32. 'foo' => 'bar',
  33. ]);
  34. $this->assertSame('notifications::foo', $message->view);
  35. $this->assertSame(['foo' => 'bar'], $message->viewData);
  36. }
  37. public function testPlainView()
  38. {
  39. $message = new MailMessage;
  40. $this->assertNull($message->view);
  41. $this->assertSame([], $message->viewData);
  42. $message->view([null, 'notifications::foo'], [
  43. 'foo' => 'bar',
  44. ]);
  45. $this->assertSame('notifications::foo', $message->view[1]);
  46. $this->assertSame(['foo' => 'bar'], $message->viewData);
  47. }
  48. public function testCcIsSetCorrectly()
  49. {
  50. $message = new MailMessage;
  51. $message->cc('test@example.com');
  52. $this->assertSame([['test@example.com', null]], $message->cc);
  53. $message = new MailMessage;
  54. $message->cc('test@example.com')
  55. ->cc('test@example.com', 'Test');
  56. $this->assertSame([['test@example.com', null], ['test@example.com', 'Test']], $message->cc);
  57. $message = new MailMessage;
  58. $message->cc(['test@example.com', 'Test' => 'test@example.com']);
  59. $this->assertSame([['test@example.com', null], ['test@example.com', 'Test']], $message->cc);
  60. }
  61. public function testBccIsSetCorrectly()
  62. {
  63. $message = new MailMessage;
  64. $message->bcc('test@example.com');
  65. $this->assertSame([['test@example.com', null]], $message->bcc);
  66. $message = new MailMessage;
  67. $message->bcc('test@example.com')
  68. ->bcc('test@example.com', 'Test');
  69. $this->assertSame([['test@example.com', null], ['test@example.com', 'Test']], $message->bcc);
  70. $message = new MailMessage;
  71. $message->bcc(['test@example.com', 'Test' => 'test@example.com']);
  72. $this->assertSame([['test@example.com', null], ['test@example.com', 'Test']], $message->bcc);
  73. }
  74. public function testReplyToIsSetCorrectly()
  75. {
  76. $message = new MailMessage;
  77. $message->replyTo('test@example.com');
  78. $this->assertSame([['test@example.com', null]], $message->replyTo);
  79. $message = new MailMessage;
  80. $message->replyTo('test@example.com')
  81. ->replyTo('test@example.com', 'Test');
  82. $this->assertSame([['test@example.com', null], ['test@example.com', 'Test']], $message->replyTo);
  83. $message = new MailMessage;
  84. $message->replyTo(['test@example.com', 'Test' => 'test@example.com']);
  85. $this->assertSame([['test@example.com', null], ['test@example.com', 'Test']], $message->replyTo);
  86. }
  87. public function testCallbackIsSetCorrectly()
  88. {
  89. $callback = function () {
  90. //
  91. };
  92. $message = new MailMessage;
  93. $message->withSwiftMessage($callback);
  94. $this->assertSame([$callback], $message->callbacks);
  95. }
  96. public function testWhenCallback()
  97. {
  98. $callback = function (MailMessage $mailMessage, $condition) {
  99. $this->assertTrue($condition);
  100. $mailMessage->cc('cc@example.com');
  101. };
  102. $message = new MailMessage;
  103. $message->when(true, $callback);
  104. $this->assertSame([['cc@example.com', null]], $message->cc);
  105. $message = new MailMessage;
  106. $message->when(false, $callback);
  107. $this->assertSame([], $message->cc);
  108. }
  109. public function testWhenCallbackWithReturn()
  110. {
  111. $callback = function (MailMessage $mailMessage, $condition) {
  112. $this->assertTrue($condition);
  113. return $mailMessage->cc('cc@example.com');
  114. };
  115. $message = new MailMessage;
  116. $message->when(true, $callback)->bcc('bcc@example.com');
  117. $this->assertSame([['cc@example.com', null]], $message->cc);
  118. $this->assertSame([['bcc@example.com', null]], $message->bcc);
  119. $message = new MailMessage;
  120. $message->when(false, $callback)->bcc('bcc@example.com');
  121. $this->assertSame([], $message->cc);
  122. $this->assertSame([['bcc@example.com', null]], $message->bcc);
  123. }
  124. public function testWhenCallbackWithDefault()
  125. {
  126. $callback = function (MailMessage $mailMessage, $condition) {
  127. $this->assertSame('truthy', $condition);
  128. $mailMessage->cc('truthy@example.com');
  129. };
  130. $default = function (MailMessage $mailMessage, $condition) {
  131. $this->assertEquals(0, $condition);
  132. $mailMessage->cc('zero@example.com');
  133. };
  134. $message = new MailMessage;
  135. $message->when('truthy', $callback, $default);
  136. $this->assertSame([['truthy@example.com', null]], $message->cc);
  137. $message = new MailMessage;
  138. $message->when(0, $callback, $default);
  139. $this->assertSame([['zero@example.com', null]], $message->cc);
  140. }
  141. public function testUnlessCallback()
  142. {
  143. $callback = function (MailMessage $mailMessage, $condition) {
  144. $this->assertFalse($condition);
  145. $mailMessage->cc('test@example.com');
  146. };
  147. $message = new MailMessage;
  148. $message->unless(false, $callback);
  149. $this->assertSame([['test@example.com', null]], $message->cc);
  150. $message = new MailMessage;
  151. $message->unless(true, $callback);
  152. $this->assertSame([], $message->cc);
  153. }
  154. public function testUnlessCallbackWithReturn()
  155. {
  156. $callback = function (MailMessage $mailMessage, $condition) {
  157. $this->assertFalse($condition);
  158. return $mailMessage->cc('cc@example.com');
  159. };
  160. $message = new MailMessage;
  161. $message->unless(false, $callback)->bcc('bcc@example.com');
  162. $this->assertSame([['cc@example.com', null]], $message->cc);
  163. $this->assertSame([['bcc@example.com', null]], $message->bcc);
  164. $message = new MailMessage;
  165. $message->unless(true, $callback)->bcc('bcc@example.com');
  166. $this->assertSame([], $message->cc);
  167. $this->assertSame([['bcc@example.com', null]], $message->bcc);
  168. }
  169. public function testUnlessCallbackWithDefault()
  170. {
  171. $callback = function (MailMessage $mailMessage, $condition) {
  172. $this->assertEquals(0, $condition);
  173. $mailMessage->cc('zero@example.com');
  174. };
  175. $default = function (MailMessage $mailMessage, $condition) {
  176. $this->assertSame('truthy', $condition);
  177. $mailMessage->cc('truthy@example.com');
  178. };
  179. $message = new MailMessage;
  180. $message->unless(0, $callback, $default);
  181. $this->assertSame([['zero@example.com', null]], $message->cc);
  182. $message = new MailMessage;
  183. $message->unless('truthy', $callback, $default);
  184. $this->assertSame([['truthy@example.com', null]], $message->cc);
  185. }
  186. }