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