164 lines
4.3 KiB
Go
164 lines
4.3 KiB
Go
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))
|
|
}
|
|
})
|
|
}
|
|
}
|