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

Merge branch 'imprv/page-v5-test-code-rename' into imprv/page-v5-test-code-delete

yohei0125 4 лет назад
Родитель
Сommit
daa0db2387
1 измененных файлов с 91 добавлено и 97 удалено
  1. 91 97
      packages/app/test/integration/service/pagev5.test.ts

+ 91 - 97
packages/app/test/integration/service/pagev5.test.ts

@@ -23,25 +23,6 @@ describe('PageService page operations with only public pages', () => {
   let xssSpy;
 
   let rootPage;
-  let dummyUser1Page;
-
-  // parents
-  let parentForRename1;
-  let parentForRename2;
-  let parentForRename3;
-  let parentForRename4;
-  let parentForRename5;
-  let parentForRename6;
-  let parentForRename7;
-  let parentForRename8;
-  // children
-  let childForRename1;
-  let childForRename2;
-  let childForRename3;
-  let childForRename4;
-  let childForRename5;
-  let childForRename6;
-  let childForRename7;
 
   // pass unless the data is one of [false, 0, '', null, undefined, NaN]
   const expectAllToBeTruthy = (dataList) => {
@@ -97,13 +78,32 @@ describe('PageService page operations with only public pages', () => {
         status: Page.STATUS_PUBLISHED,
       },
     ]);
-    dummyUser1Page = await Page.create('/user/dummyUser1', 'dummyUser1_page', dummyUser1._id, {});
+
+    await Page.create('/user/dummyUser1', 'dummyUser1_page', dummyUser1._id, {});
     await Page.create('/user/dummyUser2', 'dummyUser2_page', dummyUser2._id, {});
 
+    const pageIdForRename1 = new mongoose.Types.ObjectId();
+    const pageIdForRename2 = new mongoose.Types.ObjectId();
+    const pageIdForRename3 = new mongoose.Types.ObjectId();
+    const pageIdForRename4 = new mongoose.Types.ObjectId();
+    const pageIdForRename5 = new mongoose.Types.ObjectId();
+    const pageIdForRename6 = new mongoose.Types.ObjectId();
+    const pageIdForRename7 = new mongoose.Types.ObjectId();
+    const pageIdForRename8 = new mongoose.Types.ObjectId();
+    const pageIdForRename9 = new mongoose.Types.ObjectId();
+    const pageIdForRename10 = new mongoose.Types.ObjectId();
+    const pageIdForRename11 = new mongoose.Types.ObjectId();
+    const pageIdForRename12 = new mongoose.Types.ObjectId();
+    const pageIdForRename13 = new mongoose.Types.ObjectId();
+    const pageIdForRename14 = new mongoose.Types.ObjectId();
+    const pageIdForRename15 = new mongoose.Types.ObjectId();
+    const pageIdForRename16 = new mongoose.Types.ObjectId();
+
     // Create Pages
     await Page.insertMany([
       // parents
       {
+        _id: pageIdForRename1,
         path: '/v5_ParentForRename1',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
@@ -111,42 +111,46 @@ describe('PageService page operations with only public pages', () => {
         parent: rootPage._id,
       },
       {
+        _id: pageIdForRename2,
         path: '/v5_ParentForRename2',
         grant: Page.GRANT_PUBLIC,
-        creator: dummyUser1,
-        lastUpdateUser: dummyUser1._id,
         parent: rootPage._id,
         isEmpty: true,
       },
       {
-        path: '/v5_ParentForRename3',
+        // id not needed for this data
+        path: '/v5_ParentForRename2/dummyChild1',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
         lastUpdateUser: dummyUser1._id,
-        parent: rootPage._id,
+        parent: pageIdForRename2,
       },
       {
-        path: '/v5_ParentForRename4',
+        _id: pageIdForRename3,
+        path: '/v5_ParentForRename3',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
         lastUpdateUser: dummyUser1._id,
         parent: rootPage._id,
       },
       {
-        path: '/v5_ParentForRename5',
+        _id: pageIdForRename4,
+        path: '/v5_ParentForRename4',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
         lastUpdateUser: dummyUser1._id,
         parent: rootPage._id,
       },
       {
-        path: '/v5_ParentForRename6',
+        _id: pageIdForRename5,
+        path: '/v5_ParentForRename5',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
         lastUpdateUser: dummyUser1._id,
         parent: rootPage._id,
       },
       {
+        _id: pageIdForRename7,
         path: '/v5_ParentForRename7',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
@@ -154,6 +158,7 @@ describe('PageService page operations with only public pages', () => {
         parent: rootPage._id,
       },
       {
+        _id: pageIdForRename8,
         path: '/v5_ParentForRename8',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
@@ -161,6 +166,7 @@ describe('PageService page operations with only public pages', () => {
         parent: rootPage._id,
       },
       {
+        _id: pageIdForRename9,
         path: '/v5_ParentForRename9',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
@@ -169,6 +175,7 @@ describe('PageService page operations with only public pages', () => {
       },
       // children
       {
+        _id: pageIdForRename10,
         path: '/v5_ChildForRename1',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
@@ -176,6 +183,7 @@ describe('PageService page operations with only public pages', () => {
         parent: rootPage._id,
       },
       {
+        _id: pageIdForRename11,
         path: '/v5_ChildForRename2',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
@@ -183,6 +191,7 @@ describe('PageService page operations with only public pages', () => {
         parent: rootPage._id,
       },
       {
+        _id: pageIdForRename12,
         path: '/v5_ChildForRename3',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
@@ -191,6 +200,7 @@ describe('PageService page operations with only public pages', () => {
         updatedAt: new Date('2021'),
       },
       {
+        _id: pageIdForRename13,
         path: '/v5_ChildForRename4',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
@@ -198,6 +208,7 @@ describe('PageService page operations with only public pages', () => {
         parent: rootPage._id,
       },
       {
+        _id: pageIdForRename14,
         path: '/v5_ChildForRename5',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
@@ -205,47 +216,19 @@ describe('PageService page operations with only public pages', () => {
         parent: rootPage._id,
       },
       {
-        path: '/v5_ChildForRename6',
-        grant: Page.GRANT_RESTRICTED,
-        creator: dummyUser1,
-        lastUpdateUser: dummyUser1._id,
-        parent: rootPage._id,
-      },
-      {
+        _id: pageIdForRename16,
         path: '/v5_ChildForRename7',
         grant: Page.GRANT_PUBLIC,
         parent: rootPage._id,
         isEmpty: true,
       },
-    ]);
-
-    // Find pages as Parent
-    parentForRename1 = await Page.findOne({ path: '/v5_ParentForRename1' });
-    parentForRename2 = await Page.findOne({ path: '/v5_ParentForRename2' });
-    parentForRename3 = await Page.findOne({ path: '/v5_ParentForRename3' });
-    parentForRename4 = await Page.findOne({ path: '/v5_ParentForRename4' });
-    parentForRename5 = await Page.findOne({ path: '/v5_ParentForRename5' });
-    parentForRename6 = await Page.findOne({ path: '/v5_ParentForRename6' });
-    parentForRename7 = await Page.findOne({ path: '/v5_ParentForRename7' });
-    parentForRename8 = await Page.findOne({ path: '/v5_ParentForRename8' });
-    // Find pages as Child
-    childForRename1 = await Page.findOne({ path: '/v5_ChildForRename1' });
-    childForRename2 = await Page.findOne({ path: '/v5_ChildForRename2' });
-    childForRename3 = await Page.findOne({ path: '/v5_ChildForRename3' });
-    childForRename4 = await Page.findOne({ path: '/v5_ChildForRename4' });
-    childForRename5 = await Page.findOne({ path: '/v5_ChildForRename5' });
-    childForRename6 = await Page.findOne({ path: '/v5_ChildForRename6' });
-    childForRename7 = await Page.findOne({ path: '/v5_ChildForRename7' });
-
-    // create grandchild
-    await Page.insertMany([
       // Grandchild
       {
         path: '/v5_ChildForRename5/v5_GrandchildForRename5',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
         lastUpdateUser: dummyUser1._id,
-        parent: childForRename5._id,
+        parent: pageIdForRename14,
         updatedAt: new Date('2021'),
       },
       {
@@ -253,7 +236,7 @@ describe('PageService page operations with only public pages', () => {
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
         lastUpdateUser: dummyUser1._id,
-        parent: childForRename7._id,
+        parent: pageIdForRename16,
       },
     ]);
 
@@ -353,7 +336,7 @@ describe('PageService page operations with only public pages', () => {
     };
 
     test('Should NOT rename top page', async() => {
-
+      expectAllToBeTruthy([rootPage]);
       let isThrown = false;
       try {
         await crowi.pageService.renamePage(rootPage, '/new_root', dummyUser1, {});
@@ -366,36 +349,47 @@ describe('PageService page operations with only public pages', () => {
     });
 
     test('Should rename/move to under non-empty page', async() => {
-      // rename target page
+      const parentPage = await Page.findOne({ path: '/v5_ParentForRename1' });
+      const childPage = await Page.findOne({ path: '/v5_ChildForRename1' });
+      expectAllToBeTruthy([childPage, parentPage]);
+
       const newPath = '/v5_ParentForRename1/renamedChildForRename1';
-      const renamedPage = await renamePage(childForRename1, newPath, dummyUser1, {});
+      const renamedPage = await renamePage(childPage, newPath, dummyUser1, {});
 
       expect(xssSpy).toHaveBeenCalled();
       expect(renamedPage.path).toBe(newPath);
-      expect(renamedPage.parent).toStrictEqual(parentForRename1._id);
+      expect(renamedPage.parent).toStrictEqual(parentPage._id);
 
     });
 
     test('Should rename/move to under empty page', async() => {
-      // rename target page
+      const parentPage = await Page.findOne({ path: '/v5_ParentForRename2' });
+      const childPage = await Page.findOne({ path: '/v5_ChildForRename2' });
+      expectAllToBeTruthy([childPage, parentPage]);
+      expect(parentPage.isEmpty).toBe(true);
+
       const newPath = '/v5_ParentForRename2/renamedChildForRename2';
-      const renamedPage = await renamePage(childForRename2, newPath, dummyUser1, {});
+      const renamedPage = await renamePage(childPage, newPath, dummyUser1, {});
 
       expect(xssSpy).toHaveBeenCalled();
       expect(renamedPage.path).toBe(newPath);
-      expect(parentForRename2.isEmpty).toBe(true);
-      expect(renamedPage.parent).toStrictEqual(parentForRename2._id);
+      expect(parentPage.isEmpty).toBe(true);
+      expect(renamedPage.parent).toStrictEqual(parentPage._id);
     });
 
     test('Should rename/move with option updateMetadata: true', async() => {
-      // rename target page
+      const parentPage = await Page.findOne({ path: '/v5_ParentForRename3' });
+      const childPage = await Page.findOne({ path: '/v5_ChildForRename3' });
+      expectAllToBeTruthy([childPage, parentPage]);
+      expect(childPage.lastUpdateUser).toStrictEqual(dummyUser1._id);
+
       const newPath = '/v5_ParentForRename3/renamedChildForRename3';
-      const oldUdpateAt = childForRename3.updatedAt;
-      const renamedPage = await renamePage(childForRename3, newPath, dummyUser2, { updateMetadata: true });
+      const oldUdpateAt = childPage.updatedAt;
+      const renamedPage = await renamePage(childPage, newPath, dummyUser2, { updateMetadata: true });
 
       expect(xssSpy).toHaveBeenCalled();
       expect(renamedPage.path).toBe(newPath);
-      expect(renamedPage.parent).toStrictEqual(parentForRename3._id);
+      expect(renamedPage.parent).toStrictEqual(parentPage._id);
       expect(renamedPage.lastUpdateUser).toStrictEqual(dummyUser2._id);
       expect(renamedPage.updatedAt.getFullYear()).toBeGreaterThan(oldUdpateAt.getFullYear());
     });
@@ -404,66 +398,65 @@ describe('PageService page operations with only public pages', () => {
     // uncomment the next test when working on 88097
     // ******************************************
     // test('Should move with option createRedirectPage: true', async() => {
+    // const parentPage = await Page.findOne({ path: '/v5_ParentForRename4' });
+    // const childPage = await Page.findOne({ path: '/v5_ChildForRename4' });
+    // expectAllToBeTruthy([parentPage, childPage]);
+
     //   // rename target page
     //   const newPath = '/v5_ParentForRename4/renamedChildForRename4';
-    //   const renamedPage = await renamePage(childForRename4, newPath, dummyUser2, { createRedirectPage: true });
-    //   const pageRedirect = await PageRedirect.find({ fromPath: childForRename4.path, toPath: renamedPage.path });
+    //   const renamedPage = await renamePage(childPage, newPath, dummyUser2, { createRedirectPage: true });
+    //   const pageRedirect = await PageRedirect.find({ fromPath: childPage.path, toPath: renamedPage.path });
 
     // expect(xssSpy).toHaveBeenCalled();
     //   expect(renamedPage.path).toBe(newPath);
-    //   expect(renamedPage.parent).toStrictEqual(parentForRename4._id);
+    //   expect(renamedPage.parent).toStrictEqual(parentPage._id);
     //   expect(pageRedirect.length).toBeGreaterThan(0);
     // });
 
     test('Should rename/move with descendants', async() => {
-      // rename target page
+      const parentPage = await Page.findOne({ path: '/v5_ParentForRename5' });
+      const childPage = await Page.findOne({ path: '/v5_ChildForRename5' });
+      expectAllToBeTruthy([parentPage, childPage]);
+
       const newPath = '/v5_ParentForRename5/renamedChildForRename5';
-      const renamedPage = await renamePage(childForRename5, newPath, dummyUser1, {});
+      const renamedPage = await renamePage(childPage, newPath, dummyUser1, {});
       // find child of renamed page
-      const grandchildren = await Page.find({ parent: renamedPage._id });
-      const grandchild = grandchildren[0];
+      const grandchild = await Page.findOne({ parent: renamedPage._id });
 
       expect(xssSpy).toHaveBeenCalled();
       expect(renamedPage.path).toBe(newPath);
-      expect(renamedPage.parent).toStrictEqual(parentForRename5._id);
-      // grandchild's parent should be renamed page
+      expect(renamedPage.parent).toStrictEqual(parentPage._id);
+      // grandchild's parent should be the renamed page
       expect(grandchild.parent).toStrictEqual(renamedPage._id);
       expect(grandchild.path).toBe('/v5_ParentForRename5/renamedChildForRename5/v5_GrandchildForRename5');
     });
 
-    test('Should rename/move with same grant', async() => {
-      // rename target page
-      const newPath = '/v5_ParentForRename6/renamedChildForRename6';
-      expect(childForRename6.grant).toBe(Page.GRANT_RESTRICTED);
-      const renamedPage = await renamePage(childForRename6, newPath, dummyUser1, {});
-
-      expect(xssSpy).toHaveBeenCalled();
-      expect(renamedPage.path).toBe(newPath);
-      expect(renamedPage.parent).toStrictEqual(parentForRename6._id);
-      expect(renamedPage.grant).toBe(Page.GRANT_RESTRICTED);
-    });
-
     test('Should rename/move empty page', async() => {
-      // rename target page
+      const parentPage = await Page.findOne({ path: '/v5_ParentForRename7' });
+      const childPage = await Page.findOne({ path: '/v5_ChildForRename7' });
+      expectAllToBeTruthy([parentPage, childPage]);
+      expect(childPage.isEmpty).toBe(true);
+
       const newPath = '/v5_ParentForRename7/renamedChildForRename7';
-      const renamedPage = await renamePage(childForRename7, newPath, dummyUser1, {});
-      // find child of renamed page
+      const renamedPage = await renamePage(childPage, newPath, dummyUser1, {});
       const grandchild = await Page.findOne({ parent: renamedPage._id });
 
       expect(xssSpy).toHaveBeenCalled();
       expect(renamedPage.path).toBe(newPath);
       expect(renamedPage.isEmpty).toBe(true);
-      expect(renamedPage.parent).toStrictEqual(parentForRename7._id);
+      expect(renamedPage.parent).toStrictEqual(parentPage._id);
       // grandchild's parent should be renamed page
       expect(grandchild.parent).toStrictEqual(renamedPage._id);
       expect(grandchild.path).toBe('/v5_ParentForRename7/renamedChildForRename7/v5_GrandchildForRename7');
     });
     test('Should NOT rename/move with existing path', async() => {
-      // rename target page
+      const page = await Page.findOne({ path: '/v5_ParentForRename8' });
+      expectAllToBeTruthy([page]);
+
       const newPath = '/v5_ParentForRename9';
       let isThrown;
       try {
-        await renamePage(parentForRename8, newPath, dummyUser1, {});
+        await renamePage(page, newPath, dummyUser1, {});
       }
       catch (err) {
         isThrown = true;
@@ -510,6 +503,7 @@ describe('PageService page operations with only public pages', () => {
       expect(isThrown).toBe(true);
     });
     test('Should NOT delete /user/hoge page', async() => {
+      const dummyUser1Page = await Page.findOne({ username: 'dummyUser1' });
       expectAllToBeTruthy([dummyUser1Page]);
 
       let isThrown;