diff --git a/backend/src/graphql/messages.ts b/backend/src/graphql/messages.ts index 59694914a..c51950cc8 100644 --- a/backend/src/graphql/messages.ts +++ b/backend/src/graphql/messages.ts @@ -21,11 +21,13 @@ export const messageQuery = () => { return gql` query($roomId: ID!) { Message(roomId: $roomId) { + _id id content - author { - id - } + senderId + username + avatar + date } } ` diff --git a/backend/src/schema/resolvers/messages.spec.ts b/backend/src/schema/resolvers/messages.spec.ts index e3e9db17a..3ee905be9 100644 --- a/backend/src/schema/resolvers/messages.spec.ts +++ b/backend/src/schema/resolvers/messages.spec.ts @@ -184,20 +184,23 @@ describe('Message', () => { describe('room exists with authenticated user chatting', () => { it('returns the messages', async () => { - await expect(query({ + const result = await query({ query: messageQuery(), variables: { roomId, }, - })).resolves.toMatchObject({ + }) + expect(result).toMatchObject({ errors: undefined, data: { Message: [{ id: expect.any(String), + _id: result.data.Message[0].id, content: 'Some nice message to other chatting user', - author: { - id: 'chatting-user', - }, + senderId: 'chatting-user', + username: 'Chatting User', + avatar: expect.any(String), + date: expect.any(String), }], }, }) @@ -235,29 +238,32 @@ describe('Message', () => { { id: expect.any(String), content: 'Some nice message to other chatting user', - author: { - id: 'chatting-user', - }, + senderId: 'chatting-user', + username: 'Chatting User', + avatar: expect.any(String), + date: expect.any(String), }, { id: expect.any(String), content: 'A nice response message to chatting user', - author: { - id: 'other-chatting-user', - }, + senderId: 'other-chatting-user', + username: 'Other Chatting User', + avatar: expect.any(String), + date: expect.any(String), }, { id: expect.any(String), content: 'And another nice message to other chatting user', - author: { - id: 'chatting-user', - }, - } + senderId: 'chatting-user', + username: 'Chatting User', + avatar: expect.any(String), + date: expect.any(String), + }, ], }, }) }) - }) + }) }) describe('room exists, authenticated user not in room', () => { diff --git a/backend/src/schema/resolvers/messages.ts b/backend/src/schema/resolvers/messages.ts index b692d3848..0be0298d1 100644 --- a/backend/src/schema/resolvers/messages.ts +++ b/backend/src/schema/resolvers/messages.ts @@ -13,7 +13,13 @@ export default { id: context.user.id, }, } - return neo4jgraphql(object, params, context, resolveInfo) + const resolved = await neo4jgraphql(object, params, context, resolveInfo) + if (resolved) { + resolved.forEach((message) => { + message._id = message.id + }) + } + return resolved }, }, Mutation: { diff --git a/backend/src/schema/types/type/Message.gql b/backend/src/schema/types/type/Message.gql index 5b14104db..4a3346079 100644 --- a/backend/src/schema/types/type/Message.gql +++ b/backend/src/schema/types/type/Message.gql @@ -11,6 +11,11 @@ type Message { author: User! @relation(name: "CREATED", direction: "IN") room: Room! @relation(name: "INSIDE", direction: "OUT") + + senderId: String! @cypher(statement: "MATCH (this)<-[:CREATED]-(user:User) RETURN user.id") + username: String! @cypher(statement: "MATCH (this)<-[:CREATED]-(user:User) RETURN user.name") + avatar: String @cypher(statement: "MATCH (this)<-[:CREATED]-(:User)-[:AVATAR_IMAGE]->(image:Image) RETURN image.url") + date: String! @cypher(statement: "RETURN this.createdAt") } type Mutation {