From 1c889ff42d13bdb73cfd3c737c98f2ab8597ce4c Mon Sep 17 00:00:00 2001 From: Joscha Henningsen Date: Tue, 11 Jul 2023 14:09:41 +0200 Subject: [PATCH 1/2] copy admins when copying course --- api/courses.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/api/courses.go b/api/courses.go index dc2f11614..366a9b6c7 100644 --- a/api/courses.go +++ b/api/courses.go @@ -1527,6 +1527,11 @@ func (r coursesRoutes) copyCourse(c *gin.Context) { course := tlctx.Course streams := course.Streams + admins, err := r.DaoWrapper.CoursesDao.GetCourseAdmins(course.ID) + if err != nil { + log.WithError(err).Error("Error getting course admins") + admins = []model.User{} + } course.Model = gorm.Model{} course.Streams = nil yearInt, err := strconv.Atoi(request.Year) @@ -1561,6 +1566,13 @@ func (r coursesRoutes) copyCourse(c *gin.Context) { numErrors++ } } + for _, admin := range admins { + err := r.CoursesDao.AddAdminToCourse(admin.ID, course.ID) + if err != nil { + log.WithError(err).Error("Can't add admin to course") + numErrors++ + } + } c.JSON(http.StatusOK, gin.H{"numErrs": numErrors, "newCourse": course.ID}) } From 56522b59cfcdbd195d6de1792b5dcb360c316dc7 Mon Sep 17 00:00:00 2001 From: Joscha Henningsen Date: Tue, 11 Jul 2023 14:28:30 +0200 Subject: [PATCH 2/2] fix test --- api/courses_test.go | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/api/courses_test.go b/api/courses_test.go index 44bf3d9c9..03e4890f6 100644 --- a/api/courses_test.go +++ b/api/courses_test.go @@ -791,6 +791,15 @@ func TestCoursesCRUD(t *testing.T) { CreateCourse(gomock.Any(), gomock.Any(), true). Return(errors.New("")). AnyTimes() + coursesMock. + EXPECT().GetCourseAdmins(testutils.CourseFPV.ID). + Return([]model.User{testutils.Admin}, nil). + MinTimes(1).MaxTimes(1) + coursesMock. + EXPECT(). + AddAdminToCourse(gomock.Any(), gomock.Any()). + Return(nil). + AnyTimes() return coursesMock }(), } @@ -803,7 +812,34 @@ func TestCoursesCRUD(t *testing.T) { "success": { Router: func(r *gin.Engine) { wrapper := dao.DaoWrapper{ - CoursesDao: testutils.GetCoursesMock(t), + CoursesDao: func() dao.CoursesDao { + coursesMock := mock_dao.NewMockCoursesDao(gomock.NewController(t)) + coursesMock. + EXPECT(). + GetCourseById(gomock.Any(), testutils.CourseFPV.ID). + Return(testutils.CourseFPV, nil). + AnyTimes() + coursesMock. + EXPECT(). + GetCourseBySlugYearAndTerm(gomock.Any(), testutils.CourseFPV.Slug, testutils.CourseFPV.TeachingTerm, testutils.CourseFPV.Year). + Return(testutils.CourseFPV, nil). + AnyTimes() + coursesMock. + EXPECT(). + CreateCourse(gomock.Any(), gomock.Any(), true). + Return(nil). + AnyTimes() + coursesMock. + EXPECT().GetCourseAdmins(testutils.CourseFPV.ID). + Return([]model.User{testutils.Admin}, nil). + MinTimes(1).MaxTimes(1) + coursesMock. + EXPECT(). + AddAdminToCourse(gomock.Any(), gomock.Any()). + Return(nil). + AnyTimes() + return coursesMock + }(), StreamsDao: testutils.GetStreamMock(t), } configGinCourseRouter(r, wrapper)