FlashTest.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace Test\Michel\Flash;
  3. use ArrayObject;
  4. use InvalidArgumentException;
  5. use Michel\Flash\Flash;
  6. use Michel\UniTester\TestCase;
  7. final class FlashTest extends TestCase
  8. {
  9. private array $storage;
  10. private Flash $flash;
  11. protected function tearDown(): void
  12. {
  13. // TODO: Implement tearDown() method.
  14. }
  15. protected function execute(): void
  16. {
  17. $this->testSetAndGetFlashMessage();
  18. $this->testGetNonExistentFlashMessage();
  19. $this->testFlashMessageShouldBeClearedAfterGet();
  20. $this->testInvalidStorageArgument();
  21. $this->testCustomFlashKey();
  22. }
  23. protected function setUp(): void
  24. {
  25. $this->storage = [];
  26. $this->flash = new Flash($this->storage);
  27. }
  28. public function testSetAndGetFlashMessage(): void
  29. {
  30. $this->flash->set('success', 'Operation completed successfully.');
  31. $this->flash->set('error', 'An error occurred.');
  32. $this->assertEquals('Operation completed successfully.', $this->flash->get('success'));
  33. $this->assertEquals('An error occurred.', $this->flash->get('error'));
  34. }
  35. public function testGetNonExistentFlashMessage(): void
  36. {
  37. $this->assertNull($this->flash->get('warning'));
  38. }
  39. public function testFlashMessageShouldBeClearedAfterGet(): void
  40. {
  41. $this->flash->set('info', 'This is an informational message.');
  42. // Get the flash message, should return the message
  43. $this->assertEquals('This is an informational message.', $this->flash->get('info'));
  44. // Try getting the same message again, should be null as it was cleared after get
  45. $this->assertNull($this->flash->get('info'));
  46. }
  47. public function testInvalidStorageArgument(): void
  48. {
  49. $this->expectException(InvalidArgumentException::class, function () {
  50. $invalid = 'invalid';
  51. new Flash($invalid, 'custom_key');
  52. });
  53. }
  54. public function testCustomFlashKey(): void
  55. {
  56. $customStorage = new ArrayObject();
  57. $flash = new Flash($customStorage, 'my_custom_flash_key');
  58. $flash->set('message', 'Custom flash key test.');
  59. $this->assertEquals('Custom flash key test.', $flash->get('message'));
  60. }
  61. }