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 1–4', () => { expect(getLocalName(AUSTRIA, 1)).toBe('1. Klasse Volksschule') expect(getLocalName(AUSTRIA, 4)).toBe('4. Klasse Volksschule') }) it('AT: Hauptfokus = Stufe 5–8 (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 7–9 (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 2–3 (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') }) })