/** * @covers \jjok\Flasher\Factory::createSessionFlasher */ public function testSessionFlasherCanBeCreated() { $factory = new Factory(); // $session = array(); $namespace = 'test'; // $flasher = $factory->createSessionFlasher($session, 'test'); $mock_message = $this->getMockBuilder('jjok\\Flasher\\Messages\\AbstractMessage')->disableOriginalConstructor()->getMock(); $serialized_message = serialize($mock_message); $session = array($namespace => array($serialized_message, $serialized_message), 'an unrelated thing' => 'some value'); $flasher = $factory->createSessionFlasher($session, $namespace); $this->assertInstanceOf('\\jjok\\Flasher\\SessionFlasher', $flasher); # Check session has been emptied $this->assertCount(1, $session); $this->assertArrayNotHasKey($namespace, $session); $this->assertArrayHasKey('an unrelated thing', $session); $this->assertEquals('some value', $session['an unrelated thing']); # Destroy the queue and save to session unset($flasher); $this->assertArrayHasKey($namespace, $session); $this->assertCount(2, $session); $this->assertCount(2, $session[$namespace]); $this->assertInstanceOf('jjok\\Flasher\\Messages\\AbstractMessage', unserialize($session[$namespace][0])); $this->assertInstanceOf('jjok\\Flasher\\Messages\\AbstractMessage', unserialize($session[$namespace][1])); }
<?php use jjok\Flasher\Factory; use jjok\Flasher\Messages\Message; require __DIR__ . '/../src/jjok/Flasher/Factory.php'; require __DIR__ . '/../src/jjok/Flasher/Flasher.php'; require __DIR__ . '/../src/jjok/Flasher/SessionFlasher.php'; require __DIR__ . '/../src/jjok/Flasher/Messages/AbstractMessage.php'; require __DIR__ . '/../src/jjok/Flasher/Messages/Message.php'; session_start(); $factory = new Factory(); $message_queue = $factory->createSessionFlasher($_SESSION, 'queued_messages'); $message_queue->enqueue(new Message('This is a message that was stored in the session.')); # Object is destroyed when page reloads or something unset($message_queue); $message_queue = $factory->createSessionFlasher($_SESSION, 'queued_messages'); while (!$message_queue->isEmpty()) { echo $message_queue->dequeue(); }