Files
geograsim/App/tests/unit/education-levels.test.ts
Adminator f22c5ebbfe Stand 2026-04-13: PHP/MySQL Infrastruktur, Flussmanagement, Stadt-Prototyp
- PHP/MySQL Backend (XAMPP + Produktionsserver)
- Front-Controller, API-Endpunkte, Session-Management
- Flussmanagement-Simulation (Echtzeit, Punkt-basierter Fluss)
- Stadt & Raumplanung (Prototyp, Top-Down Kachelsystem)
- Klimawaechter 3D: Deiche kleiner, Baeume kippen, Budget angepasst
- persistence.ts: Dualer Speicher (localStorage + Server-API)
- 6 Unit-Test-Dateien fuer bestehende Simulationen

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 16:43:42 +02:00

101 lines
3.1 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { describe, it, expect } from 'vitest'
import {
AUSTRIA, GERMANY_BAYERN, SWITZERLAND,
getLocalName, getPrimaryStages, requiresReading,
getReadingLevel, getSubjectName
} from '../../src/core/education-levels'
describe('Education Levels — Österreich', () => {
it('AT: 1. Klasse MS = Schulstufe 5', () => {
expect(getLocalName(AUSTRIA, 5)).toBe('1. Klasse')
})
it('AT: 4. Klasse MS = Schulstufe 8', () => {
expect(getLocalName(AUSTRIA, 8)).toBe('4. Klasse')
})
it('AT: Volksschule = Schulstufe 14', () => {
expect(getLocalName(AUSTRIA, 1)).toBe('1. Klasse Volksschule')
expect(getLocalName(AUSTRIA, 4)).toBe('4. Klasse Volksschule')
})
it('AT: Hauptfokus = Stufe 58 (4 Stufen)', () => {
const primary = getPrimaryStages(AUSTRIA)
expect(primary).toHaveLength(4)
expect(primary[0].level).toBe(5)
expect(primary[3].level).toBe(8)
})
it('AT: Fach heißt "Geografie und wirtschaftliche Bildung" ab Stufe 5', () => {
expect(getSubjectName(AUSTRIA, 5)).toBe('Geografie und wirtschaftliche Bildung')
})
it('AT: Fach heißt "Sachunterricht" in der Volksschule', () => {
expect(getSubjectName(AUSTRIA, 3)).toBe('Sachunterricht')
})
it('AT: Stundentafel korrekt (2-1-2-2)', () => {
const primary = getPrimaryStages(AUSTRIA)
expect(primary.map(s => s.hoursPerWeek)).toEqual([2, 1, 2, 2])
})
})
describe('Education Levels — Deutschland Bayern', () => {
it('DE-BY: Stufe 5 = "5. Jahrgangsstufe"', () => {
expect(getLocalName(GERMANY_BAYERN, 5)).toBe('5. Jahrgangsstufe')
})
it('DE-BY: Kein Geo in Stufe 6 und 9 (0 Stunden)', () => {
const stages = getPrimaryStages(GERMANY_BAYERN)
const stage6 = stages.find(s => s.level === 6)
const stage9 = stages.find(s => s.level === 9)
expect(stage6?.hoursPerWeek).toBe(0)
expect(stage9?.hoursPerWeek).toBe(0)
})
it('DE-BY: Fach heißt "Geographie"', () => {
expect(getSubjectName(GERMANY_BAYERN, 7)).toBe('Geographie')
})
})
describe('Education Levels — Schweiz', () => {
it('CH: Stufe 7 = "1. Oberstufe"', () => {
expect(getLocalName(SWITZERLAND, 7)).toBe('1. Oberstufe')
})
it('CH: Hauptfokus = Stufe 79 (Zyklus 3)', () => {
const primary = getPrimaryStages(SWITZERLAND)
expect(primary).toHaveLength(3)
expect(primary[0].level).toBe(7)
})
it('CH: Fach heißt "Räume, Zeiten, Gesellschaften" in Zyklus 3', () => {
expect(getSubjectName(SWITZERLAND, 8)).toBe('Räume, Zeiten, Gesellschaften')
})
it('CH: Fach heißt "Natur, Mensch, Gesellschaft" in Zyklus 2', () => {
expect(getSubjectName(SWITZERLAND, 5)).toBe('Natur, Mensch, Gesellschaft')
})
})
describe('Education Levels — Lesekompetenz', () => {
it('Stufe 1 (6-jährige): keine Lesekompetenz', () => {
expect(getReadingLevel(1)).toBe('none')
expect(requiresReading(1)).toBe(false)
})
it('Stufe 23 (7-9 Jahre): basale Lesekompetenz', () => {
expect(getReadingLevel(2)).toBe('basic')
expect(getReadingLevel(3)).toBe('basic')
})
it('Stufe 4+ (ab 9 Jahre): fließende Lesekompetenz', () => {
expect(getReadingLevel(4)).toBe('fluent')
expect(getReadingLevel(7)).toBe('fluent')
})
})