Allow drafts to be created without requiring a collection (#4175)
* feat(server): allow document to be created without collectionId * fix(server): policies for a draft doc without collection * fix(app): hide share button for drafts * feat(server): permissions around publishing a draft * fix(server): return drafts without collection * fix(server): handle draft deletion * fix(server): show drafts in deleted docs * fix(server): allow drafts without collection to be restored * feat(server): return drafts in search results * fix: use buildDraftDocument for drafts * fix: remove isDraftWithoutCollection * fix: do not return drafts for team * fix: put invariants * fix: query clause * fix: check only for undefined * fix: restore includeDrafts clause as it was before
This commit is contained in:
@@ -3,6 +3,7 @@ import {
|
||||
buildUser,
|
||||
buildTeam,
|
||||
buildDocument,
|
||||
buildDraftDocument,
|
||||
buildCollection,
|
||||
} from "@server/test/factories";
|
||||
import { setupTestDatabase } from "@server/test/support";
|
||||
@@ -112,3 +113,35 @@ describe("private collection", () => {
|
||||
expect(abilities.move).toEqual(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("no collection", () => {
|
||||
it("should grant same permissions as that on a draft document except the share permission", async () => {
|
||||
const team = await buildTeam();
|
||||
const user = await buildUser({
|
||||
teamId: team.id,
|
||||
});
|
||||
const document = await buildDraftDocument({
|
||||
teamId: team.id,
|
||||
});
|
||||
const abilities = serialize(user, document);
|
||||
expect(abilities.archive).toEqual(false);
|
||||
expect(abilities.createChildDocument).toEqual(false);
|
||||
expect(abilities.delete).toEqual(true);
|
||||
expect(abilities.download).toEqual(true);
|
||||
expect(abilities.move).toEqual(false);
|
||||
expect(abilities.permanentDelete).toEqual(false);
|
||||
expect(abilities.pin).toEqual(false);
|
||||
expect(abilities.pinToHome).toEqual(false);
|
||||
expect(abilities.read).toEqual(true);
|
||||
expect(abilities.restore).toEqual(false);
|
||||
expect(abilities.share).toEqual(false);
|
||||
expect(abilities.star).toEqual(true);
|
||||
expect(abilities.subscribe).toEqual(false);
|
||||
expect(abilities.unarchive).toEqual(false);
|
||||
expect(abilities.unpin).toEqual(false);
|
||||
expect(abilities.unpublish).toEqual(false);
|
||||
expect(abilities.unstar).toEqual(true);
|
||||
expect(abilities.unsubscribe).toEqual(false);
|
||||
expect(abilities.update).toEqual(true);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user