diff --git a/package.json b/package.json index 5071b870a..ddaee03b6 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "sequelize:migrate": "sequelize db:migrate", "test": "npm run test:frontend && npm run test:server", "test:frontend": "jest", - "test:server": "jest --config=server/.jestconfig.json --runInBand", + "test:server": "jest --config=server/.jestconfig.json --runInBand --forceExit", "precommit": "lint-staged" }, "lint-staged": { @@ -48,7 +48,7 @@ "frontend" ], "setupFiles": [ - "/frontend/utils/setupJest.js", + "/setupJest.js", "/__mocks__/window.js" ] }, diff --git a/server/api/auth.test.js b/server/api/auth.test.js index 114e0bf19..5da560065 100644 --- a/server/api/auth.test.js +++ b/server/api/auth.test.js @@ -6,7 +6,7 @@ import { flushdb, seed } from '../test/support'; const server = new TestServer(app.callback()); beforeEach(flushdb); -afterAll(() => server.close()); +afterAll(server.close); describe.skip('#auth.signup', async () => { it('should signup a new user', async () => { diff --git a/server/api/documents.js b/server/api/documents.js index 282368408..36accaf2d 100644 --- a/server/api/documents.js +++ b/server/api/documents.js @@ -13,12 +13,13 @@ router.post('documents.list', auth(), pagination(), async ctx => { if (direction !== 'ASC') direction = 'DESC'; const user = ctx.state.user; - const documents = await Document.findAll({ + const userId = user.id; + const starredScope = { method: ['withStarred', userId] }; + const documents = await Document.scope('defaultScope', starredScope).findAll({ where: { teamId: user.teamId }, order: [[sort, direction]], offset: ctx.state.pagination.offset, limit: ctx.state.pagination.limit, - include: [{ model: Star, as: 'starred', where: { userId: user.id } }], }); const data = await Promise.all( diff --git a/server/api/documents.test.js b/server/api/documents.test.js index 54f1728fd..000b45bb7 100644 --- a/server/api/documents.test.js +++ b/server/api/documents.test.js @@ -6,7 +6,7 @@ import { flushdb, seed } from '../test/support'; const server = new TestServer(app.callback()); beforeEach(flushdb); -afterAll(() => server.close()); +afterAll(server.close); describe('#documents.list', async () => { it('should return documents', async () => { diff --git a/server/api/user.test.js b/server/api/user.test.js index 7c35cae8e..765d76a9c 100644 --- a/server/api/user.test.js +++ b/server/api/user.test.js @@ -3,12 +3,12 @@ import TestServer from 'fetch-test-server'; import app from '..'; import { User } from '../models'; -import { flushdb, seed, sequelize } from '../test/support'; +import { flushdb, seed } from '../test/support'; const server = new TestServer(app.callback()); beforeEach(flushdb); -afterAll(() => server.close()); +afterAll(server.close); describe('#user.info', async () => { it('should return known user', async () => { diff --git a/server/models/Document.js b/server/models/Document.js index 1cf4a5b94..363f164bb 100644 --- a/server/models/Document.js +++ b/server/models/Document.js @@ -130,6 +130,11 @@ Document.associate = models => { }, { override: true } ); + Document.addScope('withStarred', userId => ({ + include: [ + { model: models.Star, as: 'starred', where: { userId }, required: false }, + ], + })); }; Document.findById = async id => { diff --git a/server/models/User.test.js b/server/models/User.test.js index 343b29d0a..f9326f890 100644 --- a/server/models/User.test.js +++ b/server/models/User.test.js @@ -4,8 +4,6 @@ beforeEach(flushdb); it('should set JWT secret and password digest', async () => { const { user } = await seed(); - await user.save(); - expect(user.passwordDigest).toBeTruthy(); expect(user.getJwtToken()).toBeTruthy(); diff --git a/frontend/utils/setupJest.js b/setupJest.js similarity index 77% rename from frontend/utils/setupJest.js rename to setupJest.js index 61b717c2f..b7cd60686 100644 --- a/frontend/utils/setupJest.js +++ b/setupJest.js @@ -1,8 +1,7 @@ -/* eslint-disable */ import React from 'react'; import { shallow } from 'enzyme'; import toJson from 'enzyme-to-json'; -import localStorage from '../../__mocks__/localStorage'; +import localStorage from './__mocks__/localStorage'; const snap = children => { const wrapper = shallow(children);