mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2025-12-13 07:45:56 +00:00
Refactor resolver to use Promise and map
- forEach cannot be used with async/await
This commit is contained in:
parent
ef1f5ea51c
commit
f7b2d52a7e
@ -14,20 +14,23 @@ export default {
|
||||
DeleteUser: async (object, params, context, resolveInfo) => {
|
||||
const { resource } = params
|
||||
const session = context.driver.session()
|
||||
|
||||
if (resource && resource.length) {
|
||||
resource.forEach(async node => {
|
||||
await session.run(
|
||||
`
|
||||
await Promise.all(
|
||||
resource.map(async node => {
|
||||
await session.run(
|
||||
`
|
||||
MATCH (resource:${node})<-[:WROTE]-(author:User {id: $userId})
|
||||
DETACH DELETE resource
|
||||
RETURN author`,
|
||||
{
|
||||
userId: context.user.id,
|
||||
},
|
||||
)
|
||||
})
|
||||
{
|
||||
userId: context.user.id,
|
||||
},
|
||||
)
|
||||
}),
|
||||
)
|
||||
session.close()
|
||||
}
|
||||
session.close()
|
||||
return neo4jgraphql(object, params, context, resolveInfo, false)
|
||||
},
|
||||
},
|
||||
|
||||
@ -91,6 +91,12 @@ describe('users', () => {
|
||||
mutation($id: ID!, $resource: [String]) {
|
||||
DeleteUser(id: $id, resource: $resource) {
|
||||
id
|
||||
contributions {
|
||||
id
|
||||
}
|
||||
comments {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
@ -137,24 +143,7 @@ describe('users', () => {
|
||||
})
|
||||
|
||||
describe('attempting to delete my own account', () => {
|
||||
const commentQueryVariables = { id: 'c155' }
|
||||
const postQueryVariables = { id: 'p139' }
|
||||
const commentQuery = gql`
|
||||
query($id: ID) {
|
||||
Comment(id: $id) {
|
||||
id
|
||||
}
|
||||
}
|
||||
`
|
||||
|
||||
const postQuery = gql`
|
||||
query($id: ID) {
|
||||
Post(id: $id) {
|
||||
id
|
||||
}
|
||||
}
|
||||
`
|
||||
|
||||
let expected
|
||||
beforeEach(async () => {
|
||||
await asAuthor.authenticateAs({
|
||||
email: 'test@example.org',
|
||||
@ -169,38 +158,18 @@ describe('users', () => {
|
||||
postId: 'p139',
|
||||
content: 'Comment by user u343',
|
||||
})
|
||||
})
|
||||
it('deletes my account', async () => {
|
||||
const expected = {
|
||||
expectedResponse = {
|
||||
DeleteUser: {
|
||||
id: 'u343',
|
||||
contributions: [{ id: 'p139' }],
|
||||
comments: [{ id: 'c155' }],
|
||||
},
|
||||
}
|
||||
await expect(client.request(deleteUserMutation, deleteUserVariables)).resolves.toEqual(
|
||||
expected,
|
||||
)
|
||||
})
|
||||
|
||||
describe("doesn't delete a user's", () => {
|
||||
it('comments by default', async () => {
|
||||
await client.request(deleteUserMutation, deleteUserVariables)
|
||||
const { Comment } = await client.request(commentQuery, commentQueryVariables)
|
||||
expect(Comment).toEqual([
|
||||
{
|
||||
id: 'c155',
|
||||
},
|
||||
])
|
||||
})
|
||||
|
||||
it('posts by default', async () => {
|
||||
await client.request(deleteUserMutation, deleteUserVariables)
|
||||
const { Post } = await client.request(postQuery, postQueryVariables)
|
||||
expect(Post).toEqual([
|
||||
{
|
||||
id: 'p139',
|
||||
},
|
||||
])
|
||||
})
|
||||
it("deletes my account, but doesn't delete posts or comments by default", async () => {
|
||||
await expect(client.request(deleteUserMutation, deleteUserVariables)).resolves.toEqual(
|
||||
expectedResponse,
|
||||
)
|
||||
})
|
||||
|
||||
describe("deletes a user's", () => {
|
||||
@ -210,25 +179,44 @@ describe('users', () => {
|
||||
|
||||
it('posts on request', async () => {
|
||||
deleteUserVariables = { id: 'u343', resource: ['Post'] }
|
||||
await client.request(deleteUserMutation, deleteUserVariables)
|
||||
const { Post } = await client.request(postQuery, postQueryVariables)
|
||||
expect(Post).toEqual([])
|
||||
expectedResponse = {
|
||||
DeleteUser: {
|
||||
id: 'u343',
|
||||
contributions: [],
|
||||
comments: [{ id: 'c155' }],
|
||||
},
|
||||
}
|
||||
await expect(client.request(deleteUserMutation, deleteUserVariables)).resolves.toEqual(
|
||||
expectedResponse,
|
||||
)
|
||||
})
|
||||
|
||||
it('comments on request', async () => {
|
||||
deleteUserVariables = { id: 'u343', resource: ['Comment'] }
|
||||
await client.request(deleteUserMutation, deleteUserVariables)
|
||||
const { Comment } = await client.request(commentQuery, commentQueryVariables)
|
||||
expect(Comment).toEqual([])
|
||||
expectedResponse = {
|
||||
DeleteUser: {
|
||||
id: 'u343',
|
||||
contributions: [{ id: 'p139' }],
|
||||
comments: [],
|
||||
},
|
||||
}
|
||||
await expect(client.request(deleteUserMutation, deleteUserVariables)).resolves.toEqual(
|
||||
expectedResponse,
|
||||
)
|
||||
})
|
||||
|
||||
it('posts and comments on request', async () => {
|
||||
deleteUserVariables = { id: 'u343', resource: ['Post', 'Comment'] }
|
||||
await client.request(deleteUserMutation, deleteUserVariables)
|
||||
const { Post } = await client.request(postQuery, postQueryVariables)
|
||||
const { Comment } = await client.request(commentQuery, commentQueryVariables)
|
||||
expect(Post).toEqual([])
|
||||
expect(Comment).toEqual([])
|
||||
expectedResponse = {
|
||||
DeleteUser: {
|
||||
id: 'u343',
|
||||
contributions: [],
|
||||
comments: [],
|
||||
},
|
||||
}
|
||||
await expect(client.request(deleteUserMutation, deleteUserVariables)).resolves.toEqual(
|
||||
expectedResponse,
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user