94 lines
2.3 KiB
JavaScript
94 lines
2.3 KiB
JavaScript
import axios from 'axios';
|
|
import globalMethods from '@/global-methods';
|
|
import analyticsMixIn from '@/mixins/analytics-mixin';
|
|
import { getMountOptions } from '@/helpers/unit-test-helper.js';
|
|
import crypto from 'crypto';
|
|
|
|
// Mock external dependencies
|
|
jest.mock('axios');
|
|
jest.mock('@/mixins/analytics-mixin');
|
|
|
|
global.crypto = crypto;
|
|
|
|
global.$logger = {
|
|
logInformation: jest.fn(),
|
|
logWarning: jest.fn(),
|
|
logError: jest.fn(),
|
|
logCritical: jest.fn()
|
|
};
|
|
|
|
/** @ignore */
|
|
function setupMocksForHttpClient({
|
|
endpoint = null,
|
|
isError = false,
|
|
additionalData = null
|
|
}) {
|
|
// Clear node module
|
|
axios.mockClear();
|
|
|
|
getMountOptions();
|
|
|
|
// Success Response
|
|
const response = {
|
|
status: 200,
|
|
data: {
|
|
message: 'Success',
|
|
additionalData
|
|
}
|
|
};
|
|
|
|
// Error Response
|
|
const error = {
|
|
response: {
|
|
status: 500,
|
|
data: {
|
|
message: 'Error',
|
|
additionalData
|
|
}
|
|
}
|
|
};
|
|
|
|
// Error interceptor on Axios returns a different object, so we need to mimic that.
|
|
if (isError) {
|
|
axios.mockRejectedValue(error);
|
|
} else {
|
|
axios.mockResolvedValue(response);
|
|
}
|
|
|
|
return {
|
|
endpoint,
|
|
logApiCall: true
|
|
};
|
|
}
|
|
|
|
it('Global Methods - Call Http Client - Should Resolve Promise', () => {
|
|
// Arrange
|
|
const endpoint = 'https://mock.safelite.com';
|
|
const httpArgs = setupMocksForHttpClient({ endpoint });
|
|
|
|
// Act
|
|
globalMethods.callHttpClient(httpArgs).then((response) => {
|
|
// Assert
|
|
expect(axios.mock.calls[0][0].url).toContain(endpoint);
|
|
expect(response.data.message).toContain('Success');
|
|
expect(response.status).toEqual(200);
|
|
});
|
|
});
|
|
|
|
it('Global Methods - Call Http Client - Should Reject Promise', () => {
|
|
// Arrange
|
|
const endpoint = 'https://mock.safelite.com';
|
|
const httpArgs = setupMocksForHttpClient({
|
|
endpoint,
|
|
isError: true
|
|
});
|
|
analyticsMixIn.methods.pushEventToGA = jest.fn();
|
|
|
|
// Act
|
|
globalMethods.callHttpClient(httpArgs).catch((err) => {
|
|
// Assert
|
|
expect(axios.mock.calls[0][0].url).toContain(endpoint);
|
|
expect(err.data.message).toContain('Error');
|
|
expect(err.status).toEqual(500);
|
|
});
|
|
});
|