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

+ 58 - 15
packages/app/test/integration/service/pagev5.test.ts

@@ -30,6 +30,7 @@ describe('PageService page operations with only public pages', () => {
   let parentForRename4;
   let parentForRename5;
   let parentForRename6;
+  let parentForRename7;
   // children
   let childForRename1;
   let childForRename2;
@@ -37,6 +38,7 @@ describe('PageService page operations with only public pages', () => {
   let childForRename4;
   let childForRename5;
   let childForRename6;
+  let childForRename7;
 
   beforeAll(async() => {
     crowi = await getInstance();
@@ -122,23 +124,30 @@ describe('PageService page operations with only public pages', () => {
         lastUpdateUser: dummyUser1._id,
         parent: rootPage._id,
       },
+      {
+        path: '/v5_ParentForRename7',
+        grant: Page.GRANT_PUBLIC,
+        creator: dummyUser1,
+        lastUpdateUser: dummyUser1._id,
+        parent: rootPage._id,
+      },
       // children
       {
-        path: '/v5_childForRename1',
+        path: '/v5_ChildForRename1',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
         lastUpdateUser: dummyUser1._id,
         parent: rootPage._id,
       },
       {
-        path: '/v5_childForRename2',
+        path: '/v5_ChildForRename2',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
         lastUpdateUser: dummyUser1._id,
         parent: rootPage._id,
       },
       {
-        path: '/v5_childForRename3',
+        path: '/v5_ChildForRename3',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
         lastUpdateUser: dummyUser1._id,
@@ -146,25 +155,32 @@ describe('PageService page operations with only public pages', () => {
         updatedAt: new Date('2021'),
       },
       {
-        path: '/v5_childForRename4',
+        path: '/v5_ChildForRename4',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
         lastUpdateUser: dummyUser1._id,
         parent: rootPage._id,
       },
       {
-        path: '/v5_childForRename5',
+        path: '/v5_ChildForRename5',
         grant: Page.GRANT_PUBLIC,
+        creator: dummyUser1,
+        lastUpdateUser: dummyUser1._id,
         parent: rootPage._id,
-        isEmpty: true,
       },
       {
-        path: '/v5_childForRename6',
+        path: '/v5_ChildForRename6',
         grant: Page.GRANT_RESTRICTED,
         creator: dummyUser1,
         lastUpdateUser: dummyUser1._id,
         parent: rootPage._id,
       },
+      {
+        path: '/v5_ChildForRename7',
+        grant: Page.GRANT_RESTRICTED,
+        parent: rootPage._id,
+        isEmpty: true,
+      },
     ]);
 
     // Find pages as Parent
@@ -174,25 +190,34 @@ describe('PageService page operations with only public pages', () => {
     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' });
     // 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' });
+    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/grandchildForRename5',
+        path: '/v5_ChildForRename5/v5_GrandchildForRename5',
         grant: Page.GRANT_PUBLIC,
         creator: dummyUser1,
         lastUpdateUser: dummyUser1._id,
         parent: childForRename5._id,
         updatedAt: new Date('2021'),
       },
+      {
+        path: '/v5_ChildForRename7/v5_GrandchildForRename7',
+        grant: Page.GRANT_PUBLIC,
+        creator: dummyUser1,
+        lastUpdateUser: dummyUser1._id,
+        parent: childForRename7._id,
+      },
     ]);
 
   });
@@ -282,13 +307,15 @@ describe('PageService page operations with only public pages', () => {
       // rename target page
       const newPath = '/v5_ParentForRename5/renamedChildForRename5';
       const renamedPage = await renamePage(childForRename5, newPath, dummyUser1, {});
+      // find child of renamed page
       const grandchildren = await Page.find({ parent: renamedPage._id });
       const grandchild = grandchildren[0];
 
       expect(renamedPage.path).toBe(newPath);
       expect(renamedPage.parent).toStrictEqual(parentForRename5._id);
+      // grandchild's parent should be renamed page
       expect(grandchild.parent).toStrictEqual(renamedPage._id);
-      expect(grandchild.path).toBe('/v5_ParentForRename5/renamedChildForRename5/grandchildForRename5');
+      expect(grandchild.path).toBe('/v5_ParentForRename5/renamedChildForRename5/v5_GrandchildForRename5');
     });
 
     test('Should move with same grant', async() => {
@@ -301,6 +328,22 @@ describe('PageService page operations with only public pages', () => {
       expect(renamedPage.parent).toStrictEqual(parentForRename6._id);
       expect(renamedPage.grant).toBe(Page.GRANT_RESTRICTED);
     });
+
+    test('Should move empty page', async() => {
+      // rename target page
+      const newPath = '/v5_ParentForRename7/renamedChildForRename7';
+      const renamedPage = await renamePage(childForRename7, newPath, dummyUser1, {});
+      // find child of renamed page
+      const grandchildren = await Page.find({ parent: renamedPage._id });
+      const grandchild = grandchildren[0];
+
+      expect(renamedPage.path).toBe(newPath);
+      expect(renamedPage.isEmpty).toBe(true);
+      expect(renamedPage.parent).toStrictEqual(parentForRename7._id);
+      // grandchild's parent should be renamed page
+      expect(grandchild.parent).toStrictEqual(renamedPage._id);
+      expect(grandchild.path).toBe('/v5_ParentForRename7/renamedChildForRename7/v5_GrandchildForRename7');
+    });
   });
 });