Rename decide mutation to review

This commit is contained in:
Wolfgang Huß 2019-11-22 15:12:00 +01:00
parent 02bdc5ea5d
commit ec8910d6eb
14 changed files with 84 additions and 82 deletions

View File

@ -147,7 +147,7 @@ const permissions = shield(
shout: isAuthenticated, shout: isAuthenticated,
unshout: isAuthenticated, unshout: isAuthenticated,
changePassword: isAuthenticated, changePassword: isAuthenticated,
decide: isModerator, review: isModerator,
CreateComment: isAuthenticated, CreateComment: isAuthenticated,
UpdateComment: isAuthor, UpdateComment: isAuthor,
DeleteComment: isAuthor, DeleteComment: isAuthor,

View File

@ -111,9 +111,9 @@ beforeAll(async () => {
mutate = client.mutate mutate = client.mutate
authenticatedUser = await moderator.toJson() authenticatedUser = await moderator.toJson()
const decideMutation = gql` const reviewMutation = gql`
mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) { mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) {
decide(resourceId: $resourceId, disable: $disable, closed: $closed) { review(resourceId: $resourceId, disable: $disable, closed: $closed) {
disable disable
} }
} }
@ -124,9 +124,9 @@ beforeAll(async () => {
closed: false, closed: false,
} }
await Promise.all([ await Promise.all([
mutate({ mutation: decideMutation, variables: { ...disableVariables, resourceId: 'c1' } }), mutate({ mutation: reviewMutation, variables: { ...disableVariables, resourceId: 'c1' } }),
mutate({ mutation: decideMutation, variables: { ...disableVariables, resourceId: 'u2' } }), mutate({ mutation: reviewMutation, variables: { ...disableVariables, resourceId: 'u2' } }),
mutate({ mutation: decideMutation, variables: { ...disableVariables, resourceId: 'p2' } }), mutate({ mutation: reviewMutation, variables: { ...disableVariables, resourceId: 'p2' } }),
]) ])
authenticatedUser = null authenticatedUser = null
}) })

View File

