diff --git a/dictation_server/src/features/accounts/accounts.controller.spec.ts b/dictation_server/src/features/accounts/accounts.controller.spec.ts index 454fd63..8ea840c 100644 --- a/dictation_server/src/features/accounts/accounts.controller.spec.ts +++ b/dictation_server/src/features/accounts/accounts.controller.spec.ts @@ -8,6 +8,7 @@ import { DeletePartnerAccountRequest, GetPartnerUsersRequest, UpdatePartnerInfoRequest, + CreateWorktypesRequest, } from './types/types'; import { plainToClass } from 'class-transformer'; import { validate } from 'class-validator'; @@ -41,6 +42,88 @@ describe('AccountsController', () => { expect(controller).toBeDefined(); }); + describe('valdation CreateWorktypesRequest', () => { + it('最低限の有効なリクエストが成功する', async () => { + const request = new CreateWorktypesRequest(); + request.worktypeId = 'TEST'; + + const valdationObject = plainToClass(CreateWorktypesRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(0); + }); + it('worktypeIdが指定されていない場合、リクエストが失敗する', async () => { + const request = new CreateWorktypesRequest(); + + const valdationObject = plainToClass(CreateWorktypesRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('worktypeIdが空文字の場合、リクエストが失敗する', async () => { + const request = new CreateWorktypesRequest(); + request.worktypeId = ''; + + const valdationObject = plainToClass(CreateWorktypesRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('worktypeIdが16文字を超える場合、リクエストが失敗する', async () => { + const request = new CreateWorktypesRequest(); + request.worktypeId = '123456789A1234567'; + + const valdationObject = plainToClass(CreateWorktypesRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('worktypeIdが16文字の場合、リクエストが成功する', async () => { + const request = new CreateWorktypesRequest(); + request.worktypeId = '123456789A123456'; + + const valdationObject = plainToClass(CreateWorktypesRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(0); + }); + it('worktypeIdに使用不可文字が含まれる場合、リクエストが失敗する', async () => { + const request = new CreateWorktypesRequest(); + request.worktypeId = 'test.test'; + + const valdationObject = plainToClass(CreateWorktypesRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('descriptionが255文字を超える場合、リクエストが失敗する', async () => { + const request = new CreateWorktypesRequest(); + request.worktypeId = 'TEST'; + request.description = + '1234567A0A1234567A1A1234567A2A1234567A3A1234567A4A1234567A5A1234567A6A1234567A7A1234567A8A1234567A9A' + + '1234567B0B1234567B1B1234567B2B1234567B3B1234567B4B1234567B5B1234567B6B1234567B7B1234567B8B1234567B9B' + + '1234567A0A1234567A1A1234567A2A1234567A3A1234567A4A123456'; + + const valdationObject = plainToClass(CreateWorktypesRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('descriptionが255文字の場合、リクエストが成功する', async () => { + const request = new CreateWorktypesRequest(); + request.worktypeId = 'TEST'; + request.description = + '1234567A0A1234567A1A1234567A2A1234567A3A1234567A4A1234567A5A1234567A6A1234567A7A1234567A8A1234567A9A' + + '1234567B0B1234567B1B1234567B2B1234567B3B1234567B4B1234567B5B1234567B6B1234567B7B1234567B8B1234567B9B' + + '1234567A0A1234567A1A1234567A2A1234567A3A1234567A4A12345'; + + const valdationObject = plainToClass(CreateWorktypesRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(0); + }); + }); + describe('valdation switchParentRequest', () => { it('最低限の有効なリクエストが成功する', async () => { const request = new SwitchParentRequest();