@@ -1303,6 +1303,97 @@ func TestCoursesLectureActions(t *testing.T) {
13031303 Url (url ).
13041304 Run (t , testutils .Equal )
13051305 })
1306+ t .Run ("POST/api/course/:courseID/updateLectureSeriesTime/:streamID" , func (t * testing.T ) {
1307+ url := fmt .Sprintf ("/api/course/%d/updateLectureSeriesTime/%d" , testutils .CourseFPV .ID , testutils .StreamFPVLive .ID )
1308+
1309+ gomino.TestCases {
1310+ "no context" : {
1311+ Router : CourseRouterWrapper ,
1312+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler ),
1313+ ExpectedCode : http .StatusInternalServerError ,
1314+ },
1315+ "not admin" : {
1316+ Router : func (r * gin.Engine ) {
1317+ wrapper := dao.DaoWrapper {
1318+ CoursesDao : testutils .GetCoursesMock (t ),
1319+ }
1320+ configGinCourseRouter (r , wrapper )
1321+ },
1322+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler , testutils .TUMLiveContext (testutils .TUMLiveContextStudent )),
1323+ ExpectedCode : http .StatusForbidden ,
1324+ },
1325+ "stream not found" : {
1326+ Router : func (r * gin.Engine ) {
1327+ wrapper := dao.DaoWrapper {
1328+ CoursesDao : testutils .GetCoursesMock (t ),
1329+ StreamsDao : func () dao.StreamsDao {
1330+ streamsMock := mock_dao .NewMockStreamsDao (gomock .NewController (t ))
1331+ streamsMock .
1332+ EXPECT ().
1333+ GetStreamByID (gomock .Any (), fmt .Sprintf ("%d" , testutils .StreamFPVLive .ID )).
1334+ Return (testutils .StreamFPVLive , errors .New ("" )).
1335+ AnyTimes ()
1336+ return streamsMock
1337+ }(),
1338+ }
1339+ configGinCourseRouter (r , wrapper )
1340+ },
1341+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler , testutils .TUMLiveContext (testutils .TUMLiveContextAdmin )),
1342+ ExpectedCode : http .StatusNotFound ,
1343+ },
1344+ "can not update lecture series time" : {
1345+ Router : func (r * gin.Engine ) {
1346+ wrapper := dao.DaoWrapper {
1347+ CoursesDao : testutils .GetCoursesMock (t ),
1348+ StreamsDao : func () dao.StreamsDao {
1349+ streamsMock := mock_dao .NewMockStreamsDao (gomock .NewController (t ))
1350+ streamsMock .
1351+ EXPECT ().
1352+ GetStreamByID (gomock .Any (), fmt .Sprintf ("%d" , testutils .StreamFPVLive .ID )).
1353+ Return (testutils .StreamFPVLive , nil ).
1354+ AnyTimes ()
1355+ streamsMock .
1356+ EXPECT ().
1357+ UpdateLectureSeriesTime (testutils .StreamFPVLive ).
1358+ Return (errors .New ("" )).
1359+ AnyTimes ()
1360+ return streamsMock
1361+ }(),
1362+ }
1363+ configGinCourseRouter (r , wrapper )
1364+ },
1365+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler , testutils .TUMLiveContext (testutils .TUMLiveContextAdmin )),
1366+ ExpectedCode : http .StatusInternalServerError ,
1367+ },
1368+ "success" : {
1369+ Router : func (r * gin.Engine ) {
1370+ wrapper := dao.DaoWrapper {
1371+ CoursesDao : testutils .GetCoursesMock (t ),
1372+ StreamsDao : func () dao.StreamsDao {
1373+ streamsMock := mock_dao .NewMockStreamsDao (gomock .NewController (t ))
1374+ streamsMock .
1375+ EXPECT ().
1376+ GetStreamByID (gomock .Any (), fmt .Sprintf ("%d" , testutils .StreamFPVLive .ID )).
1377+ Return (testutils .StreamFPVLive , nil ).
1378+ AnyTimes ()
1379+ streamsMock .
1380+ EXPECT ().
1381+ UpdateLectureSeriesTime (testutils .StreamFPVLive ).
1382+ Return (nil ).
1383+ AnyTimes ()
1384+ return streamsMock
1385+ }(),
1386+ }
1387+ configGinCourseRouter (r , wrapper )
1388+ },
1389+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler , testutils .TUMLiveContext (testutils .TUMLiveContextAdmin )),
1390+ ExpectedCode : http .StatusOK ,
1391+ },
1392+ }.
1393+ Method (http .MethodPost ).
1394+ Url (url ).
1395+ Run (t , testutils .Equal )
1396+ })
13061397 t .Run ("DELETE/api/course/:courseID/deleteLectureSeries/:streamID" , func (t * testing.T ) {
13071398 url := fmt .Sprintf ("/api/course/%d/deleteLectureSeries/%d" , testutils .CourseFPV .ID , testutils .StreamFPVLive .ID )
13081399
@@ -1520,6 +1611,128 @@ func TestCoursesLectureActions(t *testing.T) {
15201611 Url (url ).
15211612 Run (t , testutils .Equal )
15221613 })
1614+
1615+ t .Run ("PUT/api/course/:courseID/updateLectureTime/:streamID" , func (t * testing.T ) {
1616+ url := fmt .Sprintf ("/api/course/%d/updateLectureTime/%d" , testutils .CourseFPV .ID , testutils .StreamFPVLive .ID )
1617+
1618+ body := updateLectureTimeRequest {
1619+ Start : testutils .StreamFPVLive .Start ,
1620+ End : testutils .StreamFPVLive .End ,
1621+ }
1622+ invalidBody := updateLectureTimeRequest {
1623+ Start : testutils .StreamFPVLive .End ,
1624+ End : testutils .StreamFPVLive .Start ,
1625+ }
1626+ gomino.TestCases {
1627+ "no context" : {
1628+ Router : CourseRouterWrapper ,
1629+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler ),
1630+ ExpectedCode : http .StatusInternalServerError ,
1631+ },
1632+ "not admin" : {
1633+ Router : func (r * gin.Engine ) {
1634+ wrapper := dao.DaoWrapper {
1635+ CoursesDao : testutils .GetCoursesMock (t ),
1636+ }
1637+ configGinCourseRouter (r , wrapper )
1638+ },
1639+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler , testutils .TUMLiveContext (testutils .TUMLiveContextStudent )),
1640+ ExpectedCode : http .StatusForbidden ,
1641+ },
1642+ "invalid streamID" : {
1643+ Router : func (r * gin.Engine ) {
1644+ wrapper := dao.DaoWrapper {
1645+ CoursesDao : testutils .GetCoursesMock (t ),
1646+ }
1647+ configGinCourseRouter (r , wrapper )
1648+ },
1649+ Url : fmt .Sprintf ("/api/course/%d/updateLectureTime/abc" , testutils .CourseFPV .ID ),
1650+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler , testutils .TUMLiveContext (testutils .TUMLiveContextAdmin )),
1651+ ExpectedCode : http .StatusBadRequest ,
1652+ },
1653+ "invalid body" : {
1654+ Router : func (r * gin.Engine ) {
1655+ wrapper := dao.DaoWrapper {
1656+ CoursesDao : testutils .GetCoursesMock (t ),
1657+ }
1658+ configGinCourseRouter (r , wrapper )
1659+ },
1660+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler , testutils .TUMLiveContext (testutils .TUMLiveContextAdmin )),
1661+ ExpectedCode : http .StatusBadRequest ,
1662+ },
1663+ "end before start" : {
1664+ Router : func (r * gin.Engine ) {
1665+ wrapper := dao.DaoWrapper {
1666+ CoursesDao : testutils .GetCoursesMock (t ),
1667+ }
1668+ configGinCourseRouter (r , wrapper )
1669+ },
1670+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler , testutils .TUMLiveContext (testutils .TUMLiveContextAdmin )),
1671+ Body : invalidBody ,
1672+ ExpectedCode : http .StatusBadRequest ,
1673+ },
1674+ "can not find stream" : {
1675+ Router : func (r * gin.Engine ) {
1676+ wrapper := dao.DaoWrapper {
1677+ CoursesDao : testutils .GetCoursesMock (t ),
1678+ StreamsDao : func () dao.StreamsDao {
1679+ streamsMock := mock_dao .NewMockStreamsDao (gomock .NewController (t ))
1680+ streamsMock .
1681+ EXPECT ().
1682+ GetStreamByID (gomock .Any (), fmt .Sprintf ("%d" , testutils .StreamFPVLive .ID )).
1683+ Return (testutils .StreamFPVLive , errors .New ("" )).
1684+ AnyTimes ()
1685+ return streamsMock
1686+ }(),
1687+ }
1688+ configGinCourseRouter (r , wrapper )
1689+ },
1690+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler , testutils .TUMLiveContext (testutils .TUMLiveContextAdmin )),
1691+ Body : body ,
1692+ ExpectedCode : http .StatusNotFound ,
1693+ },
1694+ "can not update stream" : {
1695+ Router : func (r * gin.Engine ) {
1696+ wrapper := dao.DaoWrapper {
1697+ CoursesDao : testutils .GetCoursesMock (t ),
1698+ StreamsDao : func () dao.StreamsDao {
1699+ streamsMock := mock_dao .NewMockStreamsDao (gomock .NewController (t ))
1700+ streamsMock .
1701+ EXPECT ().
1702+ GetStreamByID (gomock .Any (), fmt .Sprintf ("%d" , testutils .StreamFPVLive .ID )).
1703+ Return (testutils .StreamFPVLive , nil ).
1704+ AnyTimes ()
1705+ streamsMock .
1706+ EXPECT ().
1707+ UpdateStream (gomock .Any ()).
1708+ Return (errors .New ("" )).
1709+ AnyTimes ()
1710+ return streamsMock
1711+ }(),
1712+ }
1713+ configGinCourseRouter (r , wrapper )
1714+ },
1715+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler , testutils .TUMLiveContext (testutils .TUMLiveContextAdmin )),
1716+ Body : body ,
1717+ ExpectedCode : http .StatusInternalServerError ,
1718+ },
1719+ "success" : {
1720+ Router : func (r * gin.Engine ) {
1721+ wrapper := dao.DaoWrapper {
1722+ CoursesDao : testutils .GetCoursesMock (t ),
1723+ StreamsDao : testutils .GetStreamMock (t ),
1724+ }
1725+ configGinCourseRouter (r , wrapper )
1726+ },
1727+ Middlewares : testutils .GetMiddlewares (tools .ErrorHandler , testutils .TUMLiveContext (testutils .TUMLiveContextAdmin )),
1728+ Body : body ,
1729+ ExpectedCode : http .StatusOK ,
1730+ },
1731+ }.
1732+ Method (http .MethodPut ).
1733+ Url (url ).
1734+ Run (t , testutils .Equal )
1735+ })
15231736}
15241737
15251738func TestUnits (t * testing.T ) {
0 commit comments