@ -25,14 +25,15 @@
export default { export default {
Mutation: { Mutation: {
decide: async (_object, params, context, _resolveInfo) => { review: async (_object, params, context, _resolveInfo) => {
// Wolle console.log('params: ', params)
const { resourceId } = params const { resourceId } = params
// Wolle console.log('resourceId: ', resourceId)
let { disable, closed } = params let { disable, closed } = params
// Wolle console.log('disable: ', disable)
// console.log('closed: ', closed)
disable = disable === undefined ? null : disable disable = disable === undefined ? null : disable
closed = closed === undefined ? null : closed closed = closed === undefined ? null : closed
// Wolle console.log('disable: ', disable) // Wolle console.log('disable: ', disable)
// console.log('closed: ', closed)
const { user: moderator, driver } = context const { user: moderator, driver } = context
let createdRelationshipWithNestedAttributes = null // return value let createdRelationshipWithNestedAttributes = null // return value
@ -134,10 +135,10 @@ export default {
MERGE (claim)<-[review:REVIEWED]-(moderator) MERGE (claim)<-[review:REVIEWED]-(moderator)
ON CREATE SET review.createdAt = $dateTime, review.updatedAt = review.createdAt, ON CREATE SET review.createdAt = $dateTime, review.updatedAt = review.createdAt,
review.disable = CASE WHEN $disable IS NULL review.disable = CASE WHEN $disable IS NULL
THEN false THEN claim.disable
ELSE $disable END, ELSE $disable END,
review.closed = CASE WHEN $closed IS NULL review.closed = CASE WHEN $closed IS NULL
THEN false THEN claim.closed
ELSE $closed END ELSE $closed END
ON MATCH SET ON MATCH SET
review.updatedAt = $dateTime, review.updatedAt = $dateTime,
@ -151,7 +152,7 @@ export default {
SET claim.disable = review.disable, claim.closed = review.closed SET claim.disable = review.disable, claim.closed = review.closed
SET resource.disabled = review.disable SET resource.disabled = review.disable
RETURN moderator, review, claim {.id}, resource, labels(resource)[0] AS type RETURN moderator, review, claim, resource, labels(resource)[0] AS type
` `
// Wolle console.log('cypher: ', cypher) // Wolle console.log('cypher: ', cypher)
@ -191,18 +192,18 @@ export default {
}) })
const txResult = await mutateDecisionWriteTxResultPromise const txResult = await mutateDecisionWriteTxResultPromise
if (!txResult[0]) return null if (!txResult[0]) return null
// const { decision, resource, moderator: moderatorInResult, type } = txResult[0]
// createdRelationshipWithNestedAttributes = {
// ...decision.properties,
// moderator: moderatorInResult.properties,
// type,
// post: null,
// comment: null,
// user: null,
// }
const { moderator: moderatorInResult, review, claim, resource, type } = txResult[0] const { moderator: moderatorInResult, review, claim, resource, type } = txResult[0]
// Wolle console.log('review.properties.disable: ', review.properties.disable)
// console.log('claim.properties.disable: ', claim.properties.disable)
// console.log('resource.properties.disabled: ', resource.properties.disabled)
// console.log('review.properties.closed: ', review.properties.closed)
// console.log('claim.properties.closed: ', claim.properties.closed)
createdRelationshipWithNestedAttributes = { createdRelationshipWithNestedAttributes = {
...review.properties, ...review.properties,
claimId: claim.properties.id,
claimUpdatedAt: claim.properties.updatedAt,
claimDisable: claim.properties.disable,
claimClosed: claim.properties.closed,
moderator: moderatorInResult.properties, moderator: moderatorInResult.properties,
claimId: claim.id, claimId: claim.id,
type, type,

View File

@ -17,9 +17,9 @@ let query,
moderator, moderator,
nonModerator nonModerator
const decideMutation = gql` const reviewMutation = gql`
mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) { mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) {
decide(resourceId: $resourceId, disable: $disable, closed: $closed) { review(resourceId: $resourceId, disable: $disable, closed: $closed) {
post { post {
id id
} }
@ -96,11 +96,11 @@ describe('moderate resources', () => {
await factory.cleanDatabase() await factory.cleanDatabase()
}) })
describe('decide to disable', () => { describe('review to disable', () => {
describe('unauthenticated', () => { describe('unauthenticated', () => {
it('throws authorization error', async () => { it('throws authorization error', async () => {
await expect( await expect(
mutate({ mutation: decideMutation, variables: disableVariables }), mutate({ mutation: reviewMutation, variables: disableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
errors: [{ message: 'Not Authorised!' }], errors: [{ message: 'Not Authorised!' }],
}) })
@ -121,7 +121,7 @@ describe('moderate resources', () => {
it('throws authorization error', async () => { it('throws authorization error', async () => {
await expect( await expect(
mutate({ mutation: decideMutation, variables: disableVariables }), mutate({ mutation: reviewMutation, variables: disableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
errors: [{ message: 'Not Authorised!' }], errors: [{ message: 'Not Authorised!' }],
}) })
@ -144,9 +144,9 @@ describe('moderate resources', () => {
it('returns null', async () => { it('returns null', async () => {
await expect( await expect(
mutate({ mutation: decideMutation, variables: disableVariables }), mutate({ mutation: reviewMutation, variables: disableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: null }, data: { review: null },
}) })
}) })
}) })
@ -165,9 +165,9 @@ describe('moderate resources', () => {
resourceId: 'comment-id', resourceId: 'comment-id',
} }
await expect( await expect(
mutate({ mutation: decideMutation, variables: disableVariables }), mutate({ mutation: reviewMutation, variables: disableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: { comment: { id: 'comment-id' } } }, data: { review: { comment: { id: 'comment-id' } } },
errors: undefined, errors: undefined,
}) })
}) })
@ -190,9 +190,9 @@ describe('moderate resources', () => {
query({ query: commentQuery, variables: resourceVariables }), query({ query: commentQuery, variables: resourceVariables }),
).resolves.toMatchObject(before) ).resolves.toMatchObject(before)
await expect( await expect(
mutate({ mutation: decideMutation, variables: disableVariables }), mutate({ mutation: reviewMutation, variables: disableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: { comment: { id: 'comment-id' } } }, data: { review: { comment: { id: 'comment-id' } } },
}) })
await expect( await expect(
query({ query: commentQuery, variables: resourceVariables }), query({ query: commentQuery, variables: resourceVariables }),
@ -214,9 +214,9 @@ describe('moderate resources', () => {
query({ query: commentQuery, variables: resourceVariables }), query({ query: commentQuery, variables: resourceVariables }),
).resolves.toMatchObject(before) ).resolves.toMatchObject(before)
await expect( await expect(
mutate({ mutation: decideMutation, variables: disableVariables }), mutate({ mutation: reviewMutation, variables: disableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: { comment: { id: 'comment-id' } } }, data: { review: { comment: { id: 'comment-id' } } },
}) })
await expect( await expect(
query({ query: commentQuery, variables: resourceVariables }), query({ query: commentQuery, variables: resourceVariables }),
@ -237,9 +237,9 @@ describe('moderate resources', () => {
resourceId: 'sample-post-id', resourceId: 'sample-post-id',
} }
await expect( await expect(
mutate({ mutation: decideMutation, variables: disableVariables }), mutate({ mutation: reviewMutation, variables: disableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: { post: { id: 'sample-post-id' } } }, data: { review: { post: { id: 'sample-post-id' } } },
}) })
}) })
@ -262,9 +262,9 @@ describe('moderate resources', () => {
query({ query: postQuery, variables: resourceVariables }), query({ query: postQuery, variables: resourceVariables }),
).resolves.toMatchObject(before) ).resolves.toMatchObject(before)
await expect( await expect(
mutate({ mutation: decideMutation, variables: disableVariables }), mutate({ mutation: reviewMutation, variables: disableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: { post: { id: 'sample-post-id' } } }, data: { review: { post: { id: 'sample-post-id' } } },
}) })
await expect( await expect(
query({ query: postQuery, variables: resourceVariables }), query({ query: postQuery, variables: resourceVariables }),
@ -286,9 +286,9 @@ describe('moderate resources', () => {
query({ query: postQuery, variables: resourceVariables }), query({ query: postQuery, variables: resourceVariables }),
).resolves.toMatchObject(before) ).resolves.toMatchObject(before)
await expect( await expect(
mutate({ mutation: decideMutation, variables: disableVariables }), mutate({ mutation: reviewMutation, variables: disableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: { post: { id: 'sample-post-id' } } }, data: { review: { post: { id: 'sample-post-id' } } },
}) })
await expect( await expect(
query({ query: postQuery, variables: resourceVariables }), query({ query: postQuery, variables: resourceVariables }),
@ -307,7 +307,7 @@ describe('moderate resources', () => {
resourceId: 'sample-post-id', resourceId: 'sample-post-id',
} }
await expect( await expect(
mutate({ mutation: decideMutation, variables: enableVariables }), mutate({ mutation: reviewMutation, variables: enableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
errors: [{ message: 'Not Authorised!' }], errors: [{ message: 'Not Authorised!' }],
}) })
@ -332,7 +332,7 @@ describe('moderate resources', () => {
resourceId: 'sample-post-id', resourceId: 'sample-post-id',
} }
await expect( await expect(
mutate({ mutation: decideMutation, variables: enableVariables }), mutate({ mutation: reviewMutation, variables: enableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
errors: [{ message: 'Not Authorised!' }], errors: [{ message: 'Not Authorised!' }],
}) })
@ -355,9 +355,9 @@ describe('moderate resources', () => {
resourceId: 'sample-tag-id', resourceId: 'sample-tag-id',
} }
await expect( await expect(
mutate({ mutation: decideMutation, variables: enableVariables }), mutate({ mutation: reviewMutation, variables: enableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: null }, data: { review: null },
}) })
}) })
}) })
@ -378,14 +378,14 @@ describe('moderate resources', () => {
await factory.create('Comment', { await factory.create('Comment', {
id: 'comment-id', id: 'comment-id',
}) })
await mutate({ mutation: decideMutation, variables: disableVariables }) await mutate({ mutation: reviewMutation, variables: disableVariables })
}) })
it('returns enabled resource id', async () => { it('returns enabled resource id', async () => {
await expect( await expect(
mutate({ mutation: decideMutation, variables: enableVariables }), mutate({ mutation: reviewMutation, variables: enableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: { comment: { id: 'comment-id' } } }, data: { review: { comment: { id: 'comment-id' } } },
}) })
}) })
@ -397,9 +397,9 @@ describe('moderate resources', () => {
} }
await expect( await expect(
mutate({ mutation: decideMutation, variables: enableVariables }), mutate({ mutation: reviewMutation, variables: enableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: { comment: { id: 'comment-id' } } }, data: { review: { comment: { id: 'comment-id' } } },
}) })
await expect( await expect(
query({ query: commentQuery, variables: resourceVariables }), query({ query: commentQuery, variables: resourceVariables }),
@ -412,9 +412,9 @@ describe('moderate resources', () => {
} }
await expect( await expect(
mutate({ mutation: decideMutation, variables: enableVariables }), mutate({ mutation: reviewMutation, variables: enableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: { comment: { id: 'comment-id' } } }, data: { review: { comment: { id: 'comment-id' } } },
}) })
await expect( await expect(
query({ query: commentQuery, variables: resourceVariables }), query({ query: commentQuery, variables: resourceVariables }),
@ -436,14 +436,14 @@ describe('moderate resources', () => {
await factory.create('Post', { await factory.create('Post', {
id: 'post-id', id: 'post-id',
}) })
await mutate({ mutation: decideMutation, variables: disableVariables }) await mutate({ mutation: reviewMutation, variables: disableVariables })
}) })
it('returns enabled resource id', async () => { it('returns enabled resource id', async () => {
await expect( await expect(
mutate({ mutation: decideMutation, variables: enableVariables }), mutate({ mutation: reviewMutation, variables: enableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: { post: { id: 'post-id' } } }, data: { review: { post: { id: 'post-id' } } },
}) })
}) })
@ -452,9 +452,9 @@ describe('moderate resources', () => {
data: { Post: [{ id: 'post-id', reviewedByModerator: { id: 'moderator-id' } }] }, data: { Post: [{ id: 'post-id', reviewedByModerator: { id: 'moderator-id' } }] },
} }
await expect( await expect(
mutate({ mutation: decideMutation, variables: enableVariables }), mutate({ mutation: reviewMutation, variables: enableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: { post: { id: 'post-id' } } }, data: { review: { post: { id: 'post-id' } } },
}) })
await expect( await expect(
query({ query: postQuery, variables: resourceVariables }), query({ query: postQuery, variables: resourceVariables }),
@ -467,9 +467,9 @@ describe('moderate resources', () => {
} }
await expect( await expect(
mutate({ mutation: decideMutation, variables: enableVariables }), mutate({ mutation: reviewMutation, variables: enableVariables }),
).resolves.toMatchObject({ ).resolves.toMatchObject({
data: { decide: { post: { id: 'post-id' } } }, data: { review: { post: { id: 'post-id' } } },
}) })
await expect( await expect(
query({ query: postQuery, variables: resourceVariables }), query({ query: postQuery, variables: resourceVariables }),

View File

@ -20,7 +20,7 @@ const disable = async id => {
await mutate({ await mutate({
mutation: gql` mutation: gql`
mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) { mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) {
decide(resourceId: $resourceId, disable: $disable, closed: $closed) { review(resourceId: $resourceId, disable: $disable, closed: $closed) {
disable disable
} }
} }

View File

@ -8,16 +8,10 @@ type REPORTED {
claimUpdatedAt: String! claimUpdatedAt: String!
claimClosed: Boolean! claimClosed: Boolean!
# Wolle decision: DECIDED
# @cypher(statement: "MATCH (resource)<-[decision:DECIDED {uuid: $decisionUuid}]-(user:User) RETURN decision")
submitter: User submitter: User
@cypher(statement: "MATCH (resource)<-[:REPORTED]-(user:User) RETURN user") # @cypher(statement: "MATCH (resource)<-[:REPORTED]-(user:User) RETURN user")
# not yet supported
# resource: ReportResource
# @cypher(statement: "MATCH (resource)<-[:REPORTED]-(user:User) RETURN resource")
type: String type: String
@cypher(statement: "MATCH (resource)<-[:REPORTED]-(user:User) RETURN labels(resource)[0]") # @cypher(statement: "MATCH (resource)<-[:REPORTED]-(user:User) RETURN labels(resource)[0]")
user: User user: User
post: Post post: Post
comment: Comment comment: Comment

View File

@ -5,13 +5,16 @@ type REVIEWED {
# reasonDescription: String # reasonDescription: String
disable: Boolean! disable: Boolean!
closed: Boolean! closed: Boolean!
claimId: ID! claimId: ID!
# Wolle last: Boolean! claimDisable: Boolean!
claimUpdatedAt: String!
claimClosed: Boolean!
moderator: User moderator: User
# @cypher(statement: "MATCH (resource)<-[:DECIDED]-(moderator:User) RETURN moderator") # Wolle @cypher(statement: "MATCH (resource)<-[:DECIDED]-(moderator:User) RETURN moderator")
# not yet supported # not yet supported
# resource: ReportResource # Wolle resource: ReportResource
# @cypher(statement: "MATCH (resource)<-[:DECIDED]-(:User) RETURN resource") # @cypher(statement: "MATCH (resource)<-[:DECIDED]-(:User) RETURN resource")
type: String type: String
# @cypher(statement: "MATCH (resource)<-[:DECIDED]-(user:User) RETURN labels(resource)[0]") # @cypher(statement: "MATCH (resource)<-[:DECIDED]-(user:User) RETURN labels(resource)[0]")
@ -21,5 +24,5 @@ type REVIEWED {
} }
type Mutation { type Mutation {
decide(resourceId: ID!, disable: Boolean, closed: Boolean): REVIEWED review(resourceId: ID!, disable: Boolean, closed: Boolean): REVIEWED
} }

View File

@ -737,10 +737,10 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
]) ])
authenticatedUser = null authenticatedUser = null
// only decide after report !!! // only review after report !!!
const decideMutation = gql` const reviewMutation = gql`
mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) { mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) {
decide(resourceId: $resourceId, disable: $disable, closed: $closed) { review(resourceId: $resourceId, disable: $disable, closed: $closed) {
disable disable
} }
} }
@ -753,14 +753,14 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
authenticatedUser = await bobDerBaumeister.toJson() authenticatedUser = await bobDerBaumeister.toJson()
await Promise.all([ await Promise.all([
mutate({ mutate({
mutation: decideMutation, mutation: reviewMutation,
variables: { variables: {
...disableVariables, ...disableVariables,
resourceId: 'p11', resourceId: 'p11',
}, },
}), }),
mutate({ mutate({
mutation: decideMutation, mutation: reviewMutation,
variables: { variables: {
...disableVariables, ...disableVariables,
resourceId: 'c5', resourceId: 'c5',

View File

@ -78,6 +78,7 @@ export default {
}, 1500) }, 1500)
} catch (err) { } catch (err) {
this.success = false this.success = false
this.isOpen = false
} finally { } finally {
this.loading = false this.loading = false
} }

View File

@ -55,7 +55,7 @@ export default {
await this.$apollo.mutate({ await this.$apollo.mutate({
mutation: gql` mutation: gql`
mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) { mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) {
decide(resourceId: $resourceId, disable: $disable, closed: $closed) { review(resourceId: $resourceId, disable: $disable, closed: $closed) {
disable disable
} }
} }
@ -69,6 +69,7 @@ export default {
}, 1000) }, 1000)
} catch (err) { } catch (err) {
this.$toast.error(err.message) this.$toast.error(err.message)
this.isOpen = false
} }
}, },
}, },

View File

@ -149,6 +149,7 @@ export default {
default: default:
this.$toast.error(err.message) this.$toast.error(err.message)
} }
this.isOpen = false
this.loading = false this.loading = false
}) })
}, },

