Taichi Masuyama 4 лет назад
Родитель
Сommit
f571f67c3d

+ 10 - 9
packages/app/src/server/service/page.js

@@ -788,7 +788,7 @@ class PageService {
 
     // migrate recursively
     try {
-      await this._v5RecursiveMigration(Page.GRANT_PUBLIC, regexps);
+      await this._v5RecursiveMigration(null, regexps);
     }
     catch (err) {
       logger.error('V5 initial miration failed.', err);
@@ -836,21 +836,17 @@ class PageService {
    */
   async _generateRegExpsByPageIds(pageIds) {
     const Page = mongoose.model('Page');
-    const { PageQueryBuilder } = Page;
 
-    let pages;
+    let result;
     try {
-      const builder = new PageQueryBuilder(Page.find({ _id: { $in: pageIds } }));
-      pages = await builder
-        .query
-        .lean()
-        .exec();
+      result = await Page.findListByPageIds(pageIds, null, false);
     }
     catch (err) {
       logger.error('Failed to find pages by ids', err);
       throw err;
     }
 
+    const { pages } = result;
     const regexps = pages.map(page => new RegExp(`^${page.path}`));
 
     return regexps;
@@ -878,10 +874,15 @@ class PageService {
 
     // generate filter
     let filter = {
-      grant,
       parent: null,
       path: { $ne: '/' },
     };
+    if (grant != null) {
+      filter = {
+        ...filter,
+        grant,
+      };
+    }
     if (regexps != null && regexps.length !== 0) {
       filter = {
         ...filter,

+ 4 - 1
packages/app/src/test/integration/service/page.test.js

@@ -706,6 +706,7 @@ describe('PageService', () => {
       deleteManyPageSpy = jest.spyOn(Page, 'deleteMany').mockImplementation();
       removeAllAttachmentsSpy = jest.spyOn(crowi.attachmentService, 'removeAllAttachments').mockImplementation();
     });
+
     test('deleteCompletelyOperation', async() => {
       await crowi.pageService.deleteCompletelyOperation([parentForDeleteCompletely._id], [parentForDeleteCompletely.path], { });
 
@@ -822,6 +823,8 @@ describe('PageService', () => {
 
   describe('v5MigrationByPageIds()', () => {
     test('should migrate all pages specified by pageIds', async() => {
+      jest.restoreAllMocks();
+
       // initialize pages for test
       const pages = await Page.insertMany([
         {
@@ -863,7 +866,7 @@ describe('PageService', () => {
 
       const expected = ['/private1', '/dummyParent', '/dummyParent/private1', '/dummyParent/private1/private2', '/dummyParent/private1/private3'];
 
-      expect(migratedPagePaths).toBe(expected);
+      expect(migratedPagePaths.sort()).toStrictEqual(expected.sort());
     });
 
   });