From 99cebc8d64b46766a7ff618afc1f30669f59adc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Tue, 5 Mar 2019 17:45:10 +0100 Subject: [PATCH] Implementation ready except disabled attr. --- src/middleware/permissionsMiddleware.js | 1 + src/resolvers/posts.spec.js | 64 ++++++++++++++++++++++--- 2 files changed, 58 insertions(+), 7 deletions(-) diff --git a/src/middleware/permissionsMiddleware.js b/src/middleware/permissionsMiddleware.js index 8cf35c2a3..1c6e8310b 100644 --- a/src/middleware/permissionsMiddleware.js +++ b/src/middleware/permissionsMiddleware.js @@ -42,6 +42,7 @@ const isAuthor = rule({ cache: 'no_cache' })(async (parent, args, { user, driver }) const fromUserMatchesCurrentUser = rule({ cache: 'no_cache' })(async (parent, args, { user, driver }) => { + if (!user) return false const { from: { id: fromId } } = args return user.id === fromId }) diff --git a/src/resolvers/posts.spec.js b/src/resolvers/posts.spec.js index 515216f34..0715f221d 100644 --- a/src/resolvers/posts.spec.js +++ b/src/resolvers/posts.spec.js @@ -206,10 +206,16 @@ describe('DeletePost', () => { describe('disabledBy relation', () => { const setup = async (params = {}) => { + await factory.create('User', {email: 'author@example.org', password: '1234'}) + await factory.authenticateAs({email: 'author@example.org', password: '1234'}) + await factory.create('Post', { + id: 'p9' // that's the ID we will look for + }) + let headers = {} const { email, password } = params if (email && password) { - await factory.create('User', params) + const user = await factory.create('User', params) headers = await login({email, password}) } client = new GraphQLClient(host, { headers }) @@ -218,7 +224,7 @@ describe('disabledBy relation', () => { describe('AddPostDisabledBy', () => { const mutation = ` mutation { - AddPostDisabledBy(from: { id: "u8" }, to: { id: "p9" }) { + AddPostDisabledBy(from: { id: "u7" }, to: { id: "p9" }) { from { id } @@ -263,17 +269,47 @@ describe('disabledBy relation', () => { }) }) - it.todo('sets current user') - it.todo('updates .disabled on post') + it('returns created relation', async () => { + const expected = { + AddPostDisabledBy: { + from: { id: 'u7' }, + to: { id: 'p9' } + } + } + await expect(client.request(mutation)).resolves.toEqual(expected) + }) + + it('sets current user', async () => { + await client.request(mutation) + const query = `{ Post { id, disabledBy { id } } }` + const expected = { Post: [{ id: 'p9', disabledBy: { id: 'u7' } }] } + await expect(client.request(query)).resolves.toEqual(expected) + }) + + it('updates .disabled on post', async () => { + await client.request(mutation) + const query = `{ Post { id disabled } }` + const expected = { Post: [ { id: 'p9', disabled: true } ] } + await expect(client.request(query)).resolves.toEqual(expected) + }) }) }) }) }) describe('RemovePostDisabledBy', () => { + beforeEach(async () => { + await factory.create('User', {email: 'anotherModerator@example.org', password: '1234', role: 'moderator'}) + await factory.authenticateAs({email: 'anotherModerator@example.org', password: '1234'}) + await factory.relate('Post', 'DisabledBy', { + from: 'u7', + to: 'p9' + }) + }) + const mutation = ` mutation { - AddPostDisabledBy(from: { id: "u8" }, to: { id: "p9" }) { + RemovePostDisabledBy(from: { id: "u7" }, to: { id: "p9" }) { from { id } @@ -318,8 +354,22 @@ describe('disabledBy relation', () => { }) }) - it.todo('sets current user') - it.todo('updates .disabled on post') + it('returns deleted relation', async () => { + const expected = { + RemovePostDisabledBy: { + from: { id: 'u7' }, + to: { id: 'p9' } + } + } + await expect(client.request(mutation)).resolves.toEqual(expected) + }) + + it('updates .disabled on post', async () => { + await client.request(mutation) + const query = `{ Post { id disabled } }` + const expected = { Post: [ { id: 'p9', disabled: false } ] } + await expect(client.request(query)).resolves.toEqual(expected) + }) }) }) })