Просмотр исходного кода

add test for revert single page

yohei0125 4 лет назад
Родитель
Сommit
fa0f076c5a
1 измененных файлов с 76 добавлено и 24 удалено
  1. 76 24
      packages/app/test/integration/service/v5.non-public-page.test.ts

+ 76 - 24
packages/app/test/integration/service/v5.non-public-page.test.ts

@@ -34,6 +34,28 @@ describe('PageService page operations with non-public pages', () => {
     });
   };
 
+  /**
+   * Revert
+   */
+  // user id
+  const userIdRevert1 = new mongoose.Types.ObjectId();
+  const userIdRevert2 = new mongoose.Types.ObjectId();
+  const userIdRevert3 = new mongoose.Types.ObjectId();
+  // group id
+  const groupIdRevertIsolate = new mongoose.Types.ObjectId();
+  const groupIdRevertA = new mongoose.Types.ObjectId();
+  const groupIdRevertB = new mongoose.Types.ObjectId();
+  const groupIdRevertC = new mongoose.Types.ObjectId();
+  // page id
+  const pageIdRevert1 = new mongoose.Types.ObjectId();
+  const pageIdRevert2 = new mongoose.Types.ObjectId();
+  // revision id
+  const revisionIdRevert1 = new mongoose.Types.ObjectId();
+  const revisionIdRevert2 = new mongoose.Types.ObjectId();
+  // tag id
+  const tagIdRevert1 = new mongoose.Types.ObjectId();
+  const tagIdRevert2 = new mongoose.Types.ObjectId();
+
   beforeAll(async() => {
     crowi = await getInstance();
     await crowi.configManager.updateConfigsInTheSameNamespace('crowi', { 'app:isV5Compatible': true });
@@ -84,15 +106,6 @@ describe('PageService page operations with non-public pages', () => {
     /**
      * Revert
      */
-    const userIdRevert1 = new mongoose.Types.ObjectId();
-    const userIdRevert2 = new mongoose.Types.ObjectId();
-    const userIdRevert3 = new mongoose.Types.ObjectId();
-
-    const groupIdRevertIsolate = new mongoose.Types.ObjectId();
-    const groupIdRevertA = new mongoose.Types.ObjectId();
-    const groupIdRevertB = new mongoose.Types.ObjectId();
-    const groupIdRevertC = new mongoose.Types.ObjectId();
-
     await User.insertMany([
       {
         _id: userIdRevert1, name: 'np_revert_user1', username: 'np_revert_user1', email: 'np_revert_user1@example.com',
@@ -167,20 +180,21 @@ describe('PageService page operations with non-public pages', () => {
       },
     ]);
 
-    // page id
-    const pageIdRevert1 = new mongoose.Types.ObjectId();
-    // revision id
-    const revisionIdRevert1 = new mongoose.Types.ObjectId();
-    // tag id
-    const tagIdRevert1 = new mongoose.Types.ObjectId();
-
     await Page.insertMany([
       {
         _id: pageIdRevert1,
         path: '/trash/np_revert1',
         grant: Page.GRANT_RESTRICTED,
-        creator: dummyUser1,
-        lastUpdateUser: dummyUser1._id,
+        revision: revisionIdRevert1,
+        status: Page.STATUS_DELETED,
+        parent: rootPage._id,
+      },
+      {
+        _id: pageIdRevert2,
+        path: '/trash/np_revert2',
+        grant: Page.GRANT_USER_GROUP,
+        grantedGroup: groupIdRevertA,
+        grantedUsers: [userIdRevert1._id, userIdRevert2._id, userIdRevert3._id],
         revision: revisionIdRevert1,
         status: Page.STATUS_DELETED,
         parent: rootPage._id,
@@ -192,12 +206,20 @@ describe('PageService page operations with non-public pages', () => {
         pageId: pageIdRevert1,
         body: 'np_revert1',
         format: 'markdown',
-        author: dummyUser1,
+        author: dummyUser1._id,
+      },
+      {
+        _id: revisionIdRevert2,
+        pageId: pageIdRevert2,
+        body: 'np_revert2',
+        format: 'markdown',
+        author: userIdRevert1,
       },
     ]);
 
     await Tag.insertMany([
       { _id: tagIdRevert1, name: 'np_revertTag1' },
+      { _id: tagIdRevert2, name: 'np_revertTag2' },
     ]);
 
     await PageTagRelation.insertMany([
@@ -206,6 +228,11 @@ describe('PageService page operations with non-public pages', () => {
         relatedTag: tagIdRevert1,
         isPageTrashed: true,
       },
+      {
+        relatedPage: pageIdRevert2,
+        relatedTag: tagIdRevert2,
+        isPageTrashed: true,
+      },
     ]);
   });
 
@@ -248,13 +275,13 @@ describe('PageService page operations with non-public pages', () => {
 
     };
     test('revert single deleted page with GRANT_RESTRICTED', async() => {
-      const deletedPage = await Page.findOne({ path: '/trash/np_revert1', status: Page.STATUS_DELETED, grant: Page.GRANT_RESTRICTED });
-      const revision = await Revision.findOne({ pageId: deletedPage._id });
+      const trashedPage = await Page.findOne({ path: '/trash/np_revert1', status: Page.STATUS_DELETED, grant: Page.GRANT_RESTRICTED });
+      const revision = await Revision.findOne({ pageId: trashedPage._id });
       const tag = await Tag.findOne({ name: 'np_revertTag1' });
-      const deletedPageTagRelation = await PageTagRelation.findOne({ relatedPage: deletedPage._id, relatedTag: tag._id, isPageTrashed: true });
-      expectAllToBeTruthy([deletedPage, revision, tag, deletedPageTagRelation]);
+      const deletedPageTagRelation = await PageTagRelation.findOne({ relatedPage: trashedPage._id, relatedTag: tag._id, isPageTrashed: true });
+      expectAllToBeTruthy([trashedPage, revision, tag, deletedPageTagRelation]);
 
-      await revertDeletedPage(deletedPage, dummyUser1, {}, false);
+      await revertDeletedPage(trashedPage, dummyUser1, {}, false);
       const revertedPage = await Page.findOne({ path: '/np_revert1' });
       const deltedPageBeforeRevert = await Page.findOne({ path: '/trash/np_revert1' });
       const pageTagRelation = await PageTagRelation.findOne({ relatedPage: revertedPage._id, relatedTag: tag._id });
@@ -267,5 +294,30 @@ describe('PageService page operations with non-public pages', () => {
       expect(revertedPage.grant).toBe(Page.GRANT_RESTRICTED);
       expect(pageTagRelation.isPageTrashed).toBe(false);
     });
+    test('revert single deleted page with GRANT_USER_GROUP', async() => {
+      const user1 = await User.findOne({ name: 'np_revert_user1' });
+      const user2 = await User.findOne({ name: 'np_revert_user2' });
+      const user3 = await User.findOne({ name: 'np_revert_user3' });
+      const trashedPage = await Page.findOne({ path: '/trash/np_revert2', status: Page.STATUS_DELETED, grant: Page.GRANT_USER_GROUP });
+      const revision = await Revision.findOne({ pageId: trashedPage._id });
+      const tag = await Tag.findOne({ name: 'np_revertTag2' });
+      const deletedPageTagRelation = await PageTagRelation.findOne({ relatedPage: trashedPage._id, relatedTag: tag._id, isPageTrashed: true });
+      expectAllToBeTruthy([trashedPage, revision, tag, deletedPageTagRelation, user2, user3]);
+
+      await revertDeletedPage(trashedPage, user1, {}, false);
+      const revertedPage = await Page.findOne({ path: '/np_revert2' });
+      const deltedPageBeforeRevert = await Page.findOne({ path: '/trash/np_revert2' });
+      const pageTagRelation = await PageTagRelation.findOne({ relatedPage: revertedPage._id, relatedTag: tag._id });
+      expectAllToBeTruthy([revertedPage, pageTagRelation]);
+
+      expect(deltedPageBeforeRevert).toBe(null);
+
+      expect(revertedPage.parent).toStrictEqual(rootPage._id);
+      expect(revertedPage.status).toBe(Page.STATUS_PUBLISHED);
+      expect(revertedPage.grant).toBe(Page.GRANT_USER_GROUP);
+      expect(revertedPage.grantedGroup).toStrictEqual(groupIdRevertA);
+      expect(revertedPage.grantedUsers).toStrictEqual([user1._id, user2._id, user3._id]);
+      expect(pageTagRelation.isPageTrashed).toBe(false);
+    });
   });
 });