40         $this->db->expects(self::exactly($insert))->method(
'nextId')->willReturnCallback(
function (
string $table): 
int {
    41             return count($this->database) + 1;
    43         $this->db->expects(self::exactly($insert))->method(
'insert')->willReturnCallback(
    44             function (
string $table, array $object): 
int {
    45                 foreach ($object as &$value) {
    49                 $this->database[] = $object;
    50                 return $object[
'notification_osd_id'];
    53         $this->db->expects(self::exactly($queryF))->method(
'queryF')->willReturnCallback(
    54             function (
string $query, array $types, array $values): 
ilPDOStatement {
    56                 if (str_contains($query, 
'WHERE usr_id')) {
    57                     foreach ($this->database as $row) {
    58                         if ($row[
'usr_id'] === $values[0]) {
    59                             $this->result[] = $row;
    63                 if (str_contains($query, 
'WHERE notification_osd_id')) {
    64                     foreach ($this->database as $row) {
    65                         if ($row[
'notification_osd_id'] === $values[0]) {
    66                             $this->result[] = $row;
    70                 if (str_contains($query, 
'SELECT count(*) AS count')) {
    71                     $this->result = [0 => [
'count' => count($this->result)]];
    73                 return $this->createMock(ilPDOStatement::class);
    76         $this->db->expects(self::exactly($fetchAssoc))->method(
'fetchAssoc')->willReturnCallback(
    78                 return array_shift($this->result);
    81         $this->db->expects(self::exactly($manipulateF))->method(
'manipulateF')->willReturnCallback(
    82             function (
string $query, array $types, array $values): 
int {
    83                 if (count($values) === 1) {
    84                     foreach ($this->database as $key => $row) {
    85                         if ($row[
'notification_osd_id'] === $values[0]) {
    86                             unset($this->database[$key]);
    91                 if (count($values) === 2) {
    93                     foreach ($this->database as $key => $row) {
    94                         if ($row[
'usr_id'] === $values[0] && $row[
'type'] === $values[1]) {
    95                             unset($this->database[$key]);
 Class ilPDOStatement is a Wrapper Class for PDOStatement.