Skip to content

Commit

Permalink
Merge pull request #49 from samsonasik/feature/flash-messenger-show
Browse files Browse the repository at this point in the history
Show session of flashmessenger feature
  • Loading branch information
samsonasik committed Feb 14, 2016
2 parents 3c45455 + 479b496 commit 5d3ec8b
Show file tree
Hide file tree
Showing 7 changed files with 125 additions and 5 deletions.
1 change: 0 additions & 1 deletion .coveralls.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
service_name: travis-ci
src_dir: src
coverage_clover: build/logs/clover.xml
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ script:

after_script:
- php ./vendor/bin/phpcov merge --clover ./build/logs/clover.xml ./build/coverage/
- php ./vendor/bin/coveralls -v --exclude-no-stmt
- travis_retry vendor/bin/coveralls -v --exclude-no-stmt

notifications:
email: false
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"zendframework/zend-debug": "~2.3"
},
"require-dev": {
"satooshi/php-coveralls": "~1.0.0",
"satooshi/php-coveralls": "^1.0",
"phpunit/phpcov": "~2.0",
"zendframework/zend-test": "~2.3",
"zendframework/zend-serializer": "~2.3",
Expand Down
46 changes: 46 additions & 0 deletions src/Module.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,60 @@
*/
namespace SanSessionToolbar;

use Zend\EventManager\EventInterface;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
use Zend\ModuleManager\Feature\DependencyIndicatorInterface;
use Zend\Mvc\MvcEvent;
use Zend\Session\Container;
use Zend\Stdlib\SplQueue;

/**
* @author Abdul Malik Ikhsan <samsonasik@gmail.com>
*/
class Module implements ConfigProviderInterface, DependencyIndicatorInterface
{
/**
* Bootstrap Handle FlashMessenger session show.
*
* @param MvcEvent $e
*/
public function onBootstrap(MvcEvent $e)
{
$app = $e->getApplication();
$sharedEvm = $app->getEventManager()->getSharedManager();

$sharedEvm->attach(
'Zend\Mvc\Controller\AbstractActionController',
'dispatch',
array($this, 'flashMessengerHandler'),
2
);
}

/**
* @param EventInterface
*/
public function flashMessengerHandler(EventInterface $e)
{
$controller = $e->getTarget();
$flash = $controller->plugin('flashMessenger');

$container = new Container('FlashMessenger');
$reCreateFlash = $container->getArrayCopy();

foreach ($reCreateFlash as $key => $row) {
if ($row instanceof SplQueue) {
$flashPerNameSpace = $flash->setNamespace($key);
$valuesMessage = array();
foreach ($row->toArray() as $keyArray => $rowArray) {
$flashPerNameSpace->addMessage($rowArray);
$valuesMessage[] = $rowArray;
}
$container->offsetSet($key, $valuesMessage);
}
}
}

/**
* {@inheritdoc}
*/
Expand Down
1 change: 0 additions & 1 deletion test/Collector/SessionCollectorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
namespace SanSessionToolbarTest\Collector;

use PHPUnit_Framework_TestCase;
use ReflectionClass;
use SanSessionToolbar\Collector\SessionCollector;
use SanSessionToolbar\Manager\SessionManager;
use Zend\Mvc\MvcEvent;
Expand Down
2 changes: 1 addition & 1 deletion test/Manager/SessionMangerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
namespace SanSessionToolbarTest\Manager;

use PHPUnit_Framework_TestCase;
use Zend\Session\Container;
use SanSessionToolbar\Manager\SessionManager;
use Zend\Session\Container;

/**
* This class tests SessionManager class.
Expand Down
76 changes: 76 additions & 0 deletions test/ModuleTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@

use PHPUnit_Framework_TestCase;
use SanSessionToolbar\Module;
use Zend\Session\Container;
use Zend\Stdlib\SplQueue;

/**
* This class tests Module class.
Expand All @@ -37,6 +39,80 @@ protected function setUp()
$this->module = new Module();
}

public function provideHasMessages()
{
return array(
array(false),
array(true),
);
}

/**
* @dataProvider provideHasMessages
* @runInSeparateProcess
* @covers SanSessionToolbar\Module::onBootstrap()
* @covers SanSessionToolbar\Module::flashMessengerHandler()
*/
public function testOnBootstrap($hasMessages)
{
$e = $this->prophesize('Zend\Mvc\MvcEvent');

$application = $this->prophesize('Zend\Mvc\Application');
$eventManager = $this->prophesize('Zend\EventManager\EventManager');
$sharedEvm = $this->prophesize('Zend\EventManager\SharedEventManager');
$sharedEvmAttach = $sharedEvm->attach(
'Zend\Mvc\Controller\AbstractActionController',
'dispatch',
array($this->module, 'flashMessengerHandler'),
2
);
$module = $this->module;
$abstractActionController = $this->prophesize('Zend\Mvc\Controller\AbstractActionController');
$flashMessenger = $this->prophesize('Zend\Mvc\Controller\Plugin\FlashMessenger');

$sharedEvmAttach->will(function() use ($module, $e, $hasMessages, $abstractActionController, $flashMessenger) {
if ($hasMessages) {
$namespace = 'flash';
$message = 'a message';

$splQueue = new SplQueue();
$splQueue->push($message);

$container = new Container('FlashMessenger');
$container->offsetSet($namespace, $splQueue);

$flashMessenger->setNamespace($namespace)
->willReturn($flashMessenger)
->shouldBeCalled();
$flashMessenger->addMessage($message)
->willReturn($flashMessenger)
->shouldBeCalled();
}
$abstractActionController->plugin('flashMessenger')
->willReturn($flashMessenger)
->shouldBeCalled();
$e->getTarget()
->willReturn($abstractActionController)
->shouldBeCalled();

$module->flashMessengerHandler($e->reveal());
});
$sharedEvmAttach->shouldBeCalled();

$eventManager->getSharedManager()
->willReturn($sharedEvm)
->shouldBeCalled();
$application->getEventManager()
->willReturn($eventManager)
->shouldBeCalled();

$e->getApplication()
->willReturn($application)
->shouldBeCalled();

$this->module->onBootstrap($e->reveal());
}

/**
* @covers SanSessionToolbar\Module::getConfig()
*/
Expand Down

0 comments on commit 5d3ec8b

Please sign in to comment.