|
|
@@ -233,7 +233,12 @@ describe('PageService page operations with only public pages', () => {
|
|
|
|
|
|
|
|
|
const pageIdForRevert1 = new mongoose.Types.ObjectId();
|
|
|
+ const pageIdForRevert2 = new mongoose.Types.ObjectId();
|
|
|
+ const pageIdForRevert3 = new mongoose.Types.ObjectId();
|
|
|
+
|
|
|
const revisionIdForRevert1 = new mongoose.Types.ObjectId();
|
|
|
+ const revisionIdForRevert2 = new mongoose.Types.ObjectId();
|
|
|
+ const revisionIdForRevert3 = new mongoose.Types.ObjectId();
|
|
|
|
|
|
await Page.insertMany([
|
|
|
{
|
|
|
@@ -246,6 +251,24 @@ describe('PageService page operations with only public pages', () => {
|
|
|
revision: revisionIdForRevert1,
|
|
|
status: Page.STATUS_DELETED,
|
|
|
},
|
|
|
+ {
|
|
|
+ _id: pageIdForRevert2,
|
|
|
+ path: '/trash/v5_revert2',
|
|
|
+ grant: Page.GRANT_PUBLIC,
|
|
|
+ creator: dummyUser1,
|
|
|
+ lastUpdateUser: dummyUser1._id,
|
|
|
+ revision: revisionIdForRevert2,
|
|
|
+ status: Page.STATUS_DELETED,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ _id: pageIdForRevert3,
|
|
|
+ path: '/trash/v5_revert2/v5_revert3/v5_revert4',
|
|
|
+ grant: Page.GRANT_PUBLIC,
|
|
|
+ creator: dummyUser1,
|
|
|
+ lastUpdateUser: dummyUser1._id,
|
|
|
+ revision: revisionIdForRevert3,
|
|
|
+ status: Page.STATUS_DELETED,
|
|
|
+ },
|
|
|
]);
|
|
|
|
|
|
await Revision.insertMany([
|
|
|
@@ -256,6 +279,20 @@ describe('PageService page operations with only public pages', () => {
|
|
|
format: 'comment',
|
|
|
author: dummyUser1,
|
|
|
},
|
|
|
+ {
|
|
|
+ _id: revisionIdForRevert2,
|
|
|
+ pageId: pageIdForRevert2,
|
|
|
+ body: 'revert2',
|
|
|
+ format: 'comment',
|
|
|
+ author: dummyUser1,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ _id: revisionIdForRevert3,
|
|
|
+ pageId: pageIdForRevert3,
|
|
|
+ body: 'revert3',
|
|
|
+ format: 'comment',
|
|
|
+ author: dummyUser1,
|
|
|
+ },
|
|
|
]);
|
|
|
|
|
|
const tagIdRevert1 = new mongoose.Types.ObjectId();
|
|
|
@@ -430,21 +467,16 @@ describe('PageService page operations with only public pages', () => {
|
|
|
const revertDeletedPage = async(page, user, options = {}, isRecursively = false) => {
|
|
|
// mock return value
|
|
|
const mockedResumableRevertDeletedDescendants = jest.spyOn(crowi.pageService, 'resumableRevertDeletedDescendants').mockReturnValue(null);
|
|
|
+ const revertedPage = await crowi.pageService.revertDeletedPage(page, user, options, isRecursively);
|
|
|
|
|
|
- const updatedPage = await crowi.pageService.revertDeletedPage(page, user, options, isRecursively);
|
|
|
-
|
|
|
- // retrieve the arguments passed when calling method resumableRenameDescendants inside renamePage method
|
|
|
const argsForResumableRevertDeletedDescendants = mockedResumableRevertDeletedDescendants.mock.calls[0];
|
|
|
|
|
|
// restores the original implementation
|
|
|
mockedResumableRevertDeletedDescendants.mockRestore();
|
|
|
+ await crowi.pageService.resumableRevertDeletedDescendants(...argsForResumableRevertDeletedDescendants);
|
|
|
|
|
|
- // revert descendants
|
|
|
- if (isRecursively) {
|
|
|
- await crowi.pageService.resumableRevertDeletedDescendants(...argsForResumableRevertDeletedDescendants);
|
|
|
- }
|
|
|
+ return revertedPage;
|
|
|
|
|
|
- return updatedPage;
|
|
|
};
|
|
|
|
|
|
test('revert single deleted page', async() => {
|
|
|
@@ -465,6 +497,31 @@ describe('PageService page operations with only public pages', () => {
|
|
|
expect(pageTagRelation.isPageTrashed).toBe(false);
|
|
|
|
|
|
});
|
|
|
+
|
|
|
+ // test('revert multiple deleted page (has non existent page in the middle)', async() => {
|
|
|
+ // const deletedPage1 = await Page.findOne({ path: '/trash/v5_revert2' });
|
|
|
+ // const deletedPage2 = await Page.findOne({ path: '/trash/v5_revert2/v5_revert3/v5_revert4' });
|
|
|
+ // const revision1 = await Revision.findOne({ pageId: deletedPage1._id });
|
|
|
+ // const revision2 = await Revision.findOne({ pageId: deletedPage2._id });
|
|
|
+
|
|
|
+ // expectAllToBeTruthy([deletedPage1, deletedPage2, revision1, revision2]);
|
|
|
+ // expect(deletedPage1.status).toBe(Page.STATUS_DELETED);
|
|
|
+ // expect(deletedPage2.status).toBe(Page.STATUS_DELETED);
|
|
|
+
|
|
|
+ // const revertedPage1 = await revertDeletedPage(deletedPage1, dummyUser1, {}, true);
|
|
|
+ // const revertedPage2 = await Page.findOne({ _id: deletedPage2._id });
|
|
|
+ // const newlyCreatedPage = await Page.findOne({ path: '/v5_revert2/v5_revert3' });
|
|
|
+
|
|
|
+ // expectAllToBeTruthy([revertedPage1, revertedPage2, newlyCreatedPage]);
|
|
|
+ // expect(revertedPage1.path).toBe('/v5_revert2');
|
|
|
+ // expect(revertedPage2.path).toBe('/v5_revert2/v5_revert3/v5_revert4');
|
|
|
+ // expect(newlyCreatedPage.parent).toBe(revertedPage1._id);
|
|
|
+ // expect(revertedPage2.parent).toBe(newlyCreatedPage._id);
|
|
|
+ // expect(revertedPage1.status).toBe(Page.STATUS_PUBLISHED);
|
|
|
+ // expect(revertedPage2.status).toBe(Page.STATUS_PUBLISHED);
|
|
|
+ // expect(newlyCreatedPage.status).toBe(Page.STATUS_PUBLISHED);
|
|
|
+
|
|
|
+ // });
|
|
|
});
|
|
|
|
|
|
});
|