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(); } }