Merge pull request #6451 from Ocelot-Social-Community/room-properties

feat(backend): room properties
This commit is contained in:
Moriz Wahl 2023-06-20 20:24:09 +02:00 committed by GitHub
commit 6904668a22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 57 additions and 5 deletions

View File

@ -9,6 +9,7 @@ export const createRoomMutation = () => {
userId: $userId userId: $userId
) { ) {
id id
roomId
} }
} }
` `
@ -19,8 +20,15 @@ export const roomQuery = () => {
query { query {
Room { Room {
id id
roomId
roomName
users { users {
_id
id id
name
avatar {
url
}
} }
} }
} }

View File

@ -102,11 +102,12 @@ describe('Room', () => {
}, },
}) })
roomId = result.data.CreateRoom.id roomId = result.data.CreateRoom.id
await expect(result).toMatchObject({ expect(result).toMatchObject({
errors: undefined, errors: undefined,
data: { data: {
CreateRoom: { CreateRoom: {
id: expect.any(String), id: expect.any(String),
roomId: result.data.CreateRoom.id,
}, },
}, },
}) })
@ -153,18 +154,31 @@ describe('Room', () => {
}) })
it('returns the room', async () => { it('returns the room', async () => {
await expect(query({ query: roomQuery() })).resolves.toMatchObject({ const result = await query({ query: roomQuery() })
expect(result).toMatchObject({
errors: undefined, errors: undefined,
data: { data: {
Room: [ Room: [
{ {
id: expect.any(String), id: expect.any(String),
roomId: result.data.Room[0].id,
roomName: 'Other Chatting User',
users: expect.arrayContaining([ users: expect.arrayContaining([
{ {
_id: 'chatting-user',
id: 'chatting-user', id: 'chatting-user',
name: 'Chatting User',
avatar: {
url: expect.any(String),
},
}, },
{ {
_id: 'other-chatting-user',
id: 'other-chatting-user', id: 'other-chatting-user',
name: 'Other Chatting User',
avatar: {
url: expect.any(String),
},
}, },
]), ]),
}, },
@ -180,18 +194,31 @@ describe('Room', () => {
}) })
it('returns the room', async () => { it('returns the room', async () => {
await expect(query({ query: roomQuery() })).resolves.toMatchObject({ const result = await query({ query: roomQuery() })
expect(result).toMatchObject({
errors: undefined, errors: undefined,
data: { data: {
Room: [ Room: [
{ {
id: expect.any(String), id: expect.any(String),
roomId: result.data.Room[0].id,
roomName: 'Chatting User',
users: expect.arrayContaining([ users: expect.arrayContaining([
{ {
_id: 'chatting-user',
id: 'chatting-user', id: 'chatting-user',
name: 'Chatting User',
avatar: {
url: expect.any(String),
},
}, },
{ {
_id: 'other-chatting-user',
id: 'other-chatting-user', id: 'other-chatting-user',
name: 'Other Chatting User',
avatar: {
url: expect.any(String),
},
}, },
]), ]),
}, },

View File

@ -8,7 +8,18 @@ export default {
params.filter.users_some = { params.filter.users_some = {
id: context.user.id, id: context.user.id,
} }
return neo4jgraphql(object, params, context, resolveInfo) const resolved = await neo4jgraphql(object, params, context, resolveInfo)
if (resolved) {
resolved.forEach((room) => {
if (room.users) {
room.roomName = room.users.filter((user) => user.id !== context.user.id)[0].name
room.users.forEach((user) => {
user._id = user.id
})
}
})
}
return resolved
}, },
}, },
Mutation: { Mutation: {
@ -37,6 +48,9 @@ export default {
}) })
try { try {
const room = await writeTxResultPromise const room = await writeTxResultPromise
if (room) {
room.roomId = room.id
}
return room return room
} catch (error) { } catch (error) {
throw new Error(error) throw new Error(error)

View File

@ -10,7 +10,10 @@ type Room {
createdAt: String createdAt: String
updatedAt: String updatedAt: String
users: [User]! @relation(name: "CHATS_IN", direction: "IN") users: [User]! @relation(name: "CHATS_IN", direction: "IN")
roomId: String! @cypher(statement: "RETURN this.id")
roomName: String! ## @cypher(statement: "MATCH (this)<-[:CHATS_IN]-(user:User) WHERE NOT user.id = $cypherParams.currentUserId RETURN user[0].name")
} }
type Mutation { type Mutation {