From ffd6eb4e684f2ddc9653635d720f78bf24143070 Mon Sep 17 00:00:00 2001 From: "makabe.t" Date: Thu, 9 May 2024 01:20:57 +0000 Subject: [PATCH] Merged PR 886: GET /tasks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 概要 [Task3980: GET /tasks](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3980) - `GET /tasks` のバリデータのUTを追加しました。 ## レビューポイント - テスト項目は適切でしょうか? ## UIの変更 - なし ## クエリの変更 - なし ## 動作確認状況 - ローカルで確認 - 行った修正がデグレを発生させていないことを確認できるか - 具体的にどのような確認をしたか - テストの修正のみなので影響なし --- .../features/tasks/tasks.controller.spec.ts | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/dictation_server/src/features/tasks/tasks.controller.spec.ts b/dictation_server/src/features/tasks/tasks.controller.spec.ts index 72b8ac5..c753ab4 100644 --- a/dictation_server/src/features/tasks/tasks.controller.spec.ts +++ b/dictation_server/src/features/tasks/tasks.controller.spec.ts @@ -2,6 +2,9 @@ import { Test, TestingModule } from '@nestjs/testing'; import { TasksController } from './tasks.controller'; import { TasksService } from './tasks.service'; import { ConfigModule } from '@nestjs/config'; +import { TasksRequest } from './types/types'; +import { validate } from 'class-validator'; +import { plainToClass } from 'class-transformer'; describe('TasksController', () => { let controller: TasksController; @@ -27,4 +30,89 @@ describe('TasksController', () => { it('should be defined', () => { expect(controller).toBeDefined(); }); + + describe('valdation getTasks', () => { + it('最低限の有効なリクエストが成功する', async () => { + const request = new TasksRequest(); + + const valdationObject = plainToClass(TasksRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(0); + }); + it('設定可能な全てのパラメータが指定されている場合、リクエストが成功する', async () => { + const request = new TasksRequest(); + request.limit = 1; + request.offset = 1; + request.status = 'Uploaded'; + request.direction = 'ASC'; + request.paramName = 'JOB_NUMBER'; + + const valdationObject = plainToClass(TasksRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(0); + }); + it('limitが0より小さい場合、リクエストが失敗する', async () => { + const request = new TasksRequest(); + request.limit = -1; + + const valdationObject = plainToClass(TasksRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('limitが文字列の場合、リクエストが失敗する', async () => { + const request = { limit: 'test' }; + + const valdationObject = plainToClass(TasksRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('offsetが0より小さい場合、リクエストが失敗する', async () => { + const request = new TasksRequest(); + request.offset = -1; + + const valdationObject = plainToClass(TasksRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('offsetが文字列の場合、リクエストが失敗する', async () => { + const request = { offset: 'test' }; + + const valdationObject = plainToClass(TasksRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('statusがタスクのステータス文字列以外の場合、リクエストが失敗する', async () => { + const request = new TasksRequest(); + request.status = 'test'; + + const valdationObject = plainToClass(TasksRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('directionがASC,DESC以外の場合、リクエストが失敗する', async () => { + const request = new TasksRequest(); + request.direction = 'test'; + + const valdationObject = plainToClass(TasksRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('paramNameがTASK_LIST_SORTABLE_ATTRIBUTES以外の場合、リクエストが失敗する', async () => { + const request = new TasksRequest(); + request.paramName = 'test'; + + const valdationObject = plainToClass(TasksRequest, request); + + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + }); });