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

implement preImport to setup models

Yuki Takei 1 год назад
Родитель
Сommit
74bbbcba7e

+ 8 - 0
apps/app/src/server/service/import/import.js

@@ -13,6 +13,7 @@ import mongoose from 'mongoose';
 import streamToPromise from 'stream-to-promise';
 import unzipStream from 'unzip-stream';
 
+import { setupIndependentModels } from '~/server/crowi/setup-models';
 import loggerFactory from '~/utils/logger';
 
 import CollectionProgressingStatus from '../../models/vo/collection-progressing-status';
@@ -104,6 +105,11 @@ export class ImportService {
     };
   }
 
+
+  async preImport() {
+    await setupIndependentModels();
+  }
+
   /**
    * import collections from json
    *
@@ -112,6 +118,8 @@ export class ImportService {
    * @return {Promise<void>}
    */
   async import(collections, importSettingsMap) {
+    await this.preImport();
+
     // init status object
     this.currentProgressingStatus = new CollectionProgressingStatus(collections);
 

+ 42 - 0
apps/app/src/server/service/import/import.spec.ts

@@ -0,0 +1,42 @@
+import { mock } from 'vitest-mock-extended';
+
+import type Crowi from '~/server/crowi';
+
+import { ImportService } from './import';
+
+const mocks = vi.hoisted(() => {
+  return {
+    setupIndependentModelsMock: vi.fn(),
+    testMock: vi.fn(),
+  };
+});
+
+vi.mock('~/server/crowi/setup-models', () => ({
+  setupIndependentModels: mocks.setupIndependentModelsMock,
+}));
+
+describe('ImportService', () => {
+
+  let importService: ImportService;
+
+  beforeAll(async() => {
+    const crowiMock = mock<Crowi>({
+      growiBridgeService: {
+        getFile: vi.fn(),
+      },
+      tmpDir: '/tmp',
+    });
+
+    importService = new ImportService(crowiMock);
+  });
+
+  describe('preImport', () => {
+    test('should call setupIndependentModels', async() => {
+      // act
+      await importService.preImport();
+
+      // assert
+      expect(mocks.setupIndependentModelsMock).toHaveBeenCalledOnce();
+    });
+  });
+});