add tests
This commit is contained in:
1155
package-lock.json
generated
1155
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
10
package.json
10
package.json
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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={() => {}} />)
|
||||
})
|
||||
})
|
||||
|
||||
11
src/components/Tournaments/__mocks__/dataTournamentGroup.js
Normal file
11
src/components/Tournaments/__mocks__/dataTournamentGroup.js
Normal 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'
|
||||
}
|
||||
@@ -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
9
vitest.config.js
Normal 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
2
vitest.setup.js
Normal file
@@ -0,0 +1,2 @@
|
||||
import React from 'react'
|
||||
global.React = React
|
||||
Reference in New Issue
Block a user