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);
        }
Exemple #2
0
        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,
            };
        }
Exemple #3
0
        /// <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;
            }
        }