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,8 +14,10 @@ export default {
|
|||||||
DeleteUser: async (object, params, context, resolveInfo) => {
|
DeleteUser: async (object, params, context, resolveInfo) => {
|
||||||
const { resource } = params
|
const { resource } = params
|
||||||
const session = context.driver.session()
|
const session = context.driver.session()
|
||||||
|
|
||||||
if (resource && resource.length) {
|
if (resource && resource.length) {
|
||||||
resource.forEach(async node => {
|
await Promise.all(
|
||||||
|
resource.map(async node => {
|
||||||
await session.run(
|
await session.run(
|
||||||
`
|
`
|
||||||
MATCH (resource:${node})<-[:WROTE]-(author:User {id: $userId})
|
MATCH (resource:${node})<-[:WROTE]-(author:User {id: $userId})
|
||||||
@ -25,9 +27,10 @@ export default {
|
|||||||
userId: context.user.id,
|
userId: context.user.id,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
})
|
}),
|
||||||
}
|
)
|
||||||
session.close()
|
session.close()
|
||||||
|
}
|
||||||
return neo4jgraphql(object, params, context, resolveInfo, false)
|
return neo4jgraphql(object, params, context, resolveInfo, false)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -91,6 +91,12 @@ describe('users', () => {
|
|||||||
mutation($id: ID!, $resource: [String]) {
|
mutation($id: ID!, $resource: [String]) {
|
||||||
DeleteUser(id: $id, resource: $resource) {
|
DeleteUser(id: $id, resource: $resource) {
|
||||||
id
|
id
|
||||||
|
contributions {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
comments {
|
||||||
|
id
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
@ -137,24 +143,7 @@ describe('users', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
describe('attempting to delete my own account', () => {
|
describe('attempting to delete my own account', () => {
|
||||||
const commentQueryVariables = { id: 'c155' }
|
let expected
|
||||||
const postQueryVariables = { id: 'p139' }
|
|
||||||
const commentQuery = gql`
|
|
||||||
query($id: ID) {
|
|
||||||
Comment(id: $id) {
|
|
||||||
id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
const postQuery = gql`
|
|
||||||
query($id: ID) {
|
|
||||||
Post(id: $id) {
|
|
||||||
id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await asAuthor.authenticateAs({
|
await asAuthor.authenticateAs({
|
||||||
email: 'test@example.org',
|
email: 'test@example.org',
|
||||||
@ -169,40 +158,20 @@ describe('users', () => {
|
|||||||
postId: 'p139',
|
postId: 'p139',
|
||||||
content: 'Comment by user u343',
|
content: 'Comment by user u343',
|
||||||
})
|
})
|
||||||
})
|
expectedResponse = {
|
||||||
it('deletes my account', async () => {
|
|
||||||
const expected = {
|
|
||||||
DeleteUser: {
|
DeleteUser: {
|
||||||
id: 'u343',
|
id: 'u343',
|
||||||
|
contributions: [{ id: 'p139' }],
|
||||||
|
comments: [{ id: 'c155' }],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
it("deletes my account, but doesn't delete posts or comments by default", async () => {
|
||||||
await expect(client.request(deleteUserMutation, deleteUserVariables)).resolves.toEqual(
|
await expect(client.request(deleteUserMutation, deleteUserVariables)).resolves.toEqual(
|
||||||
expected,
|
expectedResponse,
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
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',
|
|
||||||
},
|
|
||||||
])
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe("deletes a user's", () => {
|
describe("deletes a user's", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
deleteUserVariables = { id: 'u343', resource: [] }
|
deleteUserVariables = { id: 'u343', resource: [] }
|
||||||
@ -210,25 +179,44 @@ describe('users', () => {
|
|||||||
|
|
||||||
it('posts on request', async () => {
|
it('posts on request', async () => {
|
||||||
deleteUserVariables = { id: 'u343', resource: ['Post'] }
|
deleteUserVariables = { id: 'u343', resource: ['Post'] }
|
||||||
await client.request(deleteUserMutation, deleteUserVariables)
|
expectedResponse = {
|
||||||
const { Post } = await client.request(postQuery, postQueryVariables)
|
DeleteUser: {
|
||||||
expect(Post).toEqual([])
|
id: 'u343',
|
||||||
|
contributions: [],
|
||||||
|
comments: [{ id: 'c155' }],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
await expect(client.request(deleteUserMutation, deleteUserVariables)).resolves.toEqual(
|
||||||
|
expectedResponse,
|
||||||
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('comments on request', async () => {
|
it('comments on request', async () => {
|
||||||
deleteUserVariables = { id: 'u343', resource: ['Comment'] }
|
deleteUserVariables = { id: 'u343', resource: ['Comment'] }
|
||||||
await client.request(deleteUserMutation, deleteUserVariables)
|
expectedResponse = {
|
||||||
const { Comment } = await client.request(commentQuery, commentQueryVariables)
|
DeleteUser: {
|
||||||
expect(Comment).toEqual([])
|
id: 'u343',
|
||||||
|
contributions: [{ id: 'p139' }],
|
||||||
|
comments: [],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
await expect(client.request(deleteUserMutation, deleteUserVariables)).resolves.toEqual(
|
||||||
|
expectedResponse,
|
||||||
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('posts and comments on request', async () => {
|
it('posts and comments on request', async () => {
|
||||||
deleteUserVariables = { id: 'u343', resource: ['Post', 'Comment'] }
|
deleteUserVariables = { id: 'u343', resource: ['Post', 'Comment'] }
|
||||||
await client.request(deleteUserMutation, deleteUserVariables)
|
expectedResponse = {
|
||||||
const { Post } = await client.request(postQuery, postQueryVariables)
|
DeleteUser: {
|
||||||
const { Comment } = await client.request(commentQuery, commentQueryVariables)
|
id: 'u343',
|
||||||
expect(Post).toEqual([])
|
contributions: [],
|
||||||
expect(Comment).toEqual([])
|
comments: [],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
await expect(client.request(deleteUserMutation, deleteUserVariables)).resolves.toEqual(
|
||||||
|
expectedResponse,
|
||||||
|
)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user