From cad208cd4c75718e8f377ad236e667d48e0bdc7b Mon Sep 17 00:00:00 2001 From: StevanFreeborn Date: Fri, 27 Jan 2023 18:09:14 -0600 Subject: [PATCH] fix: add api response factory tests --- src/models/ApiResponseFactory.ts | 28 ++++++++++------------- tests/ApiResponseFactory.spec.ts | 39 ++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 16 deletions(-) create mode 100644 tests/ApiResponseFactory.spec.ts diff --git a/src/models/ApiResponseFactory.ts b/src/models/ApiResponseFactory.ts index 270a4d6..d91a290 100644 --- a/src/models/ApiResponseFactory.ts +++ b/src/models/ApiResponseFactory.ts @@ -1,6 +1,6 @@ -import { AxiosResponse } from "axios"; -import { HttpStatusCode } from "../enums/HttpStatusCode"; -import { ApiResponse } from "./ApiResponse"; +import { AxiosResponse } from 'axios'; +import { HttpStatusCode } from '../enums/HttpStatusCode'; +import { ApiResponse } from './ApiResponse'; /** * @class ApiResponseFactory - Factory class for creating ApiResponse objects @@ -13,9 +13,8 @@ export class ApiResponseFactory { */ public static getApiResponse(response: AxiosResponse): ApiResponse { const message = this.TryToGetMessage(response); - - if (this.isSuccessStatusCode(response.status) === true) - { + + if (this.isSuccessStatusCode(response.status) === true) { const data = response.data as T; return new ApiResponse(response.status, message, data); } @@ -29,22 +28,19 @@ export class ApiResponseFactory { * @returns {string} - The message from the response data */ private static TryToGetMessage(response: AxiosResponse): string { - if ( - response.status == HttpStatusCode.Unauthorized || - response.status == HttpStatusCode.Forbidden || + response.status == HttpStatusCode.Unauthorized || + response.status == HttpStatusCode.Forbidden || response.status == HttpStatusCode.NotFound - ) - { + ) { return response.data?.message; } - - if (this.isSuccessStatusCode(response.status) === false) - { + + if (this.isSuccessStatusCode(response.status) === false) { return JSON.stringify(response.data); } - - return ""; + + return ''; } /** diff --git a/tests/ApiResponseFactory.spec.ts b/tests/ApiResponseFactory.spec.ts new file mode 100644 index 0000000..30e94ad --- /dev/null +++ b/tests/ApiResponseFactory.spec.ts @@ -0,0 +1,39 @@ +import { ApiResponseFactory } from '../src/models/ApiResponseFactory'; +import { AxiosResponse, InternalAxiosRequestConfig } from 'axios'; +import { expect } from 'chai'; + +describe('ApiResponseFactory', function () { + it('should be defined', function () { + expect(ApiResponseFactory).to.not.be.undefined; + }); + + describe('getApiResponse', function () { + it('should be defined', function () { + expect(ApiResponseFactory.getApiResponse).to.not.be.undefined; + }); + + it('should have 1 parameter', function () { + expect(ApiResponseFactory.getApiResponse).to.have.lengthOf(1); + }); + + it('should return an ApiResponse object', function () { + const response: AxiosResponse = { + data: null, + status: 200, + statusText: 'OK', + headers: {}, + config: {} as InternalAxiosRequestConfig, + }; + + const apiResponse = ApiResponseFactory.getApiResponse(response); + + expect(apiResponse).to.not.be.undefined; + expect(apiResponse).to.have.property('statusCode'); + expect(apiResponse).to.have.property('message'); + expect(apiResponse).to.have.property('data'); + expect(apiResponse.statusCode).to.equal(200); + expect(apiResponse.message).to.equal(''); + expect(apiResponse.data).to.equal(null); + }); + }); +}); \ No newline at end of file