View = new View();
$session = new Session();
$this->View->request = new ServerRequest(['session' => $session]);
$this->Flash = new FlashHelper($this->View);
$session->write([
'Flash' => [
'flash' => [
[
'key' => 'flash',
'message' => 'This is a calling',
'element' => 'Flash/default',
'params' => []
]
],
'notification' => [
[
'key' => 'notification',
'message' => 'This is a test of the emergency broadcasting system',
'element' => 'flash_helper',
'params' => [
'title' => 'Notice!',
'name' => 'Alert!'
]
]
],
'classy' => [
[
'key' => 'classy',
'message' => 'Recorded',
'element' => 'flash_classy',
'params' => []
]
],
'stack' => [
[
'key' => 'flash',
'message' => 'This is a calling',
'element' => 'Flash/default',
'params' => []
],
[
'key' => 'notification',
'message' => 'This is a test of the emergency broadcasting system',
'element' => 'flash_helper',
'params' => [
'title' => 'Notice!',
'name' => 'Alert!'
]
],
[
'key' => 'classy',
'message' => 'Recorded',
'element' => 'flash_classy',
'params' => []
]
]
]
]);
}
/**
* tearDown method
*
* @return void
*/
public function tearDown()
{
parent::tearDown();
unset($this->View, $this->Flash);
}
/**
* testFlash method
*
* @return void
*/
public function testFlash()
{
$result = $this->Flash->render();
$expected = '
This is a calling
';
$this->assertContains($expected, $result);
$expected = 'Recorded
';
$result = $this->Flash->render('classy');
$this->assertEquals($expected, $result);
$result = $this->Flash->render('notification');
$expected = [
'div' => ['id' => 'notificationLayout'],
'assertHtml($expected, $result);
$this->assertNull($this->Flash->render('non-existent'));
}
/**
* testFlashThrowsException
*
* @expectedException \UnexpectedValueException
*/
public function testFlashThrowsException()
{
$this->View->request->session()->write('Flash.foo', 'bar');
$this->Flash->render('foo');
}
/**
* test setting the element from the attrs.
*
* @return void
*/
public function testFlashElementInAttrs()
{
$result = $this->Flash->render('notification', [
'element' => 'flash_helper',
'params' => ['title' => 'Notice!', 'name' => 'Alert!']
]);
$expected = [
'div' => ['id' => 'notificationLayout'],
'assertHtml($expected, $result);
}
/**
* test using elements in plugins.
*
* @return void
*/
public function testFlashWithPluginElement()
{
Plugin::load('TestPlugin');
$result = $this->Flash->render('flash', ['element' => 'TestPlugin.Flash/plugin_element']);
$expected = 'this is the plugin element';
$this->assertEquals($expected, $result);
}
/**
* test that when View theme is set, flash element from that theme (plugin) is used.
*
* @return void
*/
public function testFlashWithTheme()
{
Plugin::load('TestTheme');
$this->View->theme = 'TestTheme';
$result = $this->Flash->render('flash');
$expected = 'flash element from TestTheme';
$this->assertContains($expected, $result);
}
/**
* Test that when rendering a stack, messages are displayed in their
* respective element, in the order they were added in the stack
*
* @return void
*/
public function testFlashWithStack()
{
$result = $this->Flash->render('stack');
$expected = [
['div' => ['class' => 'message']], 'This is a calling', '/div',
['div' => ['id' => 'notificationLayout']],
' ['id' => 'classy-message']], 'Recorded', '/div'
];
$this->assertHtml($expected, $result);
$this->assertNull($this->View->request->session()->read('Flash.stack'));
}
/**
* test that when View prefix is set, flash element from that prefix
* is used if available.
*
* @return void
*/
public function testFlashWithPrefix()
{
$this->View->request->params['prefix'] = 'Admin';
$result = $this->Flash->render('flash');
$expected = 'flash element from Admin prefix folder';
$this->assertContains($expected, $result);
}
}