From 68521c318a6c7c4f2de24617fbde953f06c11df1 Mon Sep 17 00:00:00 2001 From: Jure Triglav <juretriglav@gmail.com> Date: Thu, 24 Jan 2019 12:13:18 +1300 Subject: [PATCH] test(base-model): test relationship and deletion hook --- .../data-model-component/src/graphql/index.js | 4 ++-- .../data-model-component/src/manuscript.js | 22 ++++++++++++++---- packages/base-model/test/manuscript_test.js | 23 +++++++++++++++++++ 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/packages/base-model/test/data-model-component/src/graphql/index.js b/packages/base-model/test/data-model-component/src/graphql/index.js index d4301e0ad..327558b70 100644 --- a/packages/base-model/test/data-model-component/src/graphql/index.js +++ b/packages/base-model/test/data-model-component/src/graphql/index.js @@ -3,8 +3,8 @@ const resolvers = { manuscript(_, { id }, ctx) { return ctx.connectors.Manuscript.fetchOne(id, ctx) }, - manuscripts(_, { id }, ctx) { - return ctx.connectors.Manuscript.fetchAll(ctx) + manuscripts(_, { where }, ctx) { + return ctx.connectors.Manuscript.fetchAll(where, ctx) }, }, Mutation: { diff --git a/packages/base-model/test/data-model-component/src/manuscript.js b/packages/base-model/test/data-model-component/src/manuscript.js index 76c741882..679c28b38 100644 --- a/packages/base-model/test/data-model-component/src/manuscript.js +++ b/packages/base-model/test/data-model-component/src/manuscript.js @@ -25,12 +25,26 @@ class Manuscript extends BaseModel { } } - async $beforeDelete() { - const { model: Team } = require('@pubsweet/model-team') + static get relationMappings() { + return { + teams: { + relation: BaseModel.HasManyRelation, + modelClass: require.resolve('@pubsweet/model-team/src/team'), + beforeInsert(model) { + model.objectType = 'Manuscript' + }, + filter: { objectType: 'Manuscript' }, + join: { + from: 'manuscripts.id', + to: 'teams.objectId', + }, + }, + } + } - await Team.deleteAssociated(this.type, this.id) + async $beforeDelete() { + return this.$relatedQuery('teams').delete() } } -Manuscript.type = 'manuscript' module.exports = Manuscript diff --git a/packages/base-model/test/manuscript_test.js b/packages/base-model/test/manuscript_test.js index 903d4e1c0..61a3f1401 100644 --- a/packages/base-model/test/manuscript_test.js +++ b/packages/base-model/test/manuscript_test.js @@ -11,6 +11,8 @@ process.env.NODE_CONFIG = `{"pubsweet":{ }}` const { model: Manuscript } = require('./data-model-component') +const { Team } = require('@pubsweet/models') + const { dbCleaner } = require('pubsweet-server/test') describe('Manuscript', () => { @@ -103,4 +105,25 @@ describe('Manuscript', () => { 'Data Integrity Error property updated', ) }) + + it('deletes the related teams when deleted', async () => { + const manuscript = await new Manuscript({ title: 'Test' }).save() + + await new Team({ + role: 'test', + name: 'Test', + objectId: manuscript.id, + objectType: 'Manuscript', + }).save() + + await new Team({ + role: 'test', + name: 'not associated', + }).save() + + await manuscript.delete() + + const teams = await Team.query() + expect(teams).toHaveLength(1) + }) }) -- GitLab