#4 Added set of unit tests to ensure functionality of currently implemented behaviour
Some checks failed
Run Unit and Integration Tests / test (pull_request) Failing after 41s
Run Unit and Integration Tests / test (push) Failing after 1m27s

This commit is contained in:
2025-06-28 18:02:02 +01:00
parent a3ab910608
commit dc7ecc0cdb
5 changed files with 317 additions and 272 deletions

View File

@@ -0,0 +1,29 @@
import { describe, it, expect, vi, beforeEach } from 'vitest';
import { aviationWeatherApi } from './weatherservice';
describe('aviationWeatherApi', () => {
beforeEach(() => {
vi.restoreAllMocks();
});
it('fetches METAR data successfully', async () => {
const mockMetar = { icaoId: 'EGKK', temp: 20 };
vi.stubGlobal('fetch', vi.fn().mockResolvedValue({
ok: true,
json: () => Promise.resolve(mockMetar)
}));
const result = await aviationWeatherApi.fetchMetar('EGKK');
expect(result).toEqual(mockMetar);
expect(fetch).toHaveBeenCalledWith('/api/metar/EGKK');
});
it('throws error if fetch fails', async () => {
vi.stubGlobal('fetch', vi.fn().mockResolvedValue({
ok: false,
statusText: 'Not Found'
}));
await expect(aviationWeatherApi.fetchMetar('XXXX')).rejects.toThrow('Failed to fetch METAR: Not Found');
});
});

View File

@@ -9,6 +9,12 @@
perspective: 800px;
}
.loaderText {
position: absolute;
top: calc(50% - 84px);
left: calc(50% - 64px);
}
.inner {
position: absolute;
box-sizing: border-box;
@@ -66,6 +72,9 @@
}
</style>
<div class="loaderText">
Loading...
</div>
<div class="loader">
<div class="inner one"></div>
<div class="inner two"></div>

View File

@@ -0,0 +1,12 @@
import { render } from '@testing-library/svelte';
import { describe, it, expect } from 'vitest';
import Page from './+page.svelte';
describe('Main Page', () => {
it('renders the page without HTTP error codes', () => {
const { container } = render(Page);
// Check that common HTTP error codes are not present in the rendered output
const html = container.innerHTML;
expect(html).not.toMatch(/404|500|403|401|bad request|not found|internal server error/i);
});
});