package models_test import ( "arbeitszeitmessung/helper" "arbeitszeitmessung/models" "testing" "time" ) var testAbsence = models.Absence{ Day: CatchError(time.Parse(time.DateOnly, "2025-01-01")), AbwesenheitTyp: models.AbsenceType{}, DateFrom: CatchError(time.Parse(time.DateOnly, "2025-01-01")), DateTo: CatchError(time.Parse(time.DateOnly, "2025-01-03")), } var testKurzarbeit = models.AbsenceType{ Name: "Kurzarbeit", WorkTime: -1, } var testUrlaub = models.AbsenceType{ Name: "Urlaub", WorkTime: 100, } var testUrlaubUntertags = models.AbsenceType{ Name: "Urlaub untertags", WorkTime: 50, } func TestCalcRealWorkTimeDayAbsence(t *testing.T) { testCases := []struct { absenceType models.AbsenceType expectedTime time.Duration }{ { absenceType: testUrlaub, expectedTime: time.Hour * 8, }, { absenceType: testUrlaubUntertags, expectedTime: time.Hour * 4, }, { absenceType: testKurzarbeit, expectedTime: 0, }, } for _, tc := range testCases { t.Run("Calc Absence Worktime: "+tc.absenceType.Name, func(t *testing.T) { var testCase = testAbsence testCase.AbwesenheitTyp = tc.absenceType workTime := testCase.GetWorktime(testUser, models.WorktimeBaseDay, false) if workTime != tc.expectedTime { t.Errorf("Calc Worktime Default not working, time should be %s, but was %s", helper.FormatDurationFill(tc.expectedTime, true), helper.FormatDurationFill(workTime, true)) } }) } } func TestCalcRealWorkTimeWeekAbsence(t *testing.T) { testCases := []struct { absenceType models.AbsenceType expectedTime time.Duration }{ { absenceType: testUrlaub, expectedTime: time.Hour * 7, }, { absenceType: testUrlaubUntertags, expectedTime: time.Hour*3 + time.Minute*30, }, { absenceType: testKurzarbeit, expectedTime: 0, }, } for _, tc := range testCases { t.Run("Calc Absence Worktime: "+tc.absenceType.Name, func(t *testing.T) { var testCase = testAbsence testCase.AbwesenheitTyp = tc.absenceType workTime := testCase.GetWorktime(testUser, models.WorktimeBaseWeek, false) if workTime != tc.expectedTime { t.Errorf("Calc Worktime Default not working, time should be %s, but was %s", helper.FormatDurationFill(tc.expectedTime, true), helper.FormatDurationFill(workTime, true)) } }) } }