public async Task <IHttpActionResult> Put(Guid id, [FromBody] UpdateUserInfoRequestDto updateUserData) { var validator = new UpdatedUserInfoRequestDtoValidator(id, this._phoneValidationManager, this._userService); var results = await validator.ValidateAsync(updateUserData); var detailedError = new StringBuilder(); foreach (var error in results.Errors.Select(e => e.ErrorMessage)) { detailedError.Append(error + "; "); } if (!results.IsValid) { return(BadRequest(detailedError.ToString())); // TODO: Think of returning the errors in a better way } try { this._userService.UpdateUserInfo(id, updateUserData); return(Ok()); } catch (Exception ex) { var errorMessage = _apiLogger.OnActionException(ActionContext, ex); return(InternalServerError(new HttpException(errorMessage))); } }
public void UpdateUserInfo(Guid uid, UpdateUserInfoRequestDto updatedInfo) { var userEntity = this._unitOfWork.UserRepository.GetAllUsers().FirstOrDefault(u => u.Id == uid); if (userEntity == null) { throw new ArgumentException("User not available in Database"); } this._mapper.Map <UpdateUserInfoRequestDto, User>(updatedInfo, userEntity); if (userEntity.Languages != null) { userEntity.Languages.Clear(); } else { userEntity.Languages = new List <Language>(); } var languages = this._unitOfWork.LanguageRepository.GetAlLanguages().Where(l => updatedInfo.LanguageIds.Contains(l.Id)); foreach (var language in languages) { userEntity.Languages.Add(language); } this._unitOfWork.Save(); if (updatedInfo.AutomaticSubscriptionSettings != null) { this.UpdateUserAutomaticSubscriptionSettings(uid, new EditUserAutomaticSubscriptionSettingsRequestDto() { AutomaticallySubscribeToAllGroups = updatedInfo.AutomaticSubscriptionSettings.AutomaticallySubscribeToAllGroups, AutomaticallySubscribeToAllGroupsWithTag = updatedInfo.AutomaticSubscriptionSettings.AutomaticallySubscribeToAllGroupsWithTag, SubscribedTagIds = updatedInfo.AutomaticSubscriptionSettings.SubscribedTagIds }); } if (updatedInfo.SocialLinks != null) { this.UpdateSocialLinksForUser(uid, new UpdateSocialLinksRequestDto() { FacebookUsername = updatedInfo.SocialLinks.FacebookUsername, TwitterUsername = updatedInfo.SocialLinks.TwitterUsername, InstagramUsername = updatedInfo.SocialLinks.InstagramUsername }); } }
public async Task We_Validate_Automatic_Subscr_Settings_If_Avail_When_Updating_User() { // arrange var request = new UpdateUserInfoRequestDto() { AutomaticSubscriptionSettings = new AutomaticSubscriptionSettingsDto { AutomaticallySubscribeToAllGroups = true, AutomaticallySubscribeToAllGroupsWithTag = true }, Email = "*****@*****.**", FirstName = "Stefcho", LastName = "Mefcho" }; var userController = new UserController(this._mockedUserService.Object, null, null, null, null); // act var actionResult = await userController.Put(Guid.NewGuid(), request); var contentResult = actionResult as BadRequestErrorMessageResult; // assert Assert.IsNotNull(contentResult); Assert.AreEqual("The options for AutomaticallySubscribeToAllGroups and AutomaticallySubscribeToAllGroupsWithTag can not be both set to 'true'.; ", contentResult.Message); this._mockedUserService.Verify(m => m.UpdateUserInfo(It.IsAny <Guid>(), It.IsAny <UpdateUserInfoRequestDto>()), Times.Never); // act request.AutomaticSubscriptionSettings = null; actionResult = await userController.Put(Guid.NewGuid(), request); var secondContentResult = actionResult as OkResult; // assert this._mockedUserService.Verify(m => m.UpdateUserInfo(It.IsAny <Guid>(), It.IsAny <UpdateUserInfoRequestDto>()), Times.Once); Assert.IsNotNull(secondContentResult); }
public async Task We_Validate_Social_Links_If_Avail_When_Updating_User() { // arrange var request = new UpdateUserInfoRequestDto() { SocialLinks = new SocialLinksDto() { FacebookUsername = "******" } , Email = "*****@*****.**", FirstName = "Stefcho", LastName = "Mefcho" }; var userController = new UserController(this._mockedUserService.Object, null, null, null, null); // act var actionResult = await userController.Put(Guid.NewGuid(), request); var contentResult = actionResult as BadRequestErrorMessageResult; // assert Assert.IsNotNull(contentResult); Assert.AreEqual("Facebook username must have the prefix: m.me/; ", contentResult.Message); this._mockedUserService.Verify(m => m.UpdateUserInfo(It.IsAny <Guid>(), It.IsAny <UpdateUserInfoRequestDto>()), Times.Never); // act request.SocialLinks = null; actionResult = await userController.Put(Guid.NewGuid(), request); var secondContentResult = actionResult as OkResult; // assert this._mockedUserService.Verify(m => m.UpdateUserInfo(It.IsAny <Guid>(), It.IsAny <UpdateUserInfoRequestDto>()), Times.Once); Assert.IsNotNull(secondContentResult); }
public void Updating_Non_Existing_User_Throws_ArgumentException() { // arrange var newUserStsId = "https://boongaloocompanysts/identity3025f46b-3070-4f75-809d-44b7ae5b8e6a"; // TODO: Extract this as a common part between this one and the one above var newUserRequest = new NewUserRequestDto() { About = "About", Email = "*****@*****.**", FirstName = "Stecho", LastName = "Stefchev", Gender = GenderEnum.Male, IdsrvUniqueId = newUserStsId, PhoneNumber = "+359886585549" }; // act var newUserId = this._userService.InsertNewUser(newUserRequest); // assert var newUser = this._userService.GetUserById(newUserId); Assert.IsNotNull(newUser); Assert.AreEqual(newUser.IdsrvUniqueId, newUserStsId); Assert.IsNotNull(newUser.AutomaticSubscriptionSettings); Assert.IsNotNull(newUser.BirthDate); Assert.AreEqual(newUser.BirthDate, DateTime.Parse(this.InitialDateString)); var updatedBirthDate = DateTime.UtcNow; var updatedAbout = "UpdatedAbout"; var updatedEmail = "*****@*****.**"; var firstNameUpdated = "UpdatedStecho"; var lastNameUpdated = "UpdatedStefchev"; var firstLanguageId = Guid.Parse("e9260fb3-5183-4c3e-9bd2-c606d03b7bcb"); var secondLanguageId = Guid.Parse("05872235-365b-41f8-ab50-3913ffe9c601"); var updateData = new UpdateUserInfoRequestDto() { About = updatedAbout, BirthDate = updatedBirthDate, Email = updatedEmail, FirstName = firstNameUpdated, Gender = GenderEnum.Female, LastName = lastNameUpdated, LanguageIds = new List <Guid>() { firstLanguageId, secondLanguageId }, PhoneNumber = "Updated+359886585549" }; // act Guid notValidUserId = Guid.NewGuid(); while (notValidUserId == newUserId) { notValidUserId = Guid.NewGuid(); } this._userService.UpdateUserInfo(notValidUserId, updateData); }
public void We_Can_Update_Initially_Created_User() { // arrange var newUserStsId = "https://boongaloocompanysts/identity3025f46b-3070-4f75-809d-44b7ae5b8e6a"; var newUserRequest = new NewUserRequestDto() { About = "About", Email = "*****@*****.**", FirstName = "Stecho", LastName = "Stefchev", Gender = GenderEnum.Male, IdsrvUniqueId = newUserStsId, PhoneNumber = "+359886585549", LanguageIds = new List <Guid>() { Guid.Parse("e9260fb3-5183-4c3e-9bd2-c606d03b7bcb") } }; // act var newUserId = this._userService.InsertNewUser(newUserRequest); // assert var newUser = this._userService.GetUserById(newUserId); Assert.IsNotNull(newUser); Assert.AreEqual(newUser.IdsrvUniqueId, newUserStsId); Assert.IsNotNull(newUser.AutomaticSubscriptionSettings); Assert.IsNotNull(newUser.BirthDate); Assert.AreEqual(newUser.BirthDate, DateTime.Parse(this.InitialDateString)); // arrange var updatedBirthDate = DateTime.UtcNow; var updatedAbout = "UpdatedAbout"; var updatedEmail = "*****@*****.**"; var firstNameUpdated = "UpdatedStecho"; var lastNameUpdated = "UpdatedStefchev"; var firstLanguageId = Guid.Parse("e9260fb3-5183-4c3e-9bd2-c606d03b7bcb"); var secondLanguageId = Guid.Parse("05872235-365b-41f8-ab50-3913ffe9c601"); var updateData = new UpdateUserInfoRequestDto() { About = updatedAbout, BirthDate = updatedBirthDate, Email = updatedEmail, FirstName = firstNameUpdated, Gender = GenderEnum.Female, LastName = lastNameUpdated, LanguageIds = new List <Guid>() { firstLanguageId, secondLanguageId }, PhoneNumber = "Updated+359886585549", AutomaticSubscriptionSettings = new AutomaticSubscriptionSettingsDto() { AutomaticallySubscribeToAllGroups = true, AutomaticallySubscribeToAllGroupsWithTag = false, SubscribedTagIds = new List <Guid>() } }; // act this._userService.UpdateUserInfo(newUserId, updateData); // assert newUser = this._userService.GetUserById(newUserId); Assert.IsNotNull(newUser); Assert.AreEqual(newUser.IdsrvUniqueId, newUserStsId); Assert.AreEqual(newUser.BirthDate, updatedBirthDate); Assert.AreEqual(newUser.About, updatedAbout); Assert.AreEqual(newUser.Email, updatedEmail); Assert.AreEqual(newUser.FirstName, firstNameUpdated); Assert.AreEqual(newUser.LastName, lastNameUpdated); Assert.AreEqual(newUser.Languages.Count(), 2); Assert.IsTrue(newUser.Languages.Select(l => l.Id).Contains(firstLanguageId)); Assert.IsTrue(newUser.Languages.Select(l => l.Id).Contains(secondLanguageId)); }