Skip to content

Commit

Permalink
copy admins when copying course (#1079)
Browse files Browse the repository at this point in the history
* copy admins when copying course

* fix test
  • Loading branch information
joschahenningsen authored Jul 12, 2023
1 parent e994607 commit ede41ef
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 1 deletion.
12 changes: 12 additions & 0 deletions api/courses.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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})
}

Expand Down
38 changes: 37 additions & 1 deletion api/courses_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}(),
}
Expand All @@ -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)
Expand Down

0 comments on commit ede41ef

Please sign in to comment.