public void Should_Change_User_Settings() { // Arrange var users = new List <ApplicationUser> { new ApplicationUser { Id = "user1", OrganizationId = 2, CultureCode = "en-US", TimeZone = "FLE Standard Time" } }; _usersDbSet.SetDbSetDataForAsync(users); var changeCultureDto = new ChangeUserLocalizationSettingsDto { UserId = "user1", OrganizationId = 2, LanguageCode = "lt-LT", TimeZoneId = "Pacific Standard Time" }; // Act _userService.ChangeUserLocalizationSettings(changeCultureDto); // Assert var result = _usersDbSet.First(); Assert.AreEqual("lt-LT", result.CultureCode); Assert.AreEqual("Pacific Standard Time", result.TimeZone); }
public async Task ChangeUserLocalizationSettings(ChangeUserLocalizationSettingsDto settingsDto) { var user = await _usersDbSet .FirstAsync(u => u.Id == settingsDto.UserId && u.OrganizationId == settingsDto.OrganizationId); var culture = CultureInfo .GetCultures(CultureTypes.SpecificCultures) .FirstOrDefault(c => c.Name == settingsDto.LanguageCode); if (culture == null) { throw new ValidationException(ErrorCodes.CultureUnsupported, "Unsupported culture"); } var isLanguageSupported = ConstBusinessLayer.SupportedLanguages.Any(x => x.LCID == culture.LCID); if (!isLanguageSupported) { throw new ValidationException(ErrorCodes.CultureUnsupported, "Unsupported culture"); } var isTimezoneValid = TimeZoneInfo.GetSystemTimeZones().Any(tz => tz.Id == settingsDto.TimeZoneId); if (!isTimezoneValid) { throw new ValidationException(ErrorCodes.TimezoneUnsupported, "Unsupported timezone"); } user.TimeZone = settingsDto.TimeZoneId; user.CultureCode = culture.Name; await _uow.SaveChangesAsync(settingsDto.UserId); }
public void Should_Throw_If_Language_Is_Not_Supported() { // Arrange var users = new List <ApplicationUser> { new ApplicationUser { Id = "user1", OrganizationId = 2, CultureCode = "en-US", TimeZone = "FLE Standard Time" } }; _usersDbSet.SetDbSetDataForAsync(users); var changeSettingsDto = new ChangeUserLocalizationSettingsDto { UserId = "user1", OrganizationId = 2, LanguageCode = "en-GB", TimeZoneId = "FLE Standard Time" }; // Act, Assert var result = _usersDbSet.First(); var ex = Assert.ThrowsAsync <ValidationException>(async() => await _userService.ChangeUserLocalizationSettings(changeSettingsDto)); Assert.AreEqual(ErrorCodes.CultureUnsupported, ex.ErrorCode); Assert.AreEqual("en-US", result.CultureCode); Assert.AreEqual("FLE Standard Time", result.TimeZone); }