forked from magonysandormate/PeePal
Kész tesztelés
This commit is contained in:
@@ -48,7 +48,10 @@ export default function Csempe() {
|
||||
if (loading) {
|
||||
return(
|
||||
<div className="flex justify-center items-center h-32">
|
||||
<div className="w-12 h-12 border-4 border-gray-300 border-t-yellow-500 rounded-full animate-spin"></div>
|
||||
<div
|
||||
role="status"
|
||||
className="w-12 h-12 border-4 border-gray-300 border-t-yellow-500 rounded-full animate-spin"
|
||||
></div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
import React from 'react';
|
||||
import { render, screen, waitFor, fireEvent } from '@testing-library/react';
|
||||
import Csempe from './Csempe';
|
||||
import { useAuth } from '../Bejel_Regisz/AuthContext';
|
||||
import * as fetchModule from '../../apiFetch';
|
||||
|
||||
// AuthContext mock
|
||||
jest.mock('../Bejel_Regisz/AuthContext', () => ({
|
||||
useAuth: jest.fn()
|
||||
}));
|
||||
|
||||
// mosdokFetch mock
|
||||
jest.mock('../../apiFetch', () => ({
|
||||
mosdokFetch: jest.fn()
|
||||
}));
|
||||
|
||||
describe('Csempe komponens', () => {
|
||||
const mockMosdok = [
|
||||
{
|
||||
id: 1,
|
||||
nev: 'Nyilvános WC',
|
||||
kerulet: { kerulet_nev: 'V. kerület' },
|
||||
kozeli_megall: 'Astoria',
|
||||
ar: 200,
|
||||
nyitva: '0-24',
|
||||
akadalym: 1,
|
||||
utvonal: 'https://maps.example.com/utvonal'
|
||||
}
|
||||
];
|
||||
|
||||
beforeEach(() => {
|
||||
fetch.resetMocks?.(); // ha használsz jest-fetch-mock-ot
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
test('Adminnak megjelenik a Törlés gomb', async () => {
|
||||
useAuth.mockReturnValue({ user: { is_admin: true } });
|
||||
fetchModule.mosdokFetch.mockResolvedValue(mockMosdok);
|
||||
|
||||
render(<Csempe />);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByText(/Törlés/i)).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
test('Nem adminnak nem jelenik meg a Törlés gomb', async () => {
|
||||
useAuth.mockReturnValue({ user: { is_admin: false } });
|
||||
fetchModule.mosdokFetch.mockResolvedValue(mockMosdok);
|
||||
|
||||
render(<Csempe />);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.queryByText(/Törlés/i)).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
test('Hiba esetén megjelenik hibaüzenet', async () => {
|
||||
useAuth.mockReturnValue({ user: { is_admin: true } });
|
||||
fetchModule.mosdokFetch.mockResolvedValue(null);
|
||||
|
||||
render(<Csempe />);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByText(/Nem sikerült betölteni/i)).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
test('Betöltés alatt megjelenik spinner', async () => {
|
||||
useAuth.mockReturnValue({ user: { is_admin: true } });
|
||||
fetchModule.mosdokFetch.mockImplementation(() => new Promise(() => {})); // never resolves
|
||||
|
||||
render(<Csempe />);
|
||||
expect(screen.getByRole('status')).toBeInTheDocument(); // a spinner div-ben legyen pl. role="status"
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user