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.' ); }