public void CanChangeCulture()
        {
            var userRepository = GetFakeRepositoryInstance(emailIsUnique: true);
            var culture = new CultureInfo("nl-NL");

            var user = new User("*****@*****.**", "Robin van der Knaap", culture, userRepository, DefaultTestApplicationSettings);

            user.SetCulture(new CultureInfo("en-US"), DefaultTestApplicationSettings);

            Assert.AreEqual(new CultureInfo("en-US"), user.Culture);
        }
        public void CannotInvalidateUser()
        {
            var userRepository = GetFakeRepositoryInstance(emailIsUnique: true);
            var culture = new CultureInfo("nl-NL");

            var user = new User("*****@*****.**", "Robin van der Knaap", culture, userRepository, DefaultTestApplicationSettings);

            CustomAssert.ThrowsWithExceptionMessage<BusinessRuleViolationException>(
                () => user.SetEmail(" ", userRepository),
                "Email address is required"
            );

            CustomAssert.ThrowsWithExceptionMessage<BusinessRuleViolationException>(
                () => user.SetEmail("robinskaelenl", userRepository),
                "'robinskaelenl' is not a valid email address"
            );

            CustomAssert.ThrowsWithExceptionMessage<BusinessRuleViolationException>(
                () => user.SetCulture(null, DefaultTestApplicationSettings),
                "Culture is required"
            );

            CustomAssert.ThrowsWithExceptionMessage<BusinessRuleViolationException>(
                () => user.SetCulture(new CultureInfo("en-GB"), DefaultTestApplicationSettings),
                "Culture is not accepted"
            );

            CustomAssert.ThrowsWithExceptionMessage<BusinessRuleViolationException>(
                () => user.DisplayName = " ",
                "Display name is required"
            );
        }