object = new Message();
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*
* @access protected
* @return void
*/
protected function tearDown(): void
{
}
/**
* to String casting test
*
* @return void
*/
public function testToString()
{
$this->object->setMessage('test<&>', true);
$this->assertEquals('test<&>', (string) $this->object);
}
/**
* test success method
*
* @return void
*/
public function testSuccess()
{
$this->object = new Message('test<&>', Message::SUCCESS);
$this->assertEquals($this->object, Message::success('test<&>'));
$this->assertEquals(
'Your SQL query has been executed successfully.',
Message::success()->getString()
);
}
/**
* test error method
*
* @return void
*/
public function testError()
{
$this->object = new Message('test<&>', Message::ERROR);
$this->assertEquals($this->object, Message::error('test<&>'));
$this->assertEquals('Error', Message::error()->getString());
}
/**
* test notice method
*
* @return void
*/
public function testNotice()
{
$this->object = new Message('test<&>', Message::NOTICE);
$this->assertEquals($this->object, Message::notice('test<&>'));
}
/**
* test rawError method
*
* @return void
*/
public function testRawError()
{
$this->object = new Message('', Message::ERROR);
$this->object->setMessage('test<&>');
$this->object->setBBCode(false);
$this->assertEquals($this->object, Message::rawError('test<&>'));
}
/**
* test rawNotice method
*
* @return void
*/
public function testRawNotice()
{
$this->object = new Message('', Message::NOTICE);
$this->object->setMessage('test<&>');
$this->object->setBBCode(false);
$this->assertEquals($this->object, Message::rawNotice('test<&>'));
}
/**
* test rawSuccess method
*
* @return void
*/
public function testRawSuccess()
{
$this->object = new Message('', Message::SUCCESS);
$this->object->setMessage('test<&>');
$this->object->setBBCode(false);
$this->assertEquals($this->object, Message::rawSuccess('test<&>'));
}
/**
* testing isSuccess method
*
* @return void
*/
public function testIsSuccess()
{
$this->assertFalse($this->object->isSuccess());
$this->assertTrue($this->object->isSuccess(true));
}
/**
* testing isNotice method
*
* @return void
*/
public function testIsNotice()
{
$this->assertTrue($this->object->isNotice());
$this->object->isError(true);
$this->assertFalse($this->object->isNotice());
$this->assertTrue($this->object->isNotice(true));
}
/**
* testing isError method
*
* @return void
*/
public function testIsError()
{
$this->assertFalse($this->object->isError());
$this->assertTrue($this->object->isError(true));
}
/**
* testing setter of message
*
* @return void
*/
public function testSetMessage()
{
$this->object->setMessage('test&<>', false);
$this->assertEquals('test&<>', $this->object->getMessage());
$this->object->setMessage('test&<>', true);
$this->assertEquals('test&<>', $this->object->getMessage());
}
/**
* testing setter of string
*
* @return void
*/
public function testSetString()
{
$this->object->setString('test&<>', false);
$this->assertEquals('test&<>', $this->object->getString());
$this->object->setString('test&<>', true);
$this->assertEquals('test&<>', $this->object->getString());
}
/**
* testing add param method
*
* @return void
*/
public function testAddParam()
{
$this->object->addParam(Message::notice('test'));
$this->assertEquals(
[Message::notice('test')],
$this->object->getParams()
);
$this->object->addParam('test');
$this->assertEquals(
[
Message::notice('test'),
'test',
],
$this->object->getParams()
);
$this->object->addParam('test');
$this->assertEquals(
[
Message::notice('test'),
'test',
Message::notice('test'),
],
$this->object->getParams()
);
}
/**
* Test adding html markup
*
* @return void
*/
public function testAddParamHtml()
{
$this->object->setMessage('Hello %s%s%s');
$this->object->addParamHtml('');
$this->object->addParam('user<>');
$this->object->addParamHtml('');
$this->assertEquals(
'Hello user<>',
$this->object->getMessage()
);
}
/**
* testing add string method
*
* @return void
*/
public function testAddString()
{
$this->object->addText('test', '*');
$this->assertEquals(
[
'*',
Message::notice('test'),
],
$this->object->getAddedMessages()
);
$this->object->addText('test', '');
$this->assertEquals(
[
'*',
Message::notice('test'),
Message::notice('test'),
],
$this->object->getAddedMessages()
);
}
/**
* testing add message method
*
* @return void
*/
public function testAddMessage()
{
$this->object->addText('test<>', '');
$this->assertEquals(
[Message::notice('test<>')],
$this->object->getAddedMessages()
);
$this->object->addHtml('test');
$this->assertEquals(
[
Message::notice('test<>'),
' ',
Message::rawNotice('test'),
],
$this->object->getAddedMessages()
);
$this->object->addMessage(Message::notice('test<>'));
$this->assertEquals(
'test<> test test<>',
$this->object->getMessage()
);
}
/**
* testing add messages method
*
* @return void
*/
public function testAddMessages()
{
$messages = [];
$messages[] = new Message("Test1");
$messages[] = new Message("PMA_Test2", Message::ERROR);
$messages[] = new Message("Test3");
$this->object->addMessages($messages, '');
$this->assertEquals(
[
Message::notice('Test1'),
Message::error("PMA_Test2"),
Message::notice('Test3'),
],
$this->object->getAddedMessages()
);
}
/**
* testing add messages method
*
* @return void
*/
public function testAddMessagesString()
{
$messages = [
'test1',
'test',
'test2',
];
$this->object->addMessagesString($messages, '');
$this->assertEquals(
[
Message::notice('test1'),
Message::notice('test<b>'),
Message::notice('test2'),
],
$this->object->getAddedMessages()
);
$this->assertEquals(
'test1test<b>test2',
$this->object->getMessage()
);
}
/**
* testing setter of params
*
* @return void
*/
public function testSetParams()
{
$this->object->setParams('test&<>');
$this->assertEquals('test&<>', $this->object->getParams());
$this->object->setParams('test&<>', true);
$this->assertEquals('test&<>', $this->object->getParams());
}
/**
* testing sanitize method
*
* @return void
*/
public function testSanitize()
{
$this->object->setString('test&string<>', false);
$this->assertEquals(
'test&string<>',
Message::sanitize($this->object)
);
$this->assertEquals(
[
'test&string<>',
'test&string<>',
],
Message::sanitize([$this->object, $this->object])
);
}
/**
* Data provider for testDecodeBB
*
* @return array Test data
*/
public function decodeBBDataProvider()
{
return [
[
'[em]test[/em][em]aa[em/][em]test[/em]',
'testaa[em/]test',
],
[
'[strong]test[/strong][strong]test[/strong]',
'testtest',
],
[
'[code]test[/code][code]test[/code]',
'testtest',
],
[
'[kbd]test[/kbd][br][sup]test[/sup]',
'test
test',
],
[
'[a@https://example.com/@Documentation]link[/a]',
'link',
],
[
'[a@./non-existing@Documentation]link[/a]',
'[a@./non-existing@Documentation]link',
],
[
'[doc@foo]link[/doc]',
'link',
],
[
'[doc@page@anchor]link[/doc]',
'link',
],
[
'[doc@faqmysql]link[/doc]',
'link',
],
];
}
/**
* testing decodeBB method
*
* @param string $actual BB code string
* @param string $expected Expected decoded string
*
* @return void
*
* @dataProvider decodeBBDataProvider
*/
public function testDecodeBB($actual, $expected): void
{
unset($GLOBALS['server']);
$this->assertEquals($expected, Message::decodeBB($actual));
}
/**
* testing format method
*
* @return void
*/
public function testFormat()
{
$this->assertEquals(
'test string',
Message::format('test string')
);
$this->assertEquals(
'test string',
Message::format('test string', 'a')
);
$this->assertEquals(
'test string',
Message::format('test string', [])
);
$this->assertEquals(
'test string',
Message::format('%s string', ['test'])
);
}
/**
* testing getHash method
*
* @return void
*/
public function testGetHash()
{
$this->object->setString('<&>test', false);
$this->object->setMessage('<&>test', false);
$this->assertEquals(
md5(Message::NOTICE . '<&>test<&>test'),
$this->object->getHash()
);
}
/**
* getMessage test - with empty message and with non-empty string -
* not key in globals additional params are defined
*
* @return void
*/
public function testGetMessageWithoutMessageWithStringWithParams()
{
$this->object->setMessage('');
$this->object->setString('test string %s %s');
$this->object->addParam('test param 1');
$this->object->addParam('test param 2');
$this->assertEquals(
'test string test param 1 test param 2',
$this->object->getMessage()
);
}
/**
* getMessage test - with empty message and with empty string
*
* @return void
*/
public function testGetMessageWithoutMessageWithEmptyString()
{
$this->object->setMessage('');
$this->object->setString('');
$this->assertEquals('', $this->object->getMessage());
}
/**
* getMessage test - message is defined
* message with BBCode defined
*
* @return void
*/
public function testGetMessageWithMessageWithBBCode()
{
$this->object->setMessage('[kbd]test[/kbd] [doc@cfg_Example]test[/doc]');
$this->assertEquals(
'test test',
$this->object->getMessage()
);
}
/**
* getLevel test
*
* @return void
*/
public function testGetLevel()
{
$this->assertEquals('notice', $this->object->getLevel());
$this->object->setNumber(Message::SUCCESS);
$this->assertEquals('success', $this->object->getLevel());
$this->object->setNumber(Message::ERROR);
$this->assertEquals('error', $this->object->getLevel());
}
/**
* testing display method (output string and _is_displayed variable)
*
* @return void
*/
public function testDisplay()
{
$this->assertFalse($this->object->isDisplayed());
$this->object->setMessage('Test Message');
$this->expectOutputString(
'
'
. 'Test Message
'
);
$this->object->display();
$this->assertTrue($this->object->isDisplayed());
}
/**
* getDisplay test
*
* @return void
*/
public function testGetDisplay()
{
$this->object->setMessage('Test Message');
$this->assertEquals(
'
'
. 'Test Message
',
$this->object->getDisplay()
);
}
/**
* isDisplayed test
*
* @return void
*/
public function testIsDisplayed()
{
$this->assertFalse($this->object->isDisplayed(false));
$this->assertTrue($this->object->isDisplayed(true));
$this->assertTrue($this->object->isDisplayed(false));
}
/**
* Data provider for testAffectedRows
*
* @return array Test-data
*/
public function providerAffectedRows()
{
return [
[
1,
'
1 row affected.
',
],
[
2,
'
2 rows affected.
',
],
[
10000,
'
10000 rows affected.
',
],
];
}
/**
* Test for getMessageForAffectedRows() method
*
* @param int $rows Number of rows
* @param string $output Expected string
*
* @return void
*
* @dataProvider providerAffectedRows
*/
public function testAffectedRows($rows, $output): void
{
$this->object = new Message();
$msg = $this->object->getMessageForAffectedRows($rows);
$this->object->addMessage($msg);
$this->expectOutputString($output);
$this->object->display();
}
/**
* Data provider for testInsertedRows
*
* @return array Test-data
*/
public function providerInsertedRows()
{
return [
[
1,
'
1 row inserted.
',
],
[
2,
'
2 rows inserted.
',
],
[
100000,
'
100000 rows inserted.
',
],
];
}
/**
* Test for getMessageForInsertedRows() method
*
* @param int $rows Number of rows
* @param string $output Expected string
*
* @return void
*
* @dataProvider providerInsertedRows
*/
public function testInsertedRows($rows, $output): void
{
$this->object = new Message();
$msg = $this->object->getMessageForInsertedRows($rows);
$this->object->addMessage($msg);
$this->expectOutputString($output);
$this->object->display();
}
/**
* Data provider for testDeletedRows
*
* @return array Test-data
*/
public function providerDeletedRows()
{
return [
[
1,
'
1 row deleted.
',
],
[
2,
'
2 rows deleted.
',
],
[
500000,
'
500000 rows deleted.
',
],
];
}
/**
* Test for getMessageForDeletedRows() method
*
* @param int $rows Number of rows
* @param string $output Expected string
*
* @return void
*
* @dataProvider providerDeletedRows
*/
public function testDeletedRows($rows, $output): void
{
$this->object = new Message();
$msg = $this->object->getMessageForDeletedRows($rows);
$this->object->addMessage($msg);
$this->expectOutputString($output);
$this->object->display();
}
}