public async void AddModuleContent_CalledWithValidModuleContent_ReturnsOk() { IUnitOfWork unitOfWork = Substitute.For <IUnitOfWork>(); ICookieManager cookieManager = Substitute.For <ICookieManager>(); var context = Substitute.For <HttpContext>(); var testId = 1; var testModule = new Module(); var testModuleContent = new ModuleContentViewModel() { ModuleId = testId }; cookieManager.GetRoleFromToken(Arg.Any <string>()).Returns(Role.Admin.ToString()); unitOfWork.Modules.GetById(testId).Returns(testModule); unitOfWork.ModuleContents.GetLastModuleContentByModuleId(testModuleContent.ModuleId).Returns(1); var moduleContentsController = new ModuleContentsController(unitOfWork, cookieManager); moduleContentsController.ControllerContext = new ControllerContext() { HttpContext = context }; var result = await moduleContentsController.AddModuleContent(testModuleContent); var okResult = Assert.IsType <OkResult>(result); Assert.Equal(200, okResult.StatusCode); }
public async void AddModuleContent_CalledWithNull_ReturnsBadRequestWithError() { IUnitOfWork unitOfWork = Substitute.For <IUnitOfWork>(); ICookieManager cookieManager = Substitute.For <ICookieManager>(); var context = Substitute.For <HttpContext>(); ModuleContentViewModel nullModuleContent = null; string error = "Module content cannot be null."; cookieManager.GetRoleFromToken(Arg.Any <string>()).Returns(Role.Admin.ToString()); var moduleContentsController = new ModuleContentsController(unitOfWork, cookieManager); moduleContentsController.ControllerContext = new ControllerContext() { HttpContext = context }; var result = await moduleContentsController.AddModuleContent(nullModuleContent); var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(result); var returnValue = Assert.IsType <string>(badRequestObjectResult.Value); Assert.Equal(error, returnValue); }
public async void AddModuleContent_CalledAndRoleIsNotAdmin_ReturnsBadRequestWithError() { IUnitOfWork unitOfWork = Substitute.For <IUnitOfWork>(); ICookieManager cookieManager = Substitute.For <ICookieManager>(); var context = Substitute.For <HttpContext>(); var testModuleContent = new ModuleContentViewModel(); string error = "Only Admins can add new module contents."; cookieManager.GetRoleFromToken(Arg.Any <string>()).Returns(Role.Student.ToString()); var moduleContentsController = new ModuleContentsController(unitOfWork, cookieManager); moduleContentsController.ControllerContext = new ControllerContext() { HttpContext = context }; var result = await moduleContentsController.AddModuleContent(testModuleContent); var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(result); var returnValue = Assert.IsType <string>(badRequestObjectResult.Value); Assert.Equal(error, returnValue); }
public async void AddModuleContent_CalledWithInvalidValidModuleContent_ReturnsNotFoundWithModuleId() { IUnitOfWork unitOfWork = Substitute.For <IUnitOfWork>(); ICookieManager cookieManager = Substitute.For <ICookieManager>(); var context = Substitute.For <HttpContext>(); var notValidId = 1; Module nullModule = null; var testModuleContent = new ModuleContentViewModel() { ModuleId = notValidId }; cookieManager.GetRoleFromToken(Arg.Any <string>()).Returns(Role.Admin.ToString()); unitOfWork.Modules.GetById(notValidId).Returns(nullModule); unitOfWork.ModuleContents.GetLastModuleContentByModuleId(testModuleContent.ModuleId).Returns(0); var moduleContentsController = new ModuleContentsController(unitOfWork, cookieManager); moduleContentsController.ControllerContext = new ControllerContext() { HttpContext = context }; var result = await moduleContentsController.AddModuleContent(testModuleContent); var notFoundObjectResult = Assert.IsType <NotFoundObjectResult>(result); var returnValue = Assert.IsType <long>(notFoundObjectResult.Value); Assert.Equal(notValidId, returnValue); }
public async Task <IActionResult> AddModuleContent([FromBody] ModuleContentViewModel ModuleContent) { if (ModuleContent == null) { return(BadRequest("Module content cannot be null.")); } var userRole = _cookieManager.GetRoleFromToken(Request.Headers["Authorization"]); if (userRole.Equals(Role.Admin.ToString())) { var Module = await _repository.Modules.GetById(ModuleContent.ModuleId); if (Module == null) { return(NotFound(ModuleContent.ModuleId)); } var NextContentId = (await _repository.ModuleContents.GetLastModuleContentByModuleId(ModuleContent.ModuleId)) + 1; var NewModuleContent = new ModuleContent() { Title = ModuleContent.Title, Description = ModuleContent.Description, Module = Module, ContentId = NextContentId, AssigmentUrl = ModuleContent.AssigmentUrl, Lesson = ModuleContent.Lesson }; _repository.ModuleContents.Add(NewModuleContent); await _repository.Complete(); return(Ok()); } return(BadRequest("Only Admins can add new module contents.")); }