Begin unit tests for repositories

This commit is contained in:
Dane Everitt 2017-08-26 19:58:24 -05:00
parent 72735c24f7
commit f451e4dc47
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
18 changed files with 734 additions and 43 deletions

View file

@ -26,6 +26,8 @@ namespace Pterodactyl\Services\Database;
use Illuminate\Database\DatabaseManager;
use Illuminate\Contracts\Encryption\Encrypter;
use Pterodactyl\Contracts\Repository\DatabaseRepositoryInterface;
use Pterodactyl\Exceptions\DisplayException;
use Pterodactyl\Extensions\DynamicDatabaseConnection;
use Pterodactyl\Contracts\Repository\DatabaseHostRepositoryInterface;
@ -36,6 +38,11 @@ class DatabaseHostService
*/
protected $database;
/**
* @var \Pterodactyl\Contracts\Repository\DatabaseRepositoryInterface
*/
protected $databaseRepository;
/**
* @var \Pterodactyl\Extensions\DynamicDatabaseConnection
*/
@ -55,17 +62,20 @@ class DatabaseHostService
* DatabaseHostService constructor.
*
* @param \Illuminate\Database\DatabaseManager $database
* @param \Pterodactyl\Contracts\Repository\DatabaseRepositoryInterface $databaseRepository
* @param \Pterodactyl\Contracts\Repository\DatabaseHostRepositoryInterface $repository
* @param \Pterodactyl\Extensions\DynamicDatabaseConnection $dynamic
* @param \Illuminate\Contracts\Encryption\Encrypter $encrypter
*/
public function __construct(
DatabaseManager $database,
DatabaseRepositoryInterface $databaseRepository,
DatabaseHostRepositoryInterface $repository,
DynamicDatabaseConnection $dynamic,
Encrypter $encrypter
) {
$this->database = $database;
$this->databaseRepository = $databaseRepository;
$this->dynamic = $dynamic;
$this->encrypter = $encrypter;
$this->repository = $repository;
@ -111,6 +121,7 @@ class DatabaseHostService
* @return mixed
*
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
*/
public function update($id, array $data)
{
@ -142,6 +153,11 @@ class DatabaseHostService
*/
public function delete($id)
{
return $this->repository->deleteIfNoDatabases($id);
$count = $this->databaseRepository->findCountWhere([['database_host_id', '=', $id]]);
if ($count > 0) {
throw new DisplayException(trans('admin/exceptions.databases.delete_has_databases'));
}
return $this->repository->delete($id);
}
}