From 9d6d775eb7ded202993a204dfb9455e44f654728 Mon Sep 17 00:00:00 2001 From: Ashley Harwood Date: Tue, 29 Oct 2024 09:42:29 +1100 Subject: [PATCH] chore: update tests --- .../__tests__/httpService.test.ts | 26 ++++++++++++++++--- packages/vc-test-suite/httpService.ts | 13 ++++++---- .../render-template-2024.test.ts | 3 +-- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/packages/vc-test-suite/__tests__/httpService.test.ts b/packages/vc-test-suite/__tests__/httpService.test.ts index 4e69ee42..1bf75a96 100644 --- a/packages/vc-test-suite/__tests__/httpService.test.ts +++ b/packages/vc-test-suite/__tests__/httpService.test.ts @@ -7,15 +7,24 @@ const mockedAxios = axios as jest.Mocked; describe('httpService', () => { beforeEach(() => { + jest.clearAllMocks(); + + const mockRequest = jest.fn().mockResolvedValue({ data: 'mocked response' }); + mockedAxios.create.mockReturnValue({ - request: jest.fn().mockResolvedValue({ data: 'mocked response' }), + request: mockRequest, } as any); }); it('should accept a plain object for headers', async () => { - const result = await request({ headers: { test: 'test' } }); - expect(result).toBeDefined(); + const params = { headers: { test: 'test' } }; + const result = await request(params); + expect(result).toEqual({ data: 'mocked response' }); + + const mockAxiosInstance = mockedAxios.create.mock.results[0].value; + expect(mockAxiosInstance.request).toHaveBeenCalledTimes(1); + expect(mockAxiosInstance.request).toHaveBeenCalledWith(params); }); it('should throw an error if headers is not a plain object', async () => { @@ -29,4 +38,15 @@ describe('httpService', () => { 'Headers specified in the config must be a plain object with string values.', ); }); + + it('should work when no headers are provided in params', async () => { + const params = { url: 'test-url' }; + const result = await request(params); + + expect(result).toEqual({ data: 'mocked response' }); + + const mockAxiosInstance = mockedAxios.create.mock.results[0].value; + expect(mockAxiosInstance.request).toHaveBeenCalledTimes(1); + expect(mockAxiosInstance.request).toHaveBeenCalledWith(params); + }); }); diff --git a/packages/vc-test-suite/httpService.ts b/packages/vc-test-suite/httpService.ts index 69b1c0d5..2d4a8c52 100644 --- a/packages/vc-test-suite/httpService.ts +++ b/packages/vc-test-suite/httpService.ts @@ -1,21 +1,24 @@ import axios, { AxiosRequestConfig } from 'axios'; import { isPlainObject, every, isString } from 'lodash'; + const defaultHeaders = { 'Content-Type': 'application/json', }; export const request = async (params: AxiosRequestConfig) => { - const instance = axios.create({ - headers: defaultHeaders, - }); - - // Check if user defined headers is an object and contains only string values if (params.headers) { if (!isPlainObject(params.headers) || !every(params.headers, isString)) { throw new Error('Headers specified in the config must be a plain object with string values.'); } } + const instance = axios.create({ + headers: { + ...defaultHeaders, + ...params.headers, + }, + }); + const response = await instance.request(params); return response; }; diff --git a/packages/vc-test-suite/tests/RenderTemplate2024/render-template-2024.test.ts b/packages/vc-test-suite/tests/RenderTemplate2024/render-template-2024.test.ts index 374eded0..38535cf7 100644 --- a/packages/vc-test-suite/tests/RenderTemplate2024/render-template-2024.test.ts +++ b/packages/vc-test-suite/tests/RenderTemplate2024/render-template-2024.test.ts @@ -100,8 +100,7 @@ describe('RenderTemplate2024', function () { }, ); - // TODO check grammar - reportRow("should successfully render when 'mediaQuery' is not provided", config.implementationName, async () => { + reportRow('should render successfully when ‘mediaQuery’ is not provided', config.implementationName, async () => { // Import the input data for the test from the specified JSON file. const input = require('./input/no-mediaQuery-in-renderMethod-ok.json');