diff --git a/dictation_server/src/features/files/files.controller.spec.ts b/dictation_server/src/features/files/files.controller.spec.ts index d79bf29..e5b87e6 100644 --- a/dictation_server/src/features/files/files.controller.spec.ts +++ b/dictation_server/src/features/files/files.controller.spec.ts @@ -2,7 +2,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { FilesController } from './files.controller'; import { FilesService } from './files.service'; import { ConfigModule } from '@nestjs/config'; -import { FileRenameRequest } from './types/types'; +import { AudioUploadFinishedRequest, FileRenameRequest } from './types/types'; import { plainToClass } from 'class-transformer'; import { validate } from 'class-validator'; @@ -111,3 +111,189 @@ describe('valdation FileRenameRequest', () => { expect(errors.length).toBe(1); }); }); + +describe('valdation AudioUploadFinishedRequest', () => { + it('最低限の有効なリクエストが成功する', async () => { + const request = new AudioUploadFinishedRequest(); + request.url = 'url'; + request.authorId = 'authorId'; + request.fileName = 'fileName'; + request.duration = '10'; + request.createdDate = '2024-12-31T23:59:59.999Z'; + request.finishedDate = '2024-12-31T23:59:59.999Z'; + request.uploadedDate = '2024-12-31T23:59:59.999Z'; + request.fileSize = 1; + request.priority = '00'; + request.audioFormat = 'DSS'; + request.comment = 'comment'; + request.workType = 'workType'; + request.optionItemList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((i) => { + return { + optionItemLabel: `optionItemLabel${i}`, + optionItemValue: `optionItemValue${i}`, + }; + }); + request.isEncrypted = false; + + const valdationObject = plainToClass(AudioUploadFinishedRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(0); + }); + + it('必須パラメータが空文字の場合、リクエストが失敗する', async () => { + const request = new AudioUploadFinishedRequest(); + request.url = ''; //空文字 + request.authorId = ''; //空文字 + request.fileName = ''; //空文字 + request.duration = ''; //空文字 + request.createdDate = ''; //空文字 + request.finishedDate = ''; //空文字 + request.uploadedDate = ''; //空文字 + request.priority = ''; //空文字 + // fileSizeは設定しない + request.audioFormat = ''; //空文字 + request.comment = 'comment'; + request.workType = 'workType'; + request.optionItemList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((i) => { + return { + optionItemLabel: `optionItemLabel${i}`, + optionItemValue: `optionItemValue${i}`, + }; + }); + request.isEncrypted = false; + + const valdationObject = plainToClass(AudioUploadFinishedRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(10); + }); + it('durationが数値変換不可の場合、リクエストが失敗する', async () => { + const request = new AudioUploadFinishedRequest(); + request.url = 'url'; + request.authorId = 'authorId'; + request.fileName = 'fileName'; + request.duration = 'aaaaa'; //数値変換不可 + request.createdDate = '2024-12-31T23:59:59.999Z'; + request.finishedDate = '2024-12-31T23:59:59.999Z'; + request.uploadedDate = '2024-12-31T23:59:59.999Z'; + request.fileSize = 1; + request.priority = '00'; + request.audioFormat = 'DSS'; + request.comment = 'comment'; + request.workType = 'workType'; + request.optionItemList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((i) => { + return { + optionItemLabel: `optionItemLabel${i}`, + optionItemValue: `optionItemValue${i}`, + }; + }); + request.isEncrypted = false; + + const valdationObject = plainToClass(AudioUploadFinishedRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('fileSizeが数値でない場合、リクエストが失敗する', async () => { + const request = new AudioUploadFinishedRequest(); + request.url = 'url'; + request.authorId = 'authorId'; + request.fileName = 'fileName'; + request.duration = '10'; + request.createdDate = '2024-12-31T23:59:59.999Z'; + request.finishedDate = '2024-12-31T23:59:59.999Z'; + request.uploadedDate = '2024-12-31T23:59:59.999Z'; + request.fileSize = 'aaaa' as any; //数値でない + request.priority = '00'; + request.audioFormat = 'DSS'; + request.comment = 'comment'; + request.workType = 'workType'; + request.optionItemList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((i) => { + return { + optionItemLabel: `optionItemLabel${i}`, + optionItemValue: `optionItemValue${i}`, + }; + }); + request.isEncrypted = false; + + const valdationObject = plainToClass(AudioUploadFinishedRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('fileSizeがintではない場合、リクエストが失敗する', async () => { + const request = new AudioUploadFinishedRequest(); + request.url = 'url'; + request.authorId = 'authorId'; + request.fileName = 'fileName'; + request.duration = '10'; + request.createdDate = '2024-12-31T23:59:59.999Z'; + request.finishedDate = '2024-12-31T23:59:59.999Z'; + request.uploadedDate = '2024-12-31T23:59:59.999Z'; + request.fileSize = 5.01; //integerでない + request.priority = '00'; + request.audioFormat = 'DSS'; + request.comment = 'comment'; + request.workType = 'workType'; + request.optionItemList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((i) => { + return { + optionItemLabel: `optionItemLabel${i}`, + optionItemValue: `optionItemValue${i}`, + }; + }); + request.isEncrypted = false; + + const valdationObject = plainToClass(AudioUploadFinishedRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('priorityが00,01ではない場合、リクエストが失敗する', async () => { + const request = new AudioUploadFinishedRequest(); + request.url = 'url'; + request.authorId = 'authorId'; + request.fileName = 'fileName'; + request.duration = '10'; + request.createdDate = '2024-12-31T23:59:59.999Z'; + request.finishedDate = '2024-12-31T23:59:59.999Z'; + request.uploadedDate = '2024-12-31T23:59:59.999Z'; + request.fileSize = 1; + request.priority = '001'; + request.audioFormat = 'DSS'; + request.comment = 'comment'; + request.workType = 'workType'; + request.optionItemList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((i) => { + return { + optionItemLabel: `optionItemLabel${i}`, + optionItemValue: `optionItemValue${i}`, + }; + }); + request.isEncrypted = false; + + const valdationObject = plainToClass(AudioUploadFinishedRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('optionItemListが10件ではない場合、リクエストが失敗する', async () => { + const request = new AudioUploadFinishedRequest(); + request.url = 'url'; + request.authorId = 'authorId'; + request.fileName = 'fileName'; + request.duration = '10'; + request.createdDate = '2024-12-31T23:59:59.999Z'; + request.finishedDate = '2024-12-31T23:59:59.999Z'; + request.uploadedDate = '2024-12-31T23:59:59.999Z'; + request.fileSize = 1; + request.priority = '01'; + request.audioFormat = 'DSS'; + request.comment = 'comment'; + request.workType = 'workType'; + request.optionItemList = [1, 2, 3, 4, 5, 6, 7, 8, 9].map((i) => { + return { + optionItemLabel: `optionItemLabel${i}`, + optionItemValue: `optionItemValue${i}`, + }; + }); + request.isEncrypted = false; + + const valdationObject = plainToClass(AudioUploadFinishedRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); +}); diff --git a/dictation_server/src/features/workflows/workflows.service.spec.ts b/dictation_server/src/features/workflows/workflows.service.spec.ts index 633c13b..1ff4fe7 100644 --- a/dictation_server/src/features/workflows/workflows.service.spec.ts +++ b/dictation_server/src/features/workflows/workflows.service.spec.ts @@ -36,7 +36,7 @@ describe('getWorkflows', () => { database: 'odms', entities: [__dirname + '/../../**/*.entity{.ts,.js}'], synchronize: false, // trueにすると自動的にmigrationが行われるため注意 - logger: new TestLogger('file'), + logger: new TestLogger('none'), logging: true, }); return await s.initialize();