| Current File : /home/jvzmxxx/wiki1/extensions/Flow/tests/phpunit/Data/ManagerGroupTest.php |
<?php
namespace Flow\Tests\Data;
use Flow\Container;
use Flow\Data\ManagerGroup;
/**
* @group Flow
*/
class ManagerGroupTest extends \MediaWikiTestCase {
protected function mockStorage() {
$container = new Container;
foreach ( range( 'A', 'D' ) as $letter ) {
$container[$letter] = $this->getMockBuilder( 'Flow\Data\ObjectManager' )
->disableOriginalConstructor()
->getMock();
}
$storage = new ManagerGroup( $container, array(
'A' => 'A',
'B' => 'B',
'C' => 'C',
'D' => 'D',
'stdClass' => 'D',
) );
return array( $storage, $container );
}
public function testClearOnlyCallsRequestedManagers() {
list( $storage, $container ) = $this->mockStorage();
$container['A']->expects( $this->never() )->method( 'clear' );
$container['B']->expects( $this->once() )->method( 'clear' );
$container['C']->expects( $this->never() )->method( 'clear' );
$container['D']->expects( $this->never() )->method( 'clear' );
$storage->getStorage( 'B' );
$storage->clear();
}
public function testClearCallsNoManagersWhenUnused() {
list( $storage, $container ) = $this->mockStorage();
$container['A']->expects( $this->never() )->method( 'clear' );
$container['B']->expects( $this->never() )->method( 'clear' );
$container['C']->expects( $this->never() )->method( 'clear' );
$container['D']->expects( $this->never() )->method( 'clear' );
$storage->clear();
}
public function testCachePurgeCallsAppropriateManager() {
$object = new \stdClass;
list( $storage, $container ) = $this->mockStorage();
$container['A']->expects( $this->never() )->method( 'clear' );
$container['B']->expects( $this->never() )->method( 'clear' );
$container['C']->expects( $this->never() )->method( 'clear' );
$container['D']->expects( $this->once() )
->method( 'cachePurge' )
->with( $this->identicalTo( $object ) );
$storage->cachePurge( $object );
}
}