|
|
@@ -1,3 +1,4 @@
|
|
|
+/* eslint-disable max-len */
|
|
|
const mongoose = require('mongoose');
|
|
|
|
|
|
const { getInstance } = require('../setup-crowi');
|
|
|
@@ -10,9 +11,12 @@ describe('V5 page migration', () => {
|
|
|
let UserGroupRelation;
|
|
|
|
|
|
let testUser1;
|
|
|
+ let rootUser;
|
|
|
|
|
|
let rootPage;
|
|
|
|
|
|
+ const rootUserGroupId = new mongoose.Types.ObjectId();
|
|
|
+ const testUser1GroupId = new mongoose.Types.ObjectId();
|
|
|
const groupIdIsolate = new mongoose.Types.ObjectId();
|
|
|
const groupIdA = new mongoose.Types.ObjectId();
|
|
|
const groupIdB = new mongoose.Types.ObjectId();
|
|
|
@@ -41,11 +45,23 @@ describe('V5 page migration', () => {
|
|
|
|
|
|
await crowi.configManager.updateConfigsInTheSameNamespace('crowi', { 'app:isV5Compatible': true });
|
|
|
|
|
|
- await User.insertMany([{ name: 'testUser1', username: 'testUser1', email: 'testUser1@example.com' }]);
|
|
|
+ await User.insertMany([
|
|
|
+ { name: 'rootUser', username: 'rootUser', email: 'rootUser@example.com' },
|
|
|
+ { name: 'testUser1', username: 'testUser1', email: 'testUser1@example.com' },
|
|
|
+ ]);
|
|
|
+ rootUser = await User.findOne({ username: 'rootUser' });
|
|
|
testUser1 = await User.findOne({ username: 'testUser1' });
|
|
|
rootPage = await Page.findOne({ path: '/' });
|
|
|
|
|
|
await UserGroup.insertMany([
|
|
|
+ {
|
|
|
+ _id: rootUserGroupId,
|
|
|
+ name: 'rootUserGroup',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ _id: testUser1GroupId,
|
|
|
+ name: 'testUser1Group',
|
|
|
+ },
|
|
|
{
|
|
|
_id: groupIdIsolate,
|
|
|
name: 'groupIsolate',
|
|
|
@@ -67,6 +83,14 @@ describe('V5 page migration', () => {
|
|
|
]);
|
|
|
|
|
|
await UserGroupRelation.insertMany([
|
|
|
+ {
|
|
|
+ relatedGroup: rootUserGroupId,
|
|
|
+ relatedUser: rootUser._id,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ relatedGroup: testUser1GroupId,
|
|
|
+ relatedUser: testUser1._id,
|
|
|
+ },
|
|
|
{
|
|
|
relatedGroup: groupIdIsolate,
|
|
|
relatedUser: testUser1._id,
|
|
|
@@ -232,11 +256,15 @@ describe('V5 page migration', () => {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
- describe('normalizeParentRecursivelyByPages()', () => {
|
|
|
+ const normalizeParentRecursivelyByPages = async(pages, user) => {
|
|
|
+ return crowi.pageService.normalizeParentRecursivelyByPages(pages, user);
|
|
|
+ };
|
|
|
|
|
|
- const normalizeParentRecursivelyByPages = async(pages, user) => {
|
|
|
- return crowi.pageService.normalizeParentRecursivelyByPages(pages, user);
|
|
|
- };
|
|
|
+ const normalizeParentByPage = async(page, user) => {
|
|
|
+ return crowi.pageService.normalizeParentByPage(page, user);
|
|
|
+ };
|
|
|
+
|
|
|
+ describe('normalizeParentRecursivelyByPages()', () => {
|
|
|
|
|
|
test('should migrate all pages specified by pageIds', async() => {
|
|
|
jest.restoreAllMocks();
|
|
|
@@ -281,7 +309,7 @@ describe('V5 page migration', () => {
|
|
|
expect(page10AM.parent).toStrictEqual(page7._id);
|
|
|
});
|
|
|
|
|
|
- test("should replace empty page with same path with new non-empty page and update all related children's parent", async() => {
|
|
|
+ test('should replace empty page with same path with new non-empty page and update all related children\'s parent', async() => {
|
|
|
const page1 = await Page.findOne({ path: '/normalize_10', isEmpty: true, parent: { $ne: null } });
|
|
|
const page2 = await Page.findOne({
|
|
|
path: '/normalize_10/normalize_11_gA', _id: pageId8, isEmpty: true, parent: { $ne: null },
|
|
|
@@ -309,6 +337,320 @@ describe('V5 page migration', () => {
|
|
|
|
|
|
expect(page3AM.isEmpty).toBe(false);
|
|
|
});
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ describe('should normalize only selected pages recursively (especially should NOT normalize non-selected ancestors)', () => {
|
|
|
+ /*
|
|
|
+ * # Test flow
|
|
|
+ * - Existing pages
|
|
|
+ * - All pages are NOT normalized
|
|
|
+ * - A, B, C, and D are owned by "testUser1"
|
|
|
+ * A. /normalize_A_owned
|
|
|
+ * B. /normalize_A_owned/normalize_B_owned
|
|
|
+ * C. /normalize_A_owned/normalize_B_owned/normalize_C_owned
|
|
|
+ * D. /normalize_A_owned/normalize_B_owned/normalize_C_owned/normalize_D_owned
|
|
|
+ * E. /normalize_A_owned/normalize_B_owned/normalize_C_owned/normalize_D_root
|
|
|
+ * - Owned by "rootUser"
|
|
|
+ * F. /normalize_A_owned/normalize_B_owned/normalize_C_owned/normalize_D_group
|
|
|
+ * - Owned by the userGroup "groupIdIsolate"
|
|
|
+ *
|
|
|
+ * 1. Normalize A and B one by one.
|
|
|
+ * - Expect
|
|
|
+ * - A and B are normalized
|
|
|
+ * - C and D are NOT normalized
|
|
|
+ * - E and F are NOT normalized
|
|
|
+ * 2. Recursively normalize D.
|
|
|
+ * - Expect
|
|
|
+ * - A, B, and D are normalized
|
|
|
+ * - C is NOT normalized
|
|
|
+ * - C is substituted by an empty page whose path is "/normalize_A_owned/normalize_B_owned/normalize_C_owned"
|
|
|
+ * - E and F are NOT normalized
|
|
|
+ * 3. Recursively normalize C.
|
|
|
+ * - Expect
|
|
|
+ * - A, B, C, and D are normalized
|
|
|
+ * - An empty page at "/normalize_A_owned/normalize_B_owned/normalize_C_owned" does NOT exist (removed)
|
|
|
+ * - E and F are NOT normalized
|
|
|
+ */
|
|
|
+
|
|
|
+ const owned = filter => ({ grantedUsers: [testUser1._id], ...filter });
|
|
|
+ const root = filter => ({ grantedUsers: [rootUser._id], ...filter });
|
|
|
+ const rootUserGroup = filter => ({ grantedGroup: rootUserGroupId, ...filter });
|
|
|
+ const testUser1Group = filter => ({ grantedGroup: testUser1GroupId, ...filter });
|
|
|
+
|
|
|
+ const normalized = { parent: { $ne: null } };
|
|
|
+ const notNormalized = { parent: null };
|
|
|
+ const empty = { isEmpty: true };
|
|
|
+
|
|
|
+ beforeAll(async() => {
|
|
|
+ // Prepare data
|
|
|
+ const id17 = new mongoose.Types.ObjectId();
|
|
|
+ const id21 = new mongoose.Types.ObjectId();
|
|
|
+ const id22 = new mongoose.Types.ObjectId();
|
|
|
+ const id23 = new mongoose.Types.ObjectId();
|
|
|
+
|
|
|
+ await Page.insertMany([
|
|
|
+ // 1
|
|
|
+ {
|
|
|
+ path: '/normalize_13_owned',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [testUser1._id],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_13_owned/normalize_14_owned',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [testUser1._id],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_13_owned/normalize_14_owned/normalize_15_owned',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [testUser1._id],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_13_owned/normalize_14_owned/normalize_15_owned/normalize_16_owned',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [testUser1._id],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_13_owned/normalize_14_owned/normalize_15_owned/normalize_16_root',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [rootUser._id],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_13_owned/normalize_14_owned/normalize_15_owned/normalize_16_group',
|
|
|
+ grant: Page.GRANT_USER_GROUP,
|
|
|
+ grantedGroup: testUser1GroupId,
|
|
|
+ },
|
|
|
+
|
|
|
+ // 2
|
|
|
+ {
|
|
|
+ _id: id17,
|
|
|
+ path: '/normalize_17_owned',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [testUser1._id],
|
|
|
+ parent: rootPage._id,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_17_owned/normalize_18_owned',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [testUser1._id],
|
|
|
+ parent: id17,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [testUser1._id],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned/normalize_20_owned',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [testUser1._id],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned/normalize_20_root',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [rootUser._id],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned/normalize_20_group',
|
|
|
+ grant: Page.GRANT_USER_GROUP,
|
|
|
+ grantedGroup: rootUserGroupId,
|
|
|
+ },
|
|
|
+
|
|
|
+ // 3
|
|
|
+ {
|
|
|
+ _id: id21,
|
|
|
+ path: '/normalize_21_owned',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [testUser1._id],
|
|
|
+ parent: rootPage._id,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ _id: id22,
|
|
|
+ path: '/normalize_21_owned/normalize_22_owned',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [testUser1._id],
|
|
|
+ parent: id21,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [testUser1._id],
|
|
|
+ parent: null,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ _id: id23,
|
|
|
+ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned',
|
|
|
+ isEmpty: true,
|
|
|
+ parent: id22,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned/normalize_24_owned',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [testUser1._id],
|
|
|
+ parent: id23,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned/normalize_24_root',
|
|
|
+ grant: Page.GRANT_OWNER,
|
|
|
+ grantedUsers: [rootUser._id],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned/normalize_24_rootGroup',
|
|
|
+ grant: Page.GRANT_USER_GROUP,
|
|
|
+ grantedGroup: rootUserGroupId,
|
|
|
+ },
|
|
|
+ ]);
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ test('Should normalize pages one by one without including other pages', async() => {
|
|
|
+ const _owned13 = await Page.findOne(owned({ path: '/normalize_13_owned', ...notNormalized }));
|
|
|
+ const _owned14 = await Page.findOne(owned({ path: '/normalize_13_owned/normalize_14_owned', ...notNormalized }));
|
|
|
+ const _owned15 = await Page.findOne(owned({ path: '/normalize_13_owned/normalize_14_owned/normalize_15_owned', ...notNormalized }));
|
|
|
+ const _owned16 = await Page.findOne(owned({ path: '/normalize_13_owned/normalize_14_owned/normalize_15_owned/normalize_16_owned', ...notNormalized }));
|
|
|
+ const _root16 = await Page.findOne(root({ path: '/normalize_13_owned/normalize_14_owned/normalize_15_owned/normalize_16_root', ...notNormalized }));
|
|
|
+ const _group16 = await Page.findOne(testUser1Group({ path: '/normalize_13_owned/normalize_14_owned/normalize_15_owned/normalize_16_group', ...notNormalized }));
|
|
|
+
|
|
|
+ expect(_owned13).not.toBeNull();
|
|
|
+ expect(_owned14).not.toBeNull();
|
|
|
+ expect(_owned15).not.toBeNull();
|
|
|
+ expect(_owned16).not.toBeNull();
|
|
|
+ expect(_root16).not.toBeNull();
|
|
|
+ expect(_group16).not.toBeNull();
|
|
|
+
|
|
|
+ // Normalize
|
|
|
+ await normalizeParentByPage(_owned14, testUser1);
|
|
|
+
|
|
|
+ const owned13 = await Page.findOne({ path: '/normalize_13_owned' });
|
|
|
+ const empty13 = await Page.findOne({ path: '/normalize_13_owned', ...empty });
|
|
|
+ const owned14 = await Page.findOne({ path: '/normalize_13_owned/normalize_14_owned' });
|
|
|
+ const owned15 = await Page.findOne({ path: '/normalize_13_owned/normalize_14_owned/normalize_15_owned' });
|
|
|
+ const owned16 = await Page.findOne({ path: '/normalize_13_owned/normalize_14_owned/normalize_15_owned/normalize_16_owned' });
|
|
|
+ const root16 = await Page.findOne(root({ path: '/normalize_13_owned/normalize_14_owned/normalize_15_owned/normalize_16_root' }));
|
|
|
+ const group16 = await Page.findOne(testUser1Group({ path: '/normalize_13_owned/normalize_14_owned/normalize_15_owned/normalize_16_group' }));
|
|
|
+
|
|
|
+ expect(owned13).not.toBeNull();
|
|
|
+ expect(empty13).not.toBeNull();
|
|
|
+ expect(owned14).not.toBeNull();
|
|
|
+ expect(owned15).not.toBeNull();
|
|
|
+ expect(owned16).not.toBeNull();
|
|
|
+ expect(root16).not.toBeNull();
|
|
|
+ expect(group16).not.toBeNull();
|
|
|
+
|
|
|
+ // Check parent
|
|
|
+ expect(owned13.parent).toBeNull();
|
|
|
+ expect(empty13.parent).toStrictEqual(rootPage._id);
|
|
|
+ expect(owned14.parent).toStrictEqual(empty13._id);
|
|
|
+ expect(owned15.parent).toBeNull();
|
|
|
+ expect(owned16.parent).toBeNull();
|
|
|
+ expect(root16.parent).toBeNull();
|
|
|
+ expect(group16.parent).toBeNull();
|
|
|
+
|
|
|
+ // Check descendantCount
|
|
|
+ expect(owned13.descendantCount).toBe(0);
|
|
|
+ expect(empty13.descendantCount).toBe(1);
|
|
|
+ expect(owned14.descendantCount).toBe(0);
|
|
|
+ });
|
|
|
+
|
|
|
+ test('Should normalize pages recursively excluding the pages not selected', async() => {
|
|
|
+ const _owned17 = await Page.findOne(owned({ path: '/normalize_17_owned', ...normalized }));
|
|
|
+ const _owned18 = await Page.findOne(owned({ path: '/normalize_17_owned/normalize_18_owned', ...normalized }));
|
|
|
+ const _owned19 = await Page.findOne(owned({ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned', ...notNormalized }));
|
|
|
+ const _owned20 = await Page.findOne(owned({ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned/normalize_20_owned', ...notNormalized }));
|
|
|
+ const _root20 = await Page.findOne(root({ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned/normalize_20_root', ...notNormalized }));
|
|
|
+ const _group20 = await Page.findOne(rootUserGroup({ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned/normalize_20_group', ...notNormalized }));
|
|
|
+
|
|
|
+ expect(_owned17).not.toBeNull();
|
|
|
+ expect(_owned18).not.toBeNull();
|
|
|
+ expect(_owned19).not.toBeNull();
|
|
|
+ expect(_owned20).not.toBeNull();
|
|
|
+ expect(_root20).not.toBeNull();
|
|
|
+ expect(_group20).not.toBeNull();
|
|
|
+
|
|
|
+ // Normalize
|
|
|
+ await normalizeParentRecursivelyByPages([_owned20], testUser1);
|
|
|
+
|
|
|
+ const owned17 = await Page.findOne({ path: '/normalize_17_owned' });
|
|
|
+ const owned18 = await Page.findOne({ path: '/normalize_17_owned/normalize_18_owned' });
|
|
|
+ const owned19 = await Page.findOne({ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned' });
|
|
|
+ const empty19 = await Page.findOne({ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned', ...empty });
|
|
|
+ const owned20 = await Page.findOne({ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned/normalize_20_owned' });
|
|
|
+ const root20 = await Page.findOne(root({ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned/normalize_20_root' }));
|
|
|
+ const group20 = await Page.findOne(rootUserGroup({ path: '/normalize_17_owned/normalize_18_owned/normalize_19_owned/normalize_20_group' }));
|
|
|
+
|
|
|
+ expect(owned17).not.toBeNull();
|
|
|
+ expect(owned18).not.toBeNull();
|
|
|
+ expect(owned19).not.toBeNull();
|
|
|
+ expect(empty19).not.toBeNull();
|
|
|
+ expect(owned20).not.toBeNull();
|
|
|
+ expect(root20).not.toBeNull();
|
|
|
+ expect(group20).not.toBeNull();
|
|
|
+
|
|
|
+ // Check parent
|
|
|
+ expect(owned17.parent).toStrictEqual(rootPage._id);
|
|
|
+ expect(owned18.parent).toStrictEqual(owned17._id);
|
|
|
+ expect(owned19.parent).toBeNull();
|
|
|
+ expect(empty19.parent).toStrictEqual(owned18._id);
|
|
|
+ expect(owned20.parent).toStrictEqual(empty19._id);
|
|
|
+ expect(root20.parent).toBeNull();
|
|
|
+ expect(group20.parent).toBeNull();
|
|
|
+
|
|
|
+ // Check isEmpty
|
|
|
+ expect(owned17.isEmpty).toBe(false);
|
|
|
+ expect(owned18.isEmpty).toBe(false);
|
|
|
+ });
|
|
|
+
|
|
|
+ test('Should normalize pages recursively excluding the pages of not user\'s & Should delete unnecessary empty pages', async() => {
|
|
|
+ const _owned21 = await Page.findOne(owned({ path: '/normalize_21_owned', ...normalized }));
|
|
|
+ const _owned22 = await Page.findOne(owned({ path: '/normalize_21_owned/normalize_22_owned', ...normalized }));
|
|
|
+ const _owned23 = await Page.findOne(owned({ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned', ...notNormalized }));
|
|
|
+ const _empty23 = await Page.findOne({ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned', ...normalized, ...empty });
|
|
|
+ const _owned24 = await Page.findOne(owned({ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned/normalize_24_owned', ...normalized }));
|
|
|
+ const _root24 = await Page.findOne(root({ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned/normalize_24_root', ...notNormalized }));
|
|
|
+ const _rootGroup24 = await Page.findOne(rootUserGroup({ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned/normalize_24_rootGroup', ...notNormalized }));
|
|
|
+
|
|
|
+ expect(_owned21).not.toBeNull();
|
|
|
+ expect(_owned22).not.toBeNull();
|
|
|
+ expect(_owned23).not.toBeNull();
|
|
|
+ expect(_empty23).not.toBeNull();
|
|
|
+ expect(_owned24).not.toBeNull();
|
|
|
+ expect(_root24).not.toBeNull();
|
|
|
+ expect(_rootGroup24).not.toBeNull();
|
|
|
+
|
|
|
+ // Normalize
|
|
|
+ await normalizeParentRecursivelyByPages([_owned23], testUser1);
|
|
|
+
|
|
|
+ const owned21 = await Page.findOne({ path: '/normalize_21_owned' });
|
|
|
+ const owned22 = await Page.findOne({ path: '/normalize_21_owned/normalize_22_owned' });
|
|
|
+ const owned23 = await Page.findOne({ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned' });
|
|
|
+ const empty23 = await Page.findOne({ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned', ...empty });
|
|
|
+ const owned24 = await Page.findOne({ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned/normalize_24_owned' });
|
|
|
+ const root24 = await Page.findOne(root({ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned/normalize_24_root' }));
|
|
|
+ const rootGroup24 = await Page.findOne(rootUserGroup({ path: '/normalize_21_owned/normalize_22_owned/normalize_23_owned/normalize_24_rootGroup' }));
|
|
|
+
|
|
|
+ expect(owned21).not.toBeNull();
|
|
|
+ expect(owned22).not.toBeNull();
|
|
|
+ expect(owned23).not.toBeNull();
|
|
|
+ expect(empty23).toBeNull(); // removed
|
|
|
+ expect(owned24).not.toBeNull();
|
|
|
+ expect(root24).not.toBeNull();
|
|
|
+ expect(rootGroup24).not.toBeNull();
|
|
|
+
|
|
|
+ // Check parent
|
|
|
+ expect(owned21.parent).toStrictEqual(rootPage._id);
|
|
|
+ expect(owned22.parent).toStrictEqual(owned21._id);
|
|
|
+ expect(owned23.parent).toStrictEqual(owned22._id);
|
|
|
+ expect(owned24.parent).toStrictEqual(owned23._id); // not empty23._id
|
|
|
+ expect(root24.parent).toBeNull();
|
|
|
+ expect(rootGroup24.parent).toBeNull(); // excluded from the pages to be normalized
|
|
|
+
|
|
|
+ // Check isEmpty
|
|
|
+ expect(owned21.isEmpty).toBe(false);
|
|
|
+ expect(owned22.isEmpty).toBe(false);
|
|
|
+ expect(owned23.isEmpty).toBe(false);
|
|
|
+ });
|
|
|
+
|
|
|
});
|
|
|
|
|
|
describe('normalizeAllPublicPages()', () => {
|
|
|
@@ -407,17 +749,14 @@ describe('V5 page migration', () => {
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- describe('normalizeParentByPageId()', () => {
|
|
|
- const normalizeParentByPageId = async(page, user) => {
|
|
|
- return crowi.pageService.normalizeParentByPageId(page, user);
|
|
|
- };
|
|
|
+ describe('normalizeParentByPage()', () => {
|
|
|
test('it should normalize not v5 page with usergroup that has parent group', async() => {
|
|
|
const page1 = await Page.findOne({ _id: pageId1, path: '/normalize_1', isEmpty: true });
|
|
|
const page2 = await Page.findOne({ _id: pageId2, path: '/normalize_1/normalize_2', parent: page1._id });
|
|
|
const page3 = await Page.findOne({ _id: pageId3, path: '/normalize_1' }); // NOT v5
|
|
|
expectAllToBeTruthy([page1, page2, page3]);
|
|
|
|
|
|
- await normalizeParentByPageId(page3, testUser1);
|
|
|
+ await normalizeParentByPage(page3, testUser1);
|
|
|
|
|
|
// AM => After Migration
|
|
|
const page1AM = await Page.findOne({ _id: pageId1, path: '/normalize_1', isEmpty: true });
|
|
|
@@ -439,7 +778,7 @@ describe('V5 page migration', () => {
|
|
|
|
|
|
let isThrown;
|
|
|
try {
|
|
|
- await normalizeParentByPageId(page6, testUser1);
|
|
|
+ await normalizeParentByPage(page6, testUser1);
|
|
|
}
|
|
|
catch (err) {
|
|
|
isThrown = true;
|