Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }