From 03c739032d3630ab9cd0cd19ab973a206d4c374b Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Mon, 16 Oct 2023 21:21:03 -0400 Subject: [PATCH] fix: views.list should not include deleted users --- server/models/View.test.ts | 49 ++++++++++++++++++++++++++++++++++++++ server/models/View.ts | 1 - 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 server/models/View.test.ts diff --git a/server/models/View.test.ts b/server/models/View.test.ts new file mode 100644 index 000000000..b9dbf626d --- /dev/null +++ b/server/models/View.test.ts @@ -0,0 +1,49 @@ +import { buildTeam, buildDocument, buildUser } from "@server/test/factories"; +import View from "./View"; + +describe("View", () => { + describe("findByDocument", () => { + it("should return list of views", async () => { + const team = await buildTeam(); + const user = await buildUser({ + teamId: team.id, + }); + const document = await buildDocument({ + teamId: team.id, + }); + + await View.incrementOrCreate({ + documentId: document.id, + userId: user.id, + }); + + const views = await View.findByDocument(document.id, { + includeSuspended: false, + }); + expect(views.length).toEqual(1); + expect(views[0].user.id).toEqual(user.id); + }); + + it("should not return views for deleted users", async () => { + const team = await buildTeam(); + const user = await buildUser({ + teamId: team.id, + }); + const document = await buildDocument({ + teamId: team.id, + }); + + await View.incrementOrCreate({ + documentId: document.id, + userId: user.id, + }); + + await user.destroy(); + + const views = await View.findByDocument(document.id, { + includeSuspended: false, + }); + expect(views.length).toEqual(0); + }); + }); +}); diff --git a/server/models/View.ts b/server/models/View.ts index 0137fabab..eb5877700 100644 --- a/server/models/View.ts +++ b/server/models/View.ts @@ -82,7 +82,6 @@ class View extends IdModel { include: [ { model: User, - paranoid: false, required: true, ...(includeSuspended ? {}