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']);
 | 
						|
    }
 | 
						|
}
 |