yohei0125 4 лет назад
Родитель
Сommit
bb36650d96
1 измененных файлов с 67 добавлено и 0 удалено
  1. 67 0
      packages/app/test/integration/models/v5.page.test.js

+ 67 - 0
packages/app/test/integration/models/v5.page.test.js

@@ -18,6 +18,14 @@ describe('Page', () => {
   let rootPage;
   let dummyUser1;
 
+  // pass unless the data is one of [false, 0, '', null, undefined, NaN]
+  const expectAllToBeTruthy = (dataList) => {
+    dataList.forEach((data, i) => {
+      if (data == null) { console.log(`index: ${i}`) }
+      expect(data).toBeTruthy();
+    });
+  };
+
   beforeAll(async() => {
     crowi = await getInstance();
     await crowi.configManager.updateConfigsInTheSameNamespace('crowi', { 'app:isV5Compatible': true });
@@ -56,6 +64,43 @@ describe('Page', () => {
       },
     ]);
 
+    /**
+     * update
+     * mup_ => model update
+     */
+    const pageIdUpd1 = new mongoose.Types.ObjectId();
+    const pageIdUpd2 = new mongoose.Types.ObjectId();
+
+    const revisionIdUpd2 = new mongoose.Types.ObjectId();
+
+    await Page.insertMany([
+      {
+        _id: pageIdUpd1,
+        path: '/mup1_empty',
+        grant: Page.GRANT_PUBLIC,
+        parent: rootPage._id,
+        isEmpty: true,
+      },
+      {
+        _id: pageIdUpd2,
+        path: '/mup1_empty/mup2_public',
+        grant: Page.GRANT_PUBLIC,
+        parent: pageIdUpd1._id,
+        creator: dummyUser1,
+        lastUpdateUser: dummyUser1._id,
+        revision: revisionIdUpd2,
+        isEmpty: false,
+      },
+    ]);
+    await Revision.insertMany([
+      {
+        _id: revisionIdUpd2,
+        pageId: pageIdUpd2,
+        format: 'markdown',
+        body: '/mup1_empty/mup2_public',
+      },
+    ]);
+
   });
   describe('create', () => {
 
@@ -92,4 +137,26 @@ describe('Page', () => {
     });
 
   });
+
+  describe('update', () => {
+
+    describe('change grant to Anyone with the link', () => {
+      test('change grant of only child of empty parent should delete empty page', async() => {
+        const page1 = await Page.findOne({ path: '/mup1_empty', isEmpty: true });
+        const page2 = await Page.findOne({ path: '/mup1_empty/mup2_public' }).populate({ path: 'revision', model: 'Revision' });
+        const revision = page2.revision;
+        const newBody = 'newBody';
+        const options = { isSyncRevisionToHackmd: false, grant: 2, grantUserGroupId: null };
+        expectAllToBeTruthy([page1, page2, revision]);
+
+        await Page.updatePage(page2, newBody, revision.body, dummyUser1, options);
+        // AU => After Update
+        const page1AU = await Page.findOne({ path: '/mup1_empty', isEmpty: true });
+        const page2AU = await Page.findOne({ path: '/mup1_empty/mup2_public' }).populate({ path: 'revision', model: 'Revision' });
+
+        expect(page2AU).toBeTruthy();
+        expect(page1AU).toBeNull();
+      });
+    });
+  });
 });