public async Task PostAsync_SaveLearningModule_ReturnsOkResult() { // ARRANGE var learningModule = new LearningModuleViewModel { Title = "Test title", Description = "Test description", ImageUrl = "https://test.jpg", }; this.learningModuleMapper.Setup(resourceMapper => resourceMapper.MapToDTO(It.IsAny <LearningModuleViewModel>(), It.IsAny <Guid>())).Returns(FakeData.GetLearningModules().FirstOrDefault()); this.unitOfWork.Setup(uow => uow.LearningModuleRepository.Add(It.IsAny <LearningModule>())).Returns(FakeData.GetLearningModules().FirstOrDefault()); this.learningModuleMapper.Setup(resourceMapper => resourceMapper.MapToViewModel(It.IsAny <LearningModule>(), It.IsAny <Dictionary <Guid, string> >())).Returns(learningModule); this.unitOfWork.Setup(uow => uow.LearningModuleRepository.GetAsync(It.IsAny <Guid>())).ReturnsAsync(FakeData.GetLearningModules().FirstOrDefault); // ACT var result = (ObjectResult)await this.learningModuleController.PostAsync(learningModule); var resultValue = (LearningModuleViewModel)result.Value; // ASSERT Assert.AreEqual(result.StatusCode, StatusCodes.Status200OK); Assert.AreEqual(resultValue.Title, learningModule.Title); Assert.AreEqual(resultValue.Description, learningModule.Description); Assert.AreEqual(resultValue.ImageUrl, learningModule.ImageUrl); }
public void TestInitialize() { this.learnNowDbContext = new Mock <LearnNowContext>(); this.learningModuleMapper = new LearningModuleMapper( this.learnNowDbContext.Object); var moduleTagss = new List <LearningModuleTag>(); var moduleTag = new LearningModuleTag() { TagId = Guid.NewGuid(), LearningModuleId = Guid.NewGuid(), }; moduleTagss.Add(moduleTag); this.learningModule = new LearningModule { Id = Guid.NewGuid(), Title = "Test LM", Description = "Test LM", GradeId = Guid.NewGuid(), SubjectId = Guid.NewGuid(), Subject = new Subject { Id = Guid.NewGuid() }, Grade = new Grade { Id = Guid.NewGuid() }, ImageUrl = "https://img.com", CreatedBy = Guid.NewGuid(), }; this.learningModuleViewModel = new LearningModuleViewModel { Id = Guid.NewGuid(), Title = "Test LM", Description = "Test LM", GradeId = Guid.NewGuid(), SubjectId = Guid.NewGuid(), ImageUrl = "https://img.com", LearningModuleTag = moduleTagss, }; this.userDetail = new UserDetail { UserId = Guid.NewGuid(), DisplayName = "User1", }; this.userDetails = new List <UserDetail> { this.userDetail, }; }
/// <summary> /// Gets learning module entity model from view model. /// </summary> /// <param name="learningModuleViewModel"> Learning module view model object.</param> /// <param name="userAadObjectId">Azure Active Directory id of current logged-in user.</param> /// <returns>Returns a learning module entity model</returns> public LearningModule PatchAndMapToDTO( LearningModuleViewModel learningModuleViewModel, Guid userAadObjectId) { learningModuleViewModel = learningModuleViewModel ?? throw new ArgumentNullException(nameof(learningModuleViewModel)); return(new LearningModule { Id = learningModuleViewModel.Id, Title = learningModuleViewModel.Title, Description = learningModuleViewModel.Description, SubjectId = learningModuleViewModel.SubjectId, GradeId = learningModuleViewModel.GradeId, ImageUrl = learningModuleViewModel.ImageUrl, UpdatedOn = DateTimeOffset.Now, UpdatedBy = userAadObjectId, CreatedOn = learningModuleViewModel.CreatedOn, CreatedBy = learningModuleViewModel.CreatedBy, }); }
/// <summary> /// Make fake LearningModule data for different user. /// </summary> /// <returns>Tag collection</returns> public static LearningModuleViewModel GetPayLoadLearningModule() { var resourceTags = new List <LearningModuleTag>(); var resourceTag = new LearningModuleTag() { TagId = Guid.Parse(Id), LearningModuleId = Guid.Parse(Id), }; resourceTags.Add(resourceTag); var learningModule = new LearningModuleViewModel() { Id = Guid.Parse(Id), Title = "test", CreatedBy = Guid.Parse(UserID), LearningModuleTag = resourceTags, }; return(learningModule); }
public async Task <IActionResult> PostAsync(LearningModuleViewModel learningModuleDetail) { this.RecordEvent("Learning module - HTTP Post call initiated.", RequestType.Initiated); this.logger.LogInformation("Learning module - HTTP Post call initiated."); try { if (learningModuleDetail == null) { this.logger.LogError($"Error while saving learning module details to storage for userId: {this.UserObjectId}"); this.RecordEvent("Learning module - HTTP Post call failed.", RequestType.Failed); return(this.BadRequest("Error while saving learning module details in storage.")); } var learningModuleEntityModel = this.learningModuleMapper.MapToDTO(learningModuleDetail, this.UserObjectId); // Storage call to save resource details. var learningModuleDetails = this.unitOfWork.LearningModuleRepository.Add(learningModuleEntityModel); await this.unitOfWork.SaveChangesAsync(); // Get userId and user display name. IEnumerable <string> userAADObjectIds = new string[] { this.UserObjectId.ToString() }; var idToNameMap = await this.usersService.GetUserDisplayNamesAsync(this.UserObjectId.ToString(), this.Request.Headers["Authorization"].ToString(), userAADObjectIds); var learningModuleViewModel = this.learningModuleMapper.MapToViewModel(learningModuleDetails, idToNameMap); this.RecordEvent("Learning module - HTTP Post call succeeded.", RequestType.Succeeded); return(this.Ok(learningModuleViewModel)); } catch (Exception ex) { this.RecordEvent("Learning module - HTTP Post call failed.", RequestType.Failed); this.logger.LogError(ex, "Error while saving learning module details."); throw; } }