Added unit tests for cache of enabled apps
This commit is contained in:
parent
9d5f18c02f
commit
4a93a6e060
|
@ -337,15 +337,7 @@ class Test_App extends PHPUnit_Framework_TestCase {
|
|||
|
||||
\OC_User::setUserId($user);
|
||||
|
||||
$appConfig = $this->getMock(
|
||||
'\OC\AppConfig',
|
||||
array('getValues'),
|
||||
array(\OC_DB::getConnection()),
|
||||
'',
|
||||
false
|
||||
);
|
||||
|
||||
$appConfig->expects($this->once())
|
||||
$this->setupAppConfigMock()->expects($this->once())
|
||||
->method('getValues')
|
||||
->will($this->returnValue(
|
||||
array(
|
||||
|
@ -358,7 +350,6 @@ class Test_App extends PHPUnit_Framework_TestCase {
|
|||
)
|
||||
)
|
||||
);
|
||||
$this->registerAppConfig($appConfig);
|
||||
|
||||
$apps = \OC_App::getEnabledApps(true, $forceAll);
|
||||
$this->assertEquals($expectedApps, $apps);
|
||||
|
@ -377,6 +368,79 @@ class Test_App extends PHPUnit_Framework_TestCase {
|
|||
$group2->delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test isEnabledApps() with cache, not re-reading the list of
|
||||
* enabled apps more than once when a user is set.
|
||||
*/
|
||||
public function testEnabledAppsCache() {
|
||||
$userManager = \OC::$server->getUserManager();
|
||||
$user1 = $userManager->createUser(self::TEST_USER1, self::TEST_USER1);
|
||||
|
||||
\OC_User::setUserId(self::TEST_USER1);
|
||||
|
||||
$this->setupAppConfigMock()->expects($this->once())
|
||||
->method('getValues')
|
||||
->will($this->returnValue(
|
||||
array(
|
||||
'app3' => 'yes',
|
||||
'app2' => 'no',
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$apps = \OC_App::getEnabledApps(true);
|
||||
$this->assertEquals(array('files', 'app3'), $apps);
|
||||
|
||||
// mock should not be called again here
|
||||
$apps = \OC_App::getEnabledApps(false);
|
||||
$this->assertEquals(array('files', 'app3'), $apps);
|
||||
|
||||
$this->restoreAppConfig();
|
||||
\OC_User::setUserId(null);
|
||||
|
||||
$user1->delete();
|
||||
// clear user cache...
|
||||
$userManager->delete(self::TEST_USER1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the apps list is re-requested (not cached) when
|
||||
* no user is set.
|
||||
*/
|
||||
public function testEnabledAppsNoCache() {
|
||||
$this->setupAppConfigMock()->expects($this->exactly(2))
|
||||
->method('getValues')
|
||||
->will($this->returnValue(
|
||||
array(
|
||||
'app3' => 'yes',
|
||||
'app2' => 'no',
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$apps = \OC_App::getEnabledApps(true);
|
||||
$this->assertEquals(array('files', 'app3'), $apps);
|
||||
|
||||
// mock should be called again here
|
||||
$apps = \OC_App::getEnabledApps(false);
|
||||
$this->assertEquals(array('files', 'app3'), $apps);
|
||||
|
||||
$this->restoreAppConfig();
|
||||
}
|
||||
|
||||
private function setupAppConfigMock() {
|
||||
$appConfig = $this->getMock(
|
||||
'\OC\AppConfig',
|
||||
array('getValues'),
|
||||
array(\OC_DB::getConnection()),
|
||||
'',
|
||||
false
|
||||
);
|
||||
|
||||
$this->registerAppConfig($appConfig);
|
||||
return $appConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register an app config mock for testing purposes.
|
||||
* @param $appConfig app config mock
|
||||
|
|
Loading…
Reference in New Issue