mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-08-03 18:29:14 +02:00
Merge branch 'refs/heads/41-bug-all-events-vanish-if-the-official-endpoint-is-offline' into 46-event-update-issue-with-old-courses-in-group-table
# Conflicts: # services/data-manager/service/addRoute.go # services/data-manager/service/course/courseFunctions.go # services/data-manager/service/events/courseService.go # services/data-manager/service/events/eventService.go
This commit is contained in:
@@ -17,25 +17,25 @@
|
||||
package course
|
||||
|
||||
import (
|
||||
"github.com/pocketbase/pocketbase"
|
||||
"htwkalender/data-manager/model"
|
||||
"htwkalender/data-manager/service/events"
|
||||
"htwkalender/data-manager/service/functions"
|
||||
"htwkalender/data-manager/service/functions/time"
|
||||
"htwkalender/data-manager/model/serviceModel"
|
||||
"log/slog"
|
||||
)
|
||||
|
||||
func UpdateCourse(app *pocketbase.PocketBase) {
|
||||
func UpdateCourse(service serviceModel.Service) {
|
||||
currentSemesters := functions.CalculateSemesterList(time.RealClock{})
|
||||
|
||||
var seminarGroups []model.SeminarGroup
|
||||
|
||||
for _, semester := range currentSemesters {
|
||||
seminarGroups = append(seminarGroups, events.GetAllCoursesForSemester(app, semester)...)
|
||||
seminarGroups = append(seminarGroups, service.EventService.GetAllCoursesForSemester(semester)...)
|
||||
}
|
||||
|
||||
for _, seminarGroup := range seminarGroups {
|
||||
_, err := events.UpdateModulesForCourse(app, seminarGroup)
|
||||
_, err := service.EventService.UpdateModulesForCourse(seminarGroup)
|
||||
if err != nil {
|
||||
slog.Warn("Update Course: "+seminarGroup.Course+" failed:", "error", err)
|
||||
}
|
||||
|
97
services/data-manager/service/course/courseFunctions_test.go
Normal file
97
services/data-manager/service/course/courseFunctions_test.go
Normal file
@@ -0,0 +1,97 @@
|
||||
package course
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"github.com/stretchr/testify/require"
|
||||
"htwkalender/data-manager/model"
|
||||
"htwkalender/data-manager/model/serviceModel"
|
||||
"htwkalender/data-manager/service/events/mock"
|
||||
"log/slog"
|
||||
"regexp"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// CustomWriter is a custom writer to capture log output
|
||||
type CustomWriter struct {
|
||||
Buffer bytes.Buffer
|
||||
}
|
||||
|
||||
func (w *CustomWriter) Write(p []byte) (n int, err error) {
|
||||
return w.Buffer.Write(p)
|
||||
}
|
||||
|
||||
func TestUpdateCourse(t *testing.T) {
|
||||
// Create mock services
|
||||
mockCourseService := new(mock.MockCourseService)
|
||||
mockEventService := new(mock.MockEventService)
|
||||
|
||||
events := model.Events{}
|
||||
|
||||
// Set up expectations
|
||||
mockCourseService.On("GetAllCourses").Return([]string{"Course1", "Course2"})
|
||||
mockEventService.On("UpdateModulesForCourse", "Course1").Return(events, nil)
|
||||
mockEventService.On("UpdateModulesForCourse", "Course2").Return(events, nil)
|
||||
|
||||
// Inject mocks into the UpdateCourse function
|
||||
service := serviceModel.Service{
|
||||
CourseService: mockCourseService,
|
||||
EventService: mockEventService,
|
||||
App: nil,
|
||||
}
|
||||
UpdateCourse(service)
|
||||
|
||||
// Assert that the expectations were met
|
||||
mockCourseService.AssertExpectations(t)
|
||||
mockEventService.AssertExpectations(t)
|
||||
|
||||
// Assert that the UpdateCourse function was called twice
|
||||
mockCourseService.AssertNumberOfCalls(t, "GetAllCourses", 1)
|
||||
mockEventService.AssertNumberOfCalls(t, "UpdateModulesForCourse", 2)
|
||||
|
||||
// Assert that the UpdateCourse function was called with the correct arguments
|
||||
mockEventService.AssertCalled(t, "UpdateModulesForCourse", "Course1")
|
||||
mockEventService.AssertCalled(t, "UpdateModulesForCourse", "Course2")
|
||||
}
|
||||
|
||||
func TestUpdateCourseErr(t *testing.T) {
|
||||
// Create mock services
|
||||
mockCourseService := new(mock.MockCourseService)
|
||||
mockEventService := new(mock.MockEventService)
|
||||
|
||||
events := model.Events{}
|
||||
|
||||
// Set up expectations
|
||||
mockCourseService.On("GetAllCourses").Return([]string{"Course1", "Course2"})
|
||||
mockEventService.On("UpdateModulesForCourse", "Course1").Return(events, fmt.Errorf("error"))
|
||||
mockEventService.On("UpdateModulesForCourse", "Course2").Return(events, fmt.Errorf("error"))
|
||||
|
||||
// Create a custom writer to capture log output
|
||||
customWriter := &CustomWriter{}
|
||||
originalLogger := slog.Default()
|
||||
defer slog.SetDefault(originalLogger)
|
||||
|
||||
// Replace the default logger with a custom logger
|
||||
slog.SetDefault(slog.New(slog.NewTextHandler(customWriter, nil)))
|
||||
|
||||
// Inject mocks into the UpdateCourse function
|
||||
service := serviceModel.Service{
|
||||
CourseService: mockCourseService,
|
||||
EventService: mockEventService,
|
||||
App: nil,
|
||||
}
|
||||
UpdateCourse(service)
|
||||
|
||||
// Assert that the expectations were met
|
||||
mockCourseService.AssertExpectations(t)
|
||||
mockEventService.AssertExpectations(t)
|
||||
|
||||
// Assert that the UpdateCourse function was called twice
|
||||
mockCourseService.AssertNumberOfCalls(t, "GetAllCourses", 1)
|
||||
mockEventService.AssertNumberOfCalls(t, "UpdateModulesForCourse", 2)
|
||||
|
||||
// Check the captured log output for the expected messages
|
||||
logOutput := customWriter.Buffer.String()
|
||||
require.Regexp(t, regexp.MustCompile(`Update Course: Course1 failed:.*error`), logOutput)
|
||||
require.Regexp(t, regexp.MustCompile(`Update Course: Course2 failed:.*error`), logOutput)
|
||||
}
|
Reference in New Issue
Block a user