package models_test import ( "arbeitszeitmessung/helper" "arbeitszeitmessung/models" "log" "testing" "time" ) func CatchError[T any](val T, err error) T { if err != nil { log.Fatalln(err) } return val } var testWorkDay = models.WorkDay{ Day: CatchError(time.Parse(time.DateOnly, "2025-01-01")), Bookings: testBookings8hrs, TimeFrom: CatchError(time.Parse("2006-01-02 15:04", "2025-01-01 08:00")), TimeTo: CatchError(time.Parse("2006-01-02 15:04", "2025-01-01 16:30")), } func TestWorkdayWorktimeDay(t *testing.T) { testCases := []struct { testName string bookings []models.Booking expectedTime time.Duration }{ { testName: "Bookings6hrs", bookings: testBookings6hrs, expectedTime: time.Hour * 6, }, { testName: "Bookings8hrs", bookings: testBookings8hrs, expectedTime: time.Hour*7 + time.Minute*30, }, { testName: "Bookings10hrs", bookings: testBookings10hrs, expectedTime: time.Hour*9 + time.Minute*15, }, } for _, tc := range testCases { t.Run("Calc Absence Worktime: "+tc.testName, func(t *testing.T) { var testCase = testWorkDay testCase.Bookings = tc.bookings workTime := testCase.GetWorktime(testUser, models.WorktimeBaseDay, false) if workTime != tc.expectedTime { t.Errorf("GetWorktimeReal not working, time should be %s, but was %s", helper.FormatDurationFill(tc.expectedTime, true), helper.FormatDurationFill(workTime, true)) } }) } } func TestWorkdayWorktimeWeek(t *testing.T) { testCases := []struct { testName string bookings []models.Booking expectedTime time.Duration }{ { testName: "Bookings6hrs", bookings: testBookings6hrs, expectedTime: time.Hour * 6, }, { testName: "Bookings8hrs", bookings: testBookings8hrs, expectedTime: time.Hour*7 + time.Minute*30, }, { testName: "Bookings10hrs", bookings: testBookings10hrs, expectedTime: time.Hour*9 + time.Minute*15, }, } for _, tc := range testCases { t.Run("Calc Absence Worktime: "+tc.testName, func(t *testing.T) { var testCase = testWorkDay testCase.Bookings = tc.bookings workTime := testCase.GetWorktime(testUser, models.WorktimeBaseWeek, false) if workTime != tc.expectedTime { t.Errorf("GetWorktimeReal not working, time should be %s, but was %s", helper.FormatDurationFill(tc.expectedTime, true), helper.FormatDurationFill(workTime, true)) } }) } } func TestWorkdayPausetimeDay(t *testing.T) { testCases := []struct { testName string bookings []models.Booking expectedTime time.Duration }{ { testName: "Bookings6hrs", bookings: testBookings6hrs, expectedTime: 0, }, { testName: "Bookings8hrs", bookings: testBookings8hrs, expectedTime: time.Minute * 30, }, { testName: "Bookings10hrs", bookings: testBookings10hrs, expectedTime: time.Minute * 45, }, } for _, tc := range testCases { t.Run("Calc Absence Worktime: "+tc.testName, func(t *testing.T) { var testCase = testWorkDay testCase.Bookings = tc.bookings workTime := testCase.GetPausetime(testUser, models.WorktimeBaseDay, false) if workTime != tc.expectedTime { t.Errorf("GetPausetimeReal not working, time should be %s, but was %s", helper.FormatDurationFill(tc.expectedTime, true), helper.FormatDurationFill(workTime, true)) } }) } } func TestWorkdayPausetimeWeek(t *testing.T) { testCases := []struct { testName string bookings []models.Booking expectedTime time.Duration }{ { testName: "Bookings6hrs", bookings: testBookings6hrs, expectedTime: 0, }, { testName: "Bookings8hrs", bookings: testBookings8hrs, expectedTime: time.Minute * 30, }, { testName: "Bookings10hrs", bookings: testBookings10hrs, expectedTime: time.Minute * 45, }, } for _, tc := range testCases { t.Run("Calc Absence Worktime: "+tc.testName, func(t *testing.T) { var testCase = testWorkDay testCase.Bookings = tc.bookings workTime := testCase.GetPausetime(testUser, models.WorktimeBaseWeek, false) if workTime != tc.expectedTime { t.Errorf("GetPausetimeReal not working, time should be %s, but was %s", helper.FormatDurationFill(tc.expectedTime, true), helper.FormatDurationFill(workTime, true)) } }) } }