feat: duplicate a document as draft (#6782)

* feat: duplicate a document as draft

* review

* Default `publish` toggle to match current document

Ensures duplicating a draft does not publish it.

---------

Co-authored-by: Tom Moor <tom.moor@gmail.com>
This commit is contained in:
Hemachandar
2024-04-13 06:17:59 +05:30
committed by GitHub
parent 0b99a88cd7
commit 581944e754
5 changed files with 63 additions and 11 deletions

View File

@@ -26,6 +26,7 @@ describe("documentDuplicator", () => {
expect(response[0].title).toEqual(original.title);
expect(response[0].text).toEqual(original.text);
expect(response[0].emoji).toEqual(original.emoji);
expect(response[0].publishedAt).toBeInstanceOf(Date);
});
it("should duplicate document with title override", async () => {
@@ -51,6 +52,7 @@ describe("documentDuplicator", () => {
expect(response[0].title).toEqual("New title");
expect(response[0].text).toEqual(original.text);
expect(response[0].emoji).toEqual(original.emoji);
expect(response[0].publishedAt).toBeInstanceOf(Date);
});
it("should duplicate child documents with recursive=true", async () => {
@@ -81,4 +83,29 @@ describe("documentDuplicator", () => {
expect(response).toHaveLength(2);
});
it("should duplicate existing document as draft", async () => {
const user = await buildUser();
const original = await buildDocument({
userId: user.id,
teamId: user.teamId,
});
const response = await sequelize.transaction((transaction) =>
documentDuplicator({
document: original,
collection: original.collection,
transaction,
publish: false,
user,
ip,
})
);
expect(response).toHaveLength(1);
expect(response[0].title).toEqual(original.title);
expect(response[0].text).toEqual(original.text);
expect(response[0].emoji).toEqual(original.emoji);
expect(response[0].publishedAt).toBeNull();
});
});