Added API tests + added vitest.config.ts + added fallback of window.fetch with xmlhttprequest
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Eric NGUYEN 2022-08-03 16:03:39 +02:00
parent 0bf6b173f4
commit 05e9013c3b
8 changed files with 64 additions and 85 deletions

View file

@ -240,15 +240,28 @@ class App extends React.Component<IAppProps> {
* Fetch the configuration from the API
* @returns {Configation} The model of the configuration for the application
*/
async function fetchConfiguration(): Promise<Configuration> {
export async function fetchConfiguration(): Promise<Configuration> {
const url = `${import.meta.env.VITE_API_URL}`;
return await fetch(url, {
method: 'POST'
})
.then((response) =>
response.json()
) as Configuration;
if (window.fetch) {
return await fetch(url, {
method: 'POST'
})
.then((response) =>
response.json()
) as Configuration;
}
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.onreadystatechange = function() { // Call a function when the state changes.
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
resolve(JSON.parse(this.responseText));
}
};
xhr.send();
});
}
export default App;

18
src/test/api.test.tsx Normal file
View file

@ -0,0 +1,18 @@
import { describe, test, expect } from 'vitest';
import { fetchConfiguration } from '../App';
describe('API test', () => {
test('Load environment', () => {
const url = import.meta.env.VITE_API_URL;
expect(url).toBe('http://localhost:5000');
});
test('Fetch configuration', async() => {
const configuration = await fetchConfiguration();
expect(configuration.MainContainer).toBeDefined();
expect(configuration.MainContainer.Height).toBeGreaterThan(0);
expect(configuration.MainContainer.Width).toBeGreaterThan(0);
expect(configuration.AvailableContainers.length).toBeGreaterThan(-1);
expect(configuration.AvailableSymbols.length).toBeGreaterThan(-1);
});
});

View file

@ -1 +1,5 @@
import '@testing-library/jest-dom';
import { loadEnv } from 'vite';
const mode = 'test';
Object.assign(process.env, loadEnv(mode, '../../', ''));