Просмотр исходного кода

Merge pull request #3364 from weseek/imprv/4685-4994-impl-test-for-revertDeletedPages

Imprv/4685 4994 impl test for revert deleted pages
Yuki Takei 5 лет назад
Родитель
Сommit
2b64676d08
2 измененных файлов с 27 добавлено и 5 удалено
  1. 3 3
      src/server/service/page.js
  2. 24 2
      src/test/service/page.test.js

+ 3 - 3
src/server/service/page.js

@@ -591,7 +591,7 @@ class PageService {
       .pipe(writeStream);
   }
 
-  async revertDeletedPages(pages, user) {
+  async revertDeletedDescendants(pages, user) {
     const Page = this.crowi.model('Page');
     const pageCollection = mongoose.connection.collection('pages');
     const revisionCollection = mongoose.connection.collection('revisions');
@@ -689,14 +689,14 @@ class PageService {
       .lean()
       .cursor();
 
-    const revertDeletedPages = this.revertDeletedPages.bind(this);
+    const revertDeletedDescendants = this.revertDeletedDescendants.bind(this);
     let count = 0;
     const writeStream = new Writable({
       objectMode: true,
       async write(batch, encoding, callback) {
         try {
           count += batch.length;
-          revertDeletedPages(batch, user);
+          revertDeletedDescendants(batch, user);
           logger.debug(`Reverting pages progressing: (count=${count})`);
         }
         catch (err) {

+ 24 - 2
src/test/service/page.test.js

@@ -30,6 +30,7 @@ let parentForRevert2;
 let childForDuplicate;
 let childForDelete;
 let childForDeleteCompletely;
+
 let childForRevert;
 
 describe('PageService', () => {
@@ -535,6 +536,7 @@ describe('PageService', () => {
   describe('revert page', () => {
     let getRevertDeletedPageNameSpy;
     let findByPathSpy;
+    let findSpy;
     let deleteCompletelySpy;
     let revertDeletedDescendantsWithStreamSpy;
 
@@ -585,8 +587,28 @@ describe('PageService', () => {
       expect(resultPage.deletedAt).toBeNull();
     });
 
-    test('revertDeletedPages()', () => {
-      expect(3).toBe(3);
+    test('revert deleted descendants', async() => {
+
+      findSpy = jest.spyOn(Page, 'find').mockImplementation(() => {
+        return [{ path: '/parentForRevert/child', redirectTo: '/trash/parentForRevert/child' }];
+      });
+
+      await crowi.pageService.revertDeletedDescendants([childForRevert], testUser2);
+      const resultPage = await Page.findOne({ path: '/parentForRevert/child' });
+      const revrtedFromPage = await Page.findOne({ path: '/trash/parentForRevert/child' });
+      const revrtedFromPageRevision = await Revision.findOne({ path: '/trash/parentForRevert/child' });
+
+      expect(getRevertDeletedPageNameSpy).toHaveBeenCalledWith(childForRevert.path);
+      expect(findSpy).toHaveBeenCalledWith({ path: { $in: ['/parentForRevert/child'] } });
+
+      expect(resultPage.path).toBe('/parentForRevert/child');
+      expect(resultPage.lastUpdateUser._id).toEqual(testUser2._id);
+      expect(resultPage.status).toBe(Page.STATUS_PUBLISHED);
+      expect(resultPage.deleteUser).toBeNull();
+      expect(resultPage.deletedAt).toBeNull();
+
+      expect(revrtedFromPage).toBeNull();
+      expect(revrtedFromPageRevision).toBeNull();
     });
   });