113 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
| <?php
 | |
| 
 | |
| require_once dirname(__DIR__, 3) . '/app/classes/feedback.php';
 | |
| 
 | |
| use PHPUnit\Framework\TestCase;
 | |
| 
 | |
| class FeedbackTest extends TestCase
 | |
| {
 | |
|     protected function setUp(): void
 | |
|     {
 | |
|         parent::setUp();
 | |
| 
 | |
|         // Start session for flash messages
 | |
|         if (session_status() === PHP_SESSION_NONE && !headers_sent()) {
 | |
|             session_start();
 | |
|         }
 | |
| 
 | |
|         // Initialize session variables
 | |
|         $_SESSION = [];
 | |
|         $_SESSION['flash_messages'] = [];
 | |
|     }
 | |
| 
 | |
|     protected function tearDown(): void
 | |
|     {
 | |
|         // Clean up session
 | |
|         if (session_status() === PHP_SESSION_ACTIVE) {
 | |
|             session_destroy();
 | |
|         }
 | |
|         parent::tearDown();
 | |
|     }
 | |
| 
 | |
|     public function testGetFlash()
 | |
|     {
 | |
|         // Add a test message
 | |
|         Feedback::flash('LOGIN', 'LOGIN_SUCCESS', 'Test message');
 | |
|         $messages = $_SESSION['flash_messages'];
 | |
| 
 | |
|         $this->assertIsArray($messages);
 | |
|         $this->assertCount(1, $messages);
 | |
| 
 | |
|         $message = $messages[0];
 | |
|         $this->assertEquals('LOGIN', $message['category']);
 | |
|         $this->assertEquals('LOGIN_SUCCESS', $message['key']);
 | |
|         $this->assertEquals('Test message', $message['custom_message']);
 | |
|     }
 | |
| 
 | |
|     public function testRender()
 | |
|     {
 | |
|         // Test success message with custom text
 | |
|         $output = Feedback::render('LOGIN', 'LOGIN_SUCCESS', 'Success message');
 | |
|         $this->assertStringContainsString('alert-success', $output);
 | |
|         $this->assertStringContainsString('Success message', $output);
 | |
|         $this->assertStringContainsString('alert-dismissible', $output);
 | |
| 
 | |
|         // Test error message (non-dismissible)
 | |
|         $output = Feedback::render('LOGIN', 'LOGIN_FAILED', 'Error message');
 | |
|         $this->assertStringContainsString('alert-danger', $output);
 | |
|         $this->assertStringContainsString('Error message', $output);
 | |
|         $this->assertStringNotContainsString('alert-dismissible', $output);
 | |
| 
 | |
|         // Test small message
 | |
|         $output = Feedback::render('LOGIN', 'LOGIN_SUCCESS', 'Small message', true, true);
 | |
|         $this->assertStringContainsString('alert-sm', $output);
 | |
|         $this->assertStringContainsString('btn-close-sm', $output);
 | |
|     }
 | |
| 
 | |
|     public function testGetMessageData()
 | |
|     {
 | |
|         $data = Feedback::getMessageData('LOGIN', 'LOGIN_SUCCESS', 'Test message');
 | |
| 
 | |
|         $this->assertIsArray($data);
 | |
|         $this->assertEquals(Feedback::TYPE_SUCCESS, $data['type']);
 | |
|         $this->assertEquals('Test message', $data['message']);
 | |
|         $this->assertTrue($data['dismissible']);
 | |
|         $this->assertFalse($data['small']);
 | |
| 
 | |
|         // Test with default message
 | |
|         $data = Feedback::getMessageData('LOGIN', 'LOGIN_SUCCESS');
 | |
|         $this->assertNotNull($data['message']);
 | |
|     }
 | |
| 
 | |
|     public function testFlash()
 | |
|     {
 | |
|         Feedback::flash('LOGIN', 'LOGIN_SUCCESS', 'Test message');
 | |
|         $this->assertArrayHasKey('flash_messages', $_SESSION);
 | |
|         $this->assertCount(1, $_SESSION['flash_messages']);
 | |
| 
 | |
|         $message = $_SESSION['flash_messages'][0];
 | |
|         $this->assertEquals('LOGIN', $message['category']);
 | |
|         $this->assertEquals('LOGIN_SUCCESS', $message['key']);
 | |
|         $this->assertEquals('Test message', $message['custom_message']);
 | |
|     }
 | |
| 
 | |
|     public function testPredefinedMessageTypes()
 | |
|     {
 | |
|         $this->assertEquals('success', Feedback::TYPE_SUCCESS);
 | |
|         $this->assertEquals('danger', Feedback::TYPE_ERROR);
 | |
|         $this->assertEquals('info', Feedback::TYPE_INFO);
 | |
|         $this->assertEquals('warning', Feedback::TYPE_WARNING);
 | |
|     }
 | |
| 
 | |
|     public function testMessageConfigurations()
 | |
|     {
 | |
|         $config = Feedback::get('LOGIN', 'LOGIN_SUCCESS');
 | |
|         $this->assertEquals(Feedback::TYPE_SUCCESS, $config['type']);
 | |
|         $this->assertTrue($config['dismissible']);
 | |
| 
 | |
|         $config = Feedback::get('LOGIN', 'LOGIN_FAILED');
 | |
|         $this->assertEquals(Feedback::TYPE_ERROR, $config['type']);
 | |
|         $this->assertFalse($config['dismissible']);
 | |
|     }
 | |
| }
 |