Skip to content

Commit

Permalink
Merge pull request #2 from Kenini1805/base-unit-test
Browse files Browse the repository at this point in the history
Base unit test
  • Loading branch information
Kenini1805 committed May 3, 2019
2 parents 440e9b7 + cc3182a commit 80646e6
Show file tree
Hide file tree
Showing 9 changed files with 438 additions and 5 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -11,4 +11,5 @@ npm-debug.log
yarn-error.log
.docker
.vscode
/coverage

15 changes: 12 additions & 3 deletions app/Http/Controllers/HomeController.php
Expand Up @@ -3,17 +3,24 @@
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Repositories\Contracts\UserRepositoryInterface;

class HomeController extends Controller
{

/**
* @var UserRepositoryInterface
*/
private $userRepository;

/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
public function __construct(UserRepositoryInterface $userRepository)
{
$this->middleware('auth');
$this->userRepository = $userRepository;
}

/**
Expand All @@ -23,6 +30,8 @@ public function __construct()
*/
public function index()
{
return view('home');
$user = $this->userRepository->findAll();

return view('home', compact('user'));
}
}
4 changes: 3 additions & 1 deletion app/Providers/AppServiceProvider.php
Expand Up @@ -2,7 +2,9 @@

namespace App\Providers;

use App\Repositories\UserRepository;
use Illuminate\Support\ServiceProvider;
use App\Repositories\Contracts\UserRepositoryInterface;

class AppServiceProvider extends ServiceProvider
{
Expand All @@ -13,7 +15,7 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot()
{
//
$this->app->bind(UserRepositoryInterface::class, UserRepository::class);
}

/**
Expand Down
173 changes: 173 additions & 0 deletions app/Repositories/BaseRepository.php
@@ -0,0 +1,173 @@
<?php

namespace App\Repositories;

use Illuminate\Support\Facades\App;
use Illuminate\Database\Eloquent\Model;
use App\Repositories\Contracts\RepositoryInterface;
use Illuminate\Database\Query\Builder;

/**
* Class BaseRepository
*
* @package App\Repositories
*/
class BaseRepository implements RepositoryInterface
{
/**
* @var Model
*/
protected $model;

/**
* BaseRepository constructor.
*
* @param Model $model
*/
public function __construct(Model $model)
{
$this->model = $model;
}

/**
* get Model
*
* @return Model
*/
public function model()
{
return get_class($this->model);
}

/**
* make new Model
*
* @return Model
*/
public function makeModel()
{
$this->model = App::make($this->model());

return $this->model;
}
/**
* reset model query
*
* @return void
*/
public function resetModel()
{
$this->makeModel();
}

/**
* @inheritdoc
*/
public function find(array $conditions = [])
{
return $this->model->where($conditions)->get();
}

/**
* @inheritdoc
*/
public function findOne(array $conditions)
{
return $this->model->where($conditions)->first();
}

/**
* @inheritdoc
*/
public function findById(int $id)
{
return $this->model->findOrFail($id);
}

/**
* @inheritdoc
*/
public function create(array $attributes)
{
return $this->model->create($attributes);
}

/**
* @inheritdoc
*/
public function update(Model $model, array $attributes = [])
{
return $model->update($attributes);
}

/**
* @inheritdoc
*/
public function save(Model $model)
{
return $model->save();
}

/**
* @inheritdoc
*/
public function delete(Model $model)
{
return $model->delete();
}

/**
* @inheritdoc
*/
public function get($query)
{
return $query->get();
}

/**
* @inheritdoc
*/
public function destroy(array $ids)
{
return $this->model->destroy($ids);
}

/**
* @inheritdoc
*/
public function findCount(array $conditions)
{
return $this->model->where($conditions)->count();
}

public function toBase($query)
{
return $query->toBase();
}

public function updateMultiple(Builder $query, array $attributes = [])
{
return $query->update($attributes);
}

public function updateOrCreate(array $attributes, array $values)
{
return $this->model->updateOrCreate($attributes, $values);
}

/**
* @inheritdoc
*/
public function findAll($columns = ['*'])
{
return $this->model->all($columns);
}

/**
* @inheritdoc
*/
public function findByIds(array $ids, $columns = ['*'])
{
return $this->model->whereIn('id', $ids)->get($columns);
}
}

0 comments on commit 80646e6

Please sign in to comment.