yohei0125 3 лет назад
Родитель
Сommit
552ba2a991
1 измененных файлов с 0 добавлено и 297 удалено
  1. 0 297
      packages/app/test/integration/service/v5.page.test.ts

+ 0 - 297
packages/app/test/integration/service/v5.page.test.ts

@@ -1,297 +0,0 @@
-import mongoose from 'mongoose';
-
-import { PageActionType } from '../../../src/server/models/page-operation';
-import { getInstance } from '../setup-crowi';
-
-
-describe('Test page service methods', () => {
-  let crowi;
-  let Page;
-  let Revision;
-  let User;
-  let UserGroup;
-  let UserGroupRelation;
-  let Tag;
-  let PageTagRelation;
-  let Bookmark;
-  let Comment;
-  let ShareLink;
-  let PageRedirect;
-  let PageOperation;
-  let xssSpy;
-
-  let rootPage;
-
-  let dummyUser1;
-  let dummyUser2;
-  let globalGroupUser1;
-  let globalGroupUser2;
-  let globalGroupUser3;
-  let globalGroupIsolate;
-  let globalGroupA;
-  let globalGroupB;
-  let globalGroupC;
-
-  beforeAll(async() => {
-    crowi = await getInstance();
-    await crowi.configManager.updateConfigsInTheSameNamespace('crowi', { 'app:isV5Compatible': true });
-
-    User = mongoose.model('User');
-    UserGroup = mongoose.model('UserGroup');
-    UserGroupRelation = mongoose.model('UserGroupRelation');
-    Page = mongoose.model('Page');
-    Revision = mongoose.model('Revision');
-    Tag = mongoose.model('Tag');
-    PageTagRelation = mongoose.model('PageTagRelation');
-    Bookmark = mongoose.model('Bookmark');
-    Comment = mongoose.model('Comment');
-    ShareLink = mongoose.model('ShareLink');
-    PageRedirect = mongoose.model('PageRedirect');
-    UserGroup = mongoose.model('UserGroup');
-    UserGroupRelation = mongoose.model('UserGroupRelation');
-    PageOperation = mongoose.model('PageOperation');
-
-    /*
-     * Common
-     */
-    xssSpy = jest.spyOn(crowi.xss, 'process').mockImplementation(path => path);
-
-    // ***********************************************************************************************************
-    // * Do NOT change properties of globally used documents. Otherwise, it might cause some errors in other tests
-    // ***********************************************************************************************************
-    // users
-    dummyUser1 = await User.findOne({ username: 'v5DummyUser1' });
-    dummyUser2 = await User.findOne({ username: 'v5DummyUser2' });
-    globalGroupUser1 = await User.findOne({ username: 'gGroupUser1' });
-    globalGroupUser2 = await User.findOne({ username: 'gGroupUser2' });
-    globalGroupUser3 = await User.findOne({ username: 'gGroupUser3' });
-    // groups
-    globalGroupIsolate = await UserGroup.findOne({ name: 'globalGroupIsolate' });
-    globalGroupA = await UserGroup.findOne({ name: 'globalGroupA' });
-    globalGroupB = await UserGroup.findOne({ name: 'globalGroupB' });
-    globalGroupC = await UserGroup.findOne({ name: 'globalGroupC' });
-    // page
-    rootPage = await Page.findOne({ path: '/' });
-
-
-    /**
-     * pages
-     */
-    const pageId0 = new mongoose.Types.ObjectId();
-    const pageId1 = new mongoose.Types.ObjectId();
-    const pageId2 = new mongoose.Types.ObjectId();
-    const pageId3 = new mongoose.Types.ObjectId();
-    const pageId4 = new mongoose.Types.ObjectId();
-    const pageId5 = new mongoose.Types.ObjectId();
-    const pageId6 = new mongoose.Types.ObjectId();
-
-    await Page.insertMany([
-      {
-        _id: pageId0,
-        path: '/POP0',
-        parent: rootPage._id,
-        grant: Page.GRANT_PUBLIC,
-        creator: dummyUser1,
-        lastUpdateUser: dummyUser1._id,
-        descendantCount: 0,
-      },
-      {
-        _id: pageId1,
-        path: '/POP0/renamePOP1',
-        parent: pageId0._id,
-        grant: Page.GRANT_PUBLIC,
-        creator: dummyUser1,
-        lastUpdateUser: dummyUser1._id,
-        descendantCount: 2,
-      },
-      {
-        _id: pageId2,
-        path: '/renamePOP1/renamePOP2',
-        parent: pageId1,
-        grant: Page.GRANT_PUBLIC,
-        creator: dummyUser1,
-        lastUpdateUser: dummyUser1._id,
-        descendantCount: 1,
-      },
-      {
-        _id: pageId3,
-        path: '/renamePOP1/renamePOP2/renamePOP3',
-        parent: pageId2,
-        grant: Page.GRANT_PUBLIC,
-        creator: dummyUser1,
-        lastUpdateUser: dummyUser1._id,
-        descendantCount: 0,
-      },
-      {
-        _id: pageId4,
-        path: '/POP1',
-        parent: rootPage._id,
-        grant: Page.GRANT_PUBLIC,
-        creator: dummyUser1,
-        lastUpdateUser: dummyUser1._id,
-        descendantCount: 0,
-      },
-      {
-        _id: pageId5,
-        path: '/POP1/renamePOP4',
-        parent: pageId0._id,
-        grant: Page.GRANT_PUBLIC,
-        creator: dummyUser1,
-        lastUpdateUser: dummyUser1._id,
-        descendantCount: 1,
-      },
-      {
-        _id: pageId6,
-        path: '/renamePOP4/renamePOP5',
-        parent: pageId5,
-        grant: Page.GRANT_PUBLIC,
-        creator: dummyUser1,
-        lastUpdateUser: dummyUser1._id,
-        descendantCount: 0,
-      },
-    ]);
-
-    /**
-     * PageOperation
-     */
-    const pageOpId1 = new mongoose.Types.ObjectId();
-    const pageOpId2 = new mongoose.Types.ObjectId();
-    const pageOpRevisionId1 = new mongoose.Types.ObjectId();
-    const pageOpRevisionId2 = new mongoose.Types.ObjectId();
-    await PageOperation.insertMany([
-      {
-        _id: pageOpId1,
-        actionType: 'Rename',
-        actionStage: 'Sub',
-        fromPath: '/renamePOP1',
-        toPath: '/POP0/renamePOP1',
-        page: {
-          _id: pageId1,
-          parent: rootPage._id,
-          descendantCount: 2,
-          isEmpty: false,
-          path: '/renamePOP1',
-          revision: pageOpRevisionId1,
-          status: 'published',
-          grant: 1,
-          grantedUsers: [],
-          grantedGroup: null,
-          creator: dummyUser1._id,
-          lastUpdateUser: dummyUser1._id,
-        },
-        user: {
-          _id: dummyUser1._id,
-        },
-        options: {
-          createRedirectPage: false,
-          updateMetadata: true,
-        },
-        unprocessableExpiryDate: null,
-      },
-      {
-        _id: pageOpId2,
-        actionType: 'Rename',
-        actionStage: 'Sub',
-        fromPath: '/renamePOP4',
-        toPath: '/POP1/renamePOP4',
-        page: {
-          _id: pageId5,
-          parent: rootPage._id,
-          descendantCount: 2,
-          isEmpty: false,
-          path: '/renamePOP4',
-          revision: pageOpRevisionId2,
-          status: 'published',
-          grant: 1,
-          grantedUsers: [],
-          grantedGroup: null,
-          creator: dummyUser1._id,
-          lastUpdateUser: dummyUser1._id,
-        },
-        user: {
-          _id: dummyUser1._id,
-        },
-        options: {
-          createRedirectPage: false,
-          updateMetadata: true,
-        },
-        unprocessableExpiryDate: new Date(5000, 0, 1), // year 5000
-      },
-    ]);
-  });
-
-  describe('restart renameOperation', () => {
-    const resumePageRenameOperation = async(pageId) => {
-      const mockedRenameSubOperation = jest.spyOn(crowi.pageService, 'renameSubOperation').mockReturnValue(null);
-
-      await crowi.pageService.resumePageRenameOperation(pageId);
-
-      const argsForRenameSubOperation = mockedRenameSubOperation.mock.calls[0];
-
-      mockedRenameSubOperation.mockRestore();
-      await crowi.pageService.renameSubOperation(...argsForRenameSubOperation);
-    };
-    test('it should successfully restart rename operation', async() => {
-      const _path0 = '/POP0';
-      const _path1 = '/POP0/renamePOP1'; // renamed already
-      const _path2 = '/renamePOP1/renamePOP2'; // not renamed yet
-      const _path3 = '/renamePOP1/renamePOP2/renamePOP3'; // not renamed yet
-      const _page0 = await Page.findOne({ path: _path0 });
-      const _page1 = await Page.findOne({ path: _path1 });
-      const _page2 = await Page.findOne({ path: _path2 });
-      const _page3 = await Page.findOne({ path: _path3 });
-      expect(_page0).toBeTruthy();
-      expect(_page1).toBeTruthy();
-      expect(_page2).toBeTruthy();
-      expect(_page3).toBeTruthy();
-      const _pageOperation = await PageOperation.findOne({ 'page._id': _page1._id, actionType: PageActionType.Rename });
-      expect(_pageOperation).toBeTruthy();
-
-      await resumePageRenameOperation(_pageOperation.page._id);
-
-      const path0 = '/POP0';
-      const path1 = '/POP0/renamePOP1';
-      const path2 = '/POP0/renamePOP1/renamePOP2';
-      const path3 = '/POP0/renamePOP1/renamePOP2/renamePOP3';
-      const page0 = await Page.findOne({ path: path0 });
-      const page1 = await Page.findOne({ path: path1 });
-      const page2 = await Page.findOne({ path: path2 });
-      const page3 = await Page.findOne({ path: path3 });
-      const pageOperation = await PageOperation.findOne({ _id: _pageOperation._id });
-      expect(page0.descendantCount).toBe(3);
-      expect(page0).toBeTruthy();
-      expect(page1).toBeTruthy();
-      expect(page2).toBeTruthy();
-      expect(page3).toBeTruthy();
-      expect(pageOperation).toBeNull(); // should not exist
-      expect(page1.parent).toStrictEqual(page0._id);
-      expect(page2.parent).toStrictEqual(page1._id);
-      expect(page3.parent).toStrictEqual(page2._id);
-      expect(page0.descendantCount).toBe(3);
-      expect(page1.descendantCount).toBe(2);
-      expect(page2.descendantCount).toBe(1);
-      expect(page3.descendantCount).toBe(0);
-    });
-    test('it should fail and throw error if PageOperation is not found', async() => {
-      const pageId = new mongoose.Types.ObjectId(); // not exist in DB
-      await expect(resumePageRenameOperation(pageId))
-        .rejects.toThrow(new Error('it did not restart rename operation because page operation to be processed was not found'));
-    });
-
-    test('it should fail and throw error if the current time is behind unprocessableExpiryDate', async() => {
-      const _path0 = '/POP1';
-      const _path1 = '/POP1/renamePOP4'; // renamed already
-      const _path2 = '/renamePOP4/renamePOP5'; // not renamed yet
-      const _page0 = await Page.findOne({ path: _path0 });
-      const _page1 = await Page.findOne({ path: _path1 });
-      const _page2 = await Page.findOne({ path: _path2 });
-      const _pageOperation = await PageOperation.findOne({ 'page._id': _page1._id, actionType: PageActionType.Rename });
-      expect(_page0).toBeTruthy();
-      expect(_page1).toBeTruthy();
-      expect(_page2).toBeTruthy();
-      expect(_pageOperation).toBeTruthy();
-      const promise = resumePageRenameOperation(_pageOperation.page._id);
-      await expect(promise).rejects.toThrow(new Error('it did not restart rename operation because it is currently being processed'));
-    });
-  });
-});