27         $conversations_fixture = [
    32                     'participants' => json_encode([[
'id' => 1], [
'id' => 2], [
'id' => 3]], JSON_THROW_ON_ERROR)
    37                         'message' => 
'Hello World',
    39                         'timestamp' => (string) time()
    47                     'participants' => json_encode([[
'id' => 3], [
'id' => 4]], JSON_THROW_ON_ERROR)
    52                         'message' => 
'Hello World',
    54                         'timestamp' => (string) time()
    62                     'participants' => json_encode([[
'id' => 5], [
'id' => 1]], JSON_THROW_ON_ERROR)
    67                         'message' => 
'Hello World',
    69                         'timestamp' => (string) time()
    77                     'participants' => json_encode([[
'id' => 6], [
'id' => 1]], JSON_THROW_ON_ERROR)
    83         $user = $this->getMockBuilder(ilObjUser::class)->onlyMethods([
'getId'])->disableOriginalConstructor()->getMock();
    84         $user->method(
'getId')->willReturn(1);
    85         $db = $this->createMock(ilDBInterface::class);
    86         $resultMock = $this->createMock(ilDBStatement::class);
    88         $db->expects($this->once())
    90             ->with($this->stringContains(
'FROM osc_conversation'))
    91             ->willReturn($resultMock);
    93         $db->expects($this->exactly(count($conversations_fixture) - 1))
    95             ->with($this->stringContains(
'FROM osc_messages'))
    96             ->willReturn($resultMock);
    98         $db->expects($this->exactly((count($conversations_fixture) * 2) - 1 + 1))->method(
'fetchAssoc')->with($resultMock)->willReturnOnConsecutiveCalls(
    99             $conversations_fixture[0][
'conversation'],
   100             $conversations_fixture[0][
'messages'][0],
   101             $conversations_fixture[1][
'conversation'],
   102             $conversations_fixture[2][
'conversation'],
   103             $conversations_fixture[2][
'messages'][0],
   104             $conversations_fixture[3][
'conversation'],
   114         $conversations = $repository->findByIds(
array_map(
static function (array $conversation): 
string {
   115             return $conversation[
'conversation'][
'id'];
   116         }, $conversations_fixture));
   118         self::assertCount(count($conversations_fixture) - 1, $conversations);
   120         self::assertSame($conversations_fixture[0][
'conversation'][
'id'], $conversations[0]->
getId());
   121         self::assertTrue($conversations[0]->isGroup());
   122         self::assertSame($conversations_fixture[0][
'messages'][0][
'id'], $conversations[0]->getLastMessage()->
getId());
   124         self::assertFalse($conversations[1]->isGroup());
   125         self::assertSame($conversations_fixture[2][
'conversation'][
'id'], $conversations[1]->
getId());
   126         self::assertSame($conversations_fixture[2][
'messages'][0][
'id'], $conversations[1]->getLastMessage()->
getId());
   128         self::assertFalse($conversations[2]->isGroup());
   129         self::assertSame($conversations_fixture[3][
'conversation'][
'id'], $conversations[2]->
getId());
   130         self::assertSame(
'', $conversations[2]->getLastMessage()->
getId());