allow moving common test logic into traits
This commit is contained in:
parent
67893ca839
commit
3dbfbdaf54
3 changed files with 68 additions and 14 deletions
|
@ -16,12 +16,10 @@ use OC\Files\View;
|
|||
use OCP\IUser;
|
||||
use Sabre\HTTP\Request;
|
||||
use Test\TestCase;
|
||||
use Test\Traits\UserTrait;
|
||||
|
||||
abstract class RequestTest extends TestCase {
|
||||
/**
|
||||
* @var \OC_User_Dummy
|
||||
*/
|
||||
protected $userBackend;
|
||||
use UserTrait;
|
||||
|
||||
/**
|
||||
* @var \OCP\Files\Config\IMountProvider[]
|
||||
|
@ -65,8 +63,6 @@ abstract class RequestTest extends TestCase {
|
|||
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
$this->userBackend = new \OC_User_Dummy();
|
||||
\OC::$server->getUserManager()->registerBackend($this->userBackend);
|
||||
|
||||
$this->serverFactory = new ServerFactory(
|
||||
\OC::$server->getConfig(),
|
||||
|
@ -78,15 +74,10 @@ abstract class RequestTest extends TestCase {
|
|||
);
|
||||
}
|
||||
|
||||
protected function tearDown() {
|
||||
parent::tearDown();
|
||||
\OC::$server->getUserManager()->removeBackend($this->userBackend);
|
||||
}
|
||||
|
||||
protected function setupUser($name, $password) {
|
||||
$this->userBackend->createUser($name, $password);
|
||||
$this->createUser($name, $password);
|
||||
\OC::$server->getMountProviderCollection()->registerProvider($this->getMountProvider($name, [
|
||||
'/' . $name => new Temporary()
|
||||
'/' . $name => '\OC\Files\Storage\Temporary'
|
||||
]));
|
||||
$this->loginAsUser($name);
|
||||
return new View('/' . $name . '/files');
|
||||
|
|
|
@ -32,21 +32,52 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {
|
|||
*/
|
||||
private $commandBus;
|
||||
|
||||
protected function getTestTraits() {
|
||||
$traits = [];
|
||||
$class = $this;
|
||||
do {
|
||||
$traits = array_merge(class_uses($class), $traits);
|
||||
} while ($class = get_parent_class($class));
|
||||
foreach ($traits as $trait => $same) {
|
||||
$traits = array_merge(class_uses($trait), $traits);
|
||||
}
|
||||
$traits = array_unique($traits);
|
||||
return array_filter($traits, function ($trait) {
|
||||
return substr($trait, 0, 5) === 'Test\\';
|
||||
});
|
||||
}
|
||||
|
||||
protected function setUp() {
|
||||
// overwrite the command bus with one we can run ourselves
|
||||
$this->commandBus = new QueueBus();
|
||||
\OC::$server->registerService('AsyncCommandBus', function () {
|
||||
return $this->commandBus;
|
||||
});
|
||||
|
||||
$traits = $this->getTestTraits();
|
||||
foreach ($traits as $trait) {
|
||||
$methodName = 'setUp' . basename(str_replace('\\', '/', $trait));
|
||||
if (method_exists($this, $methodName)) {
|
||||
call_user_func([$this, $methodName]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function tearDown() {
|
||||
$hookExceptions = \OC_Hook::$thrownExceptions;
|
||||
\OC_Hook::$thrownExceptions = [];
|
||||
\OC::$server->getLockingProvider()->releaseAll();
|
||||
if(!empty($hookExceptions)) {
|
||||
if (!empty($hookExceptions)) {
|
||||
throw $hookExceptions[0];
|
||||
}
|
||||
|
||||
$traits = $this->getTestTraits();
|
||||
foreach ($traits as $trait) {
|
||||
$methodName = 'tearDown' . basename(str_replace('\\', '/', $trait));
|
||||
if (method_exists($this, $methodName)) {
|
||||
call_user_func([$this, $methodName]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
32
tests/lib/traits/usertrait.php
Normal file
32
tests/lib/traits/usertrait.php
Normal file
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
namespace Test\Traits;
|
||||
|
||||
/**
|
||||
* Allow creating users in a temporary backend
|
||||
*/
|
||||
trait UserTrait {
|
||||
/**
|
||||
* @var \OC_User_Dummy|\OCP\UserInterface
|
||||
*/
|
||||
protected $userBackend;
|
||||
|
||||
protected function createUser($name, $password) {
|
||||
$this->userBackend->createUser($name, $password);
|
||||
}
|
||||
|
||||
protected function setUpUserTrait() {
|
||||
$this->userBackend = new \OC_User_Dummy();
|
||||
\OC::$server->getUserManager()->registerBackend($this->userBackend);
|
||||
}
|
||||
|
||||
protected function tearDownUserTrait() {
|
||||
\OC::$server->getUserManager()->removeBackend($this->userBackend);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue