Controller = new Controller(new ServerRequest(['session' => new Session()]));
$this->ComponentRegistry = new ComponentRegistry($this->Controller);
$this->Flash = new FlashComponent($this->ComponentRegistry);
$this->Session = new Session();
}
/**
* tearDown method
*
* @return void
*/
public function tearDown()
{
parent::tearDown();
$this->Session->destroy();
}
/**
* testSet method
*
* @return void
* @covers \Cake\Controller\Component\FlashComponent::set
*/
public function testSet()
{
$this->assertNull($this->Session->read('Flash.flash'));
$this->Flash->set('This is a test message');
$expected = [
[
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/default',
'params' => []
]
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result);
$this->Flash->set('This is a test message', ['element' => 'test', 'params' => ['foo' => 'bar']]);
$expected[] = [
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/test',
'params' => ['foo' => 'bar']
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result);
$this->Flash->set('This is a test message', ['element' => 'MyPlugin.alert']);
$expected[] = [
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'MyPlugin.Flash/alert',
'params' => []
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result);
$this->Flash->set('This is a test message', ['key' => 'foobar']);
$expected = [
[
'message' => 'This is a test message',
'key' => 'foobar',
'element' => 'Flash/default',
'params' => []
]
];
$result = $this->Session->read('Flash.foobar');
$this->assertEquals($expected, $result);
}
public function testDuplicateIgnored()
{
$this->assertNull($this->Session->read('Flash.flash'));
$this->Flash->setConfig('duplicate', false);
$this->Flash->set('This test message should appear once only');
$this->Flash->set('This test message should appear once only');
$result = $this->Session->read('Flash.flash');
$this->assertCount(1, $result);
}
/**
* @return void
*/
public function testSetEscape()
{
$this->assertNull($this->Session->read('Flash.flash'));
$this->Flash->set('This is a test message', ['escape' => false, 'params' => ['foo' => 'bar']]);
$expected = [
[
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/default',
'params' => ['foo' => 'bar', 'escape' => false]
]
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result);
$this->Flash->set('This is a test message', ['key' => 'escaped', 'escape' => false, 'params' => ['foo' => 'bar', 'escape' => true]]);
$expected = [
[
'message' => 'This is a test message',
'key' => 'escaped',
'element' => 'Flash/default',
'params' => ['foo' => 'bar', 'escape' => true]
]
];
$result = $this->Session->read('Flash.escaped');
$this->assertEquals($expected, $result);
}
/**
* test setting messages with using the clear option
*
* @return void
* @covers \Cake\Controller\Component\FlashComponent::set
*/
public function testSetWithClear()
{
$this->assertNull($this->Session->read('Flash.flash'));
$this->Flash->set('This is a test message');
$expected = [
[
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/default',
'params' => []
]
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result);
$this->Flash->set('This is another test message', ['clear' => true]);
$expected = [
[
'message' => 'This is another test message',
'key' => 'flash',
'element' => 'Flash/default',
'params' => []
]
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result);
}
/**
* testSetWithException method
*
* @return void
* @covers \Cake\Controller\Component\FlashComponent::set
*/
public function testSetWithException()
{
$this->assertNull($this->Session->read('Flash.flash'));
$this->Flash->set(new Exception('This is a test message', 404));
$expected = [
[
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/default',
'params' => ['code' => 404]
]
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result);
}
/**
* testSetWithComponentConfiguration method
*
* @return void
*/
public function testSetWithComponentConfiguration()
{
$this->assertNull($this->Session->read('Flash.flash'));
$this->Controller->loadComponent('Flash', ['element' => 'test']);
$this->Controller->Flash->set('This is a test message');
$expected = [
[
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/test',
'params' => []
]
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result);
}
/**
* Test magic call method.
*
* @covers \Cake\Controller\Component\FlashComponent::__call
* @return void
*/
public function testCall()
{
$this->assertNull($this->Session->read('Flash.flash'));
$this->Flash->success('It worked');
$expected = [
[
'message' => 'It worked',
'key' => 'flash',
'element' => 'Flash/success',
'params' => []
]
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result);
$this->Flash->error('It did not work', ['element' => 'error_thing']);
$expected[] = [
'message' => 'It did not work',
'key' => 'flash',
'element' => 'Flash/error',
'params' => []
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result, 'Element is ignored in magic call.');
$this->Flash->success('It worked', ['plugin' => 'MyPlugin']);
$expected[] = [
'message' => 'It worked',
'key' => 'flash',
'element' => 'MyPlugin.Flash/success',
'params' => []
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result);
}
/**
* Test a magic call with the "clear" flag to true
*
* @return void
* @covers \Cake\Controller\Component\FlashComponent::set
*/
public function testCallWithClear()
{
$this->assertNull($this->Session->read('Flash.flash'));
$this->Flash->success('It worked');
$expected = [
[
'message' => 'It worked',
'key' => 'flash',
'element' => 'Flash/success',
'params' => []
]
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result);
$this->Flash->success('It worked too', ['clear' => true]);
$expected = [
[
'message' => 'It worked too',
'key' => 'flash',
'element' => 'Flash/success',
'params' => []
]
];
$result = $this->Session->read('Flash.flash');
$this->assertEquals($expected, $result);
}
}