feat: Implement user management functionality with impersonation support
This commit is contained in:
53
tests/Domain/Users/UserRepositoryTest.php
Normal file
53
tests/Domain/Users/UserRepositoryTest.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
require_once __DIR__ . '/../../../autoload/Domain/Users/UserRepository.php';
|
||||
|
||||
use Domain\Users\UserRepository;
|
||||
|
||||
class FakeUsersMdb
|
||||
{
|
||||
public $last_select = [];
|
||||
public $last_get = [];
|
||||
private $rows = [];
|
||||
|
||||
public function __construct( array $rows )
|
||||
{
|
||||
$this -> rows = $rows;
|
||||
}
|
||||
|
||||
public function select( $table, $columns, $where )
|
||||
{
|
||||
$this -> last_select = [ 'table' => $table, 'columns' => $columns, 'where' => $where ];
|
||||
return $this -> rows;
|
||||
}
|
||||
|
||||
public function get( $table, $columns, $where )
|
||||
{
|
||||
$this -> last_get = [ 'table' => $table, 'columns' => $columns, 'where' => $where ];
|
||||
foreach ( $this -> rows as $row )
|
||||
{
|
||||
if ( (int)$row['id'] === (int)$where['id'] )
|
||||
return $row;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function run_user_repository_tests()
|
||||
{
|
||||
$rows = [
|
||||
[ 'id' => 1, 'email' => 'admin@example.com', 'name' => 'Admin', 'surname' => 'User' ],
|
||||
[ 'id' => 3, 'email' => 'user@example.com', 'name' => 'Normal', 'surname' => 'User' ]
|
||||
];
|
||||
|
||||
$fake_mdb = new FakeUsersMdb( $rows );
|
||||
$repository = new UserRepository( $fake_mdb );
|
||||
|
||||
$all = $repository -> all();
|
||||
assert_true( count( $all ) === 2, 'Expected all() to return all users.' );
|
||||
assert_true( $fake_mdb -> last_select['table'] === 'users', 'Expected all() to query users table.' );
|
||||
|
||||
$user = $repository -> byId( 3 );
|
||||
assert_true( (int)$user['id'] === 3, 'Expected byId() to return matching user.' );
|
||||
assert_true( (int)$fake_mdb -> last_get['where']['id'] === 3, 'Expected byId() to query requested id.' );
|
||||
}
|
||||
Reference in New Issue
Block a user