This commit is contained in:
92
Backend/models/absence_test.go
Normal file
92
Backend/models/absence_test.go
Normal file
@@ -0,0 +1,92 @@
|
||||
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.GetWorktimeReal(testUser, models.WorktimeBaseDay)
|
||||
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.GetWorktimeReal(testUser, models.WorktimeBaseWeek)
|
||||
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))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user