You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

261 lines
11 KiB

8 months ago
  1. <?php
  2. namespace tests\unit\widgets;
  3. use app\widgets\Alert;
  4. use Yii;
  5. class AlertTest extends \Codeception\Test\Unit
  6. {
  7. public function testSingleErrorMessage()
  8. {
  9. $message = 'This is an error message';
  10. Yii::$app->session->setFlash('error', $message);
  11. $renderingResult = Alert::widget();
  12. verify($renderingResult)->stringContainsString($message);
  13. verify($renderingResult)->stringContainsString('alert-danger');
  14. verify($renderingResult)->stringNotContainsString('alert-success');
  15. verify($renderingResult)->stringNotContainsString('alert-info');
  16. verify($renderingResult)->stringNotContainsString('alert-warning');
  17. }
  18. public function testMultipleErrorMessages()
  19. {
  20. $firstMessage = 'This is the first error message';
  21. $secondMessage = 'This is the second error message';
  22. Yii::$app->session->setFlash('error', [$firstMessage, $secondMessage]);
  23. $renderingResult = Alert::widget();
  24. verify($renderingResult)->stringContainsString($firstMessage);
  25. verify($renderingResult)->stringContainsString($secondMessage);
  26. verify($renderingResult)->stringContainsString('alert-danger');
  27. verify($renderingResult)->stringNotContainsString('alert-success');
  28. verify($renderingResult)->stringNotContainsString('alert-info');
  29. verify($renderingResult)->stringNotContainsString('alert-warning');
  30. }
  31. public function testSingleDangerMessage()
  32. {
  33. $message = 'This is a danger message';
  34. Yii::$app->session->setFlash('danger', $message);
  35. $renderingResult = Alert::widget();
  36. verify($renderingResult)->stringContainsString($message);
  37. verify($renderingResult)->stringContainsString('alert-danger');
  38. verify($renderingResult)->stringNotContainsString('alert-success');
  39. verify($renderingResult)->stringNotContainsString('alert-info');
  40. verify($renderingResult)->stringNotContainsString('alert-warning');
  41. }
  42. public function testMultipleDangerMessages()
  43. {
  44. $firstMessage = 'This is the first danger message';
  45. $secondMessage = 'This is the second danger message';
  46. Yii::$app->session->setFlash('danger', [$firstMessage, $secondMessage]);
  47. $renderingResult = Alert::widget();
  48. verify($renderingResult)->stringContainsString($firstMessage);
  49. verify($renderingResult)->stringContainsString($secondMessage);
  50. verify($renderingResult)->stringContainsString('alert-danger');
  51. verify($renderingResult)->stringNotContainsString('alert-success');
  52. verify($renderingResult)->stringNotContainsString('alert-info');
  53. verify($renderingResult)->stringNotContainsString('alert-warning');
  54. }
  55. public function testSingleSuccessMessage()
  56. {
  57. $message = 'This is a success message';
  58. Yii::$app->session->setFlash('success', $message);
  59. $renderingResult = Alert::widget();
  60. verify($renderingResult)->stringContainsString($message);
  61. verify($renderingResult)->stringContainsString('alert-success');
  62. verify($renderingResult)->stringNotContainsString('alert-danger');
  63. verify($renderingResult)->stringNotContainsString('alert-info');
  64. verify($renderingResult)->stringNotContainsString('alert-warning');
  65. }
  66. public function testMultipleSuccessMessages()
  67. {
  68. $firstMessage = 'This is the first danger message';
  69. $secondMessage = 'This is the second danger message';
  70. Yii::$app->session->setFlash('success', [$firstMessage, $secondMessage]);
  71. $renderingResult = Alert::widget();
  72. verify($renderingResult)->stringContainsString($firstMessage);
  73. verify($renderingResult)->stringContainsString($secondMessage);
  74. verify($renderingResult)->stringContainsString('alert-success');
  75. verify($renderingResult)->stringNotContainsString('alert-danger');
  76. verify($renderingResult)->stringNotContainsString('alert-info');
  77. verify($renderingResult)->stringNotContainsString('alert-warning');
  78. }
  79. public function testSingleInfoMessage()
  80. {
  81. $message = 'This is an info message';
  82. Yii::$app->session->setFlash('info', $message);
  83. $renderingResult = Alert::widget();
  84. verify($renderingResult)->stringContainsString($message);
  85. verify($renderingResult)->stringContainsString('alert-info');
  86. verify($renderingResult)->stringNotContainsString('alert-danger');
  87. verify($renderingResult)->stringNotContainsString('alert-success');
  88. verify($renderingResult)->stringNotContainsString('alert-warning');
  89. }
  90. public function testMultipleInfoMessages()
  91. {
  92. $firstMessage = 'This is the first info message';
  93. $secondMessage = 'This is the second info message';
  94. Yii::$app->session->setFlash('info', [$firstMessage, $secondMessage]);
  95. $renderingResult = Alert::widget();
  96. verify($renderingResult)->stringContainsString($firstMessage);
  97. verify($renderingResult)->stringContainsString($secondMessage);
  98. verify($renderingResult)->stringContainsString('alert-info');
  99. verify($renderingResult)->stringNotContainsString('alert-danger');
  100. verify($renderingResult)->stringNotContainsString('alert-success');
  101. verify($renderingResult)->stringNotContainsString('alert-warning');
  102. }
  103. public function testSingleWarningMessage()
  104. {
  105. $message = 'This is a warning message';
  106. Yii::$app->session->setFlash('warning', $message);
  107. $renderingResult = Alert::widget();
  108. verify($renderingResult)->stringContainsString($message);
  109. verify($renderingResult)->stringContainsString('alert-warning');
  110. verify($renderingResult)->stringNotContainsString('alert-danger');
  111. verify($renderingResult)->stringNotContainsString('alert-success');
  112. verify($renderingResult)->stringNotContainsString('alert-info');
  113. }
  114. public function testMultipleWarningMessages()
  115. {
  116. $firstMessage = 'This is the first warning message';
  117. $secondMessage = 'This is the second warning message';
  118. Yii::$app->session->setFlash('warning', [$firstMessage, $secondMessage]);
  119. $renderingResult = Alert::widget();
  120. verify($renderingResult)->stringContainsString($firstMessage);
  121. verify($renderingResult)->stringContainsString($secondMessage);
  122. verify($renderingResult)->stringContainsString('alert-warning');
  123. verify($renderingResult)->stringNotContainsString('alert-danger');
  124. verify($renderingResult)->stringNotContainsString('alert-success');
  125. verify($renderingResult)->stringNotContainsString('alert-info');
  126. }
  127. public function testSingleMixedMessages() {
  128. $errorMessage = 'This is an error message';
  129. $dangerMessage = 'This is a danger message';
  130. $successMessage = 'This is a success message';
  131. $infoMessage = 'This is a info message';
  132. $warningMessage = 'This is a warning message';
  133. Yii::$app->session->setFlash('error', $errorMessage);
  134. Yii::$app->session->setFlash('danger', $dangerMessage);
  135. Yii::$app->session->setFlash('success', $successMessage);
  136. Yii::$app->session->setFlash('info', $infoMessage);
  137. Yii::$app->session->setFlash('warning', $warningMessage);
  138. $renderingResult = Alert::widget();
  139. verify($renderingResult)->stringContainsString($errorMessage);
  140. verify($renderingResult)->stringContainsString($dangerMessage);
  141. verify($renderingResult)->stringContainsString($successMessage);
  142. verify($renderingResult)->stringContainsString($infoMessage);
  143. verify($renderingResult)->stringContainsString($warningMessage);
  144. verify($renderingResult)->stringContainsString('alert-danger');
  145. verify($renderingResult)->stringContainsString('alert-success');
  146. verify($renderingResult)->stringContainsString('alert-info');
  147. verify($renderingResult)->stringContainsString('alert-warning');
  148. }
  149. public function testMultipleMixedMessages() {
  150. $firstErrorMessage = 'This is the first error message';
  151. $secondErrorMessage = 'This is the second error message';
  152. $firstDangerMessage = 'This is the first danger message';
  153. $secondDangerMessage = 'This is the second';
  154. $firstSuccessMessage = 'This is the first success message';
  155. $secondSuccessMessage = 'This is the second success message';
  156. $firstInfoMessage = 'This is the first info message';
  157. $secondInfoMessage = 'This is the second info message';
  158. $firstWarningMessage = 'This is the first warning message';
  159. $secondWarningMessage = 'This is the second warning message';
  160. Yii::$app->session->setFlash('error', [$firstErrorMessage, $secondErrorMessage]);
  161. Yii::$app->session->setFlash('danger', [$firstDangerMessage, $secondDangerMessage]);
  162. Yii::$app->session->setFlash('success', [$firstSuccessMessage, $secondSuccessMessage]);
  163. Yii::$app->session->setFlash('info', [$firstInfoMessage, $secondInfoMessage]);
  164. Yii::$app->session->setFlash('warning', [$firstWarningMessage, $secondWarningMessage]);
  165. $renderingResult = Alert::widget();
  166. verify($renderingResult)->stringContainsString($firstErrorMessage);
  167. verify($renderingResult)->stringContainsString($secondErrorMessage);
  168. verify($renderingResult)->stringContainsString($firstDangerMessage);
  169. verify($renderingResult)->stringContainsString($secondDangerMessage);
  170. verify($renderingResult)->stringContainsString($firstSuccessMessage);
  171. verify($renderingResult)->stringContainsString($secondSuccessMessage);
  172. verify($renderingResult)->stringContainsString($firstInfoMessage);
  173. verify($renderingResult)->stringContainsString($secondInfoMessage);
  174. verify($renderingResult)->stringContainsString($firstWarningMessage);
  175. verify($renderingResult)->stringContainsString($secondWarningMessage);
  176. verify($renderingResult)->stringContainsString('alert-danger');
  177. verify($renderingResult)->stringContainsString('alert-success');
  178. verify($renderingResult)->stringContainsString('alert-info');
  179. verify($renderingResult)->stringContainsString('alert-warning');
  180. }
  181. public function testFlashIntegrity()
  182. {
  183. $errorMessage = 'This is an error message';
  184. $unrelatedMessage = 'This is a message that is not related to the alert widget';
  185. Yii::$app->session->setFlash('error', $errorMessage);
  186. Yii::$app->session->setFlash('unrelated', $unrelatedMessage);
  187. Alert::widget();
  188. // Simulate redirect
  189. Yii::$app->session->close();
  190. Yii::$app->session->open();
  191. verify(Yii::$app->session->getFlash('error'))->empty();
  192. verify(Yii::$app->session->getFlash('unrelated'))->equals($unrelatedMessage);
  193. }
  194. }