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