add tests

This commit is contained in:
Mario Peters
2025-06-06 21:23:03 +02:00
parent afa8dbd49d
commit 165ce6dd14
7 changed files with 1243 additions and 23 deletions

1155
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -12,7 +12,8 @@
"lint:fix": "eslint --fix --ext .js,.jsx .",
"preview": "vite preview",
"backend": "cd ../kt-backend && npm start",
"analyze": "source-map-explorer 'dist/**/*.js'"
"analyze": "source-map-explorer 'dist/**/*.js'",
"test": "vitest"
},
"dependencies": {
"@emotion/react": "^11.14.0",
@@ -32,14 +33,19 @@
"@eslint/compat": "^1.2.9",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.28.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.3.0",
"@vitejs/plugin-react": "^4.5.1",
"@vitest/ui": "^3.2.2",
"eslint": "^9.28.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
"globals": "^16.2.0",
"jsdom": "^26.1.0",
"react-error-overlay": "6.1.0",
"vite": "^6.3.5"
"vite": "^6.3.5",
"vitest": "^3.2.2"
}
}

View File

@@ -1,24 +1,74 @@
import { render, screen } from '@testing-library/react'
import TournamentsCard from './TournamentsCard'
import React from 'react'
import { render } from '@testing-library/react'
import { BrowserRouter } from 'react-router-dom'
import { vi, describe, it, expect } from 'vitest'
describe('Tournament Card', () => {
it('Page has header', () => {
// Arrange
const tournamentData = {
name: 'JKA Cup 2021',
// Mocks für i18n und DialogContext
vi.mock('react-i18next', () => ({
useTranslation: () => ({
t: (key) => key,
i18n: { changeLanguage: () => new Promise(() => {}) },
}),
}))
vi.mock('../Dialog/Context', () => ({
DialogContext: { Provider: ({ children }) => children },
}))
import { DialogContext } from '../Dialog/Context'
import TournamentsCard from './TournamentsCard'
import AddGroups from '../Groups/AddGroups'
import EditGroups from '../Groups/EditGroups'
import Groups from '../Groups/Groups'
import AddEditTournament from './AddEditTournament'
import DeleteTournamentDialog from './DeleteTournamentDialog'
import TriggerGroupsDialog from './TriggerGroupsDialog'
import { dataTournamentGroup } from './__mocks__/dataTournamentGroup'
const mockDialogContextValue = {
// Füge hier alle Werte/Funktionen hinzu, die deine Komponente aus dem Context nutzt
onClose: () => {},
open: false,
// ...weitere Werte nach Bedarf...
}
describe('Komponenten Smoke-Tests', () => {
it('TournamentsCard rendert ohne Fehler', () => {
const tournament = {
id: 1,
name: 'Test Turnier',
veranstaltungsDatum: '2021-11-12T23:00:00.000Z',
ort: 'Bottrop',
ort: 'Teststadt',
}
// Act
render(
<BrowserRouter>
<TournamentsCard data={tournamentData} />
<DialogContext.Provider value={mockDialogContextValue}>
<TournamentsCard tournament={tournament} />
</DialogContext.Provider>
</BrowserRouter>,
)
})
// Assert
expect(screen.getByText(/JKA Cup 2021/i)).toBeInTheDocument()
expect(screen.getByText(/Bottrop/i)).toBeInTheDocument()
it('AddGroups rendert ohne Fehler', () => {
render(<AddGroups open={false} onClose={() => {}} />)
})
it('EditGroups rendert ohne Fehler', () => {
render(<EditGroups open={false} onClose={() => {}} />)
})
it('Groups rendert ohne Fehler', () => {
render(<Groups dataTournamentGroup={dataTournamentGroup} />)
})
it('AddEditTournament rendert ohne Fehler', () => {
render(<AddEditTournament open={false} onClose={() => {}} tournament={{ id: 1, name: 'Test' }} />)
})
it('DeleteTournamentDialog rendert ohne Fehler', () => {
render(<DeleteTournamentDialog open={false} onClose={false} />)
})
it('TriggerGroupsDialog rendert ohne Fehler', () => {
render(<TriggerGroupsDialog open={false} onClose={() => {}} />)
})
})

View File

@@ -0,0 +1,11 @@
export const dataTournamentGroup = {
id: 1,
name: 'Gruppe A',
tournament_id: 1,
participants: [
{ id: 101, name: 'Max Mustermann' },
{ id: 102, name: 'Erika Musterfrau' }
],
created_at: '2024-06-06T12:00:00Z',
updated_at: '2024-06-06T12:00:00Z'
}

View File

@@ -1,4 +1,5 @@
import { PDFDownloadLink, PDFViewer } from '@react-pdf/renderer'
import { PDFDownloadLink } from '@react-pdf/renderer'
// import { PDFDownloadLink, PDFViewer } from '@react-pdf/renderer'
import ListPDFTemplate from '../components/PDF/ListPDFTemplate'
import { savePdf } from '../utilities/PDF'
import Spinner from '../components/Spinner/Spinner'

9
vitest.config.js Normal file
View File

@@ -0,0 +1,9 @@
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
environment: 'jsdom',
globals: true, // <-- macht describe, it, expect und auch React global für Tests
setupFiles: ['./vitest.setup.js'], // eigene Setup-Datei (siehe unten)
},
})

2
vitest.setup.js Normal file
View File

@@ -0,0 +1,2 @@
import React from 'react'
global.React = React