View File

@ -54,7 +54,7 @@ export default {
await this.$apollo.mutate({ await this.$apollo.mutate({
mutation: gql` mutation: gql`
mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) { mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) {
decide(resourceId: $resourceId, disable: $disable, closed: $closed) { review(resourceId: $resourceId, disable: $disable, closed: $closed) {
disable disable
} }
} }
@ -68,6 +68,7 @@ export default {
}, 1000) }, 1000)
} catch (err) { } catch (err) {
this.$toast.error(err.message) this.$toast.error(err.message)
this.isOpen = false
} }
}, },
}, },

View File

@ -111,10 +111,10 @@ export const reportMutation = () => {
` `
} }
export const decideMutation = () => { export const reviewMutation = () => {
return gql` return gql`
mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) { mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) {
decide(resourceId: $resourceId, disable: $disable, closed: $closed) { review(resourceId: $resourceId, disable: $disable, closed: $closed) {
disable disable
} }
} }

View File

@ -168,7 +168,7 @@
<script> <script>
import HcEmpty from '~/components/Empty/Empty' import HcEmpty from '~/components/Empty/Empty'
import HcUser from '~/components/User/User' import HcUser from '~/components/User/User'
import { reportListQuery, decideMutation } from '~/graphql/Moderation.js' import { reportListQuery, reviewMutation } from '~/graphql/Moderation.js'
export default { export default {
components: { components: {
@ -253,7 +253,7 @@ export default {
async confirmCallback(resourceId) { async confirmCallback(resourceId) {
this.$apollo this.$apollo
.mutate({ .mutate({
mutation: decideMutation(), mutation: reviewMutation(),
variables: { resourceId, closed: true }, variables: { resourceId, closed: true },
}) })
.then(() => { .then(() => {