Inheritance: ActiveRecordValidationBase
		public void HasCorrectErrorMessages()
		{
			ActiveRecordStarter.Initialize(GetConfigSource(), typeof(User));

			User user = new User();
			ActiveRecordValidator validator = new ActiveRecordValidator(user);

			PropertyInfo nameProp = user.GetType().GetProperty("Name");
			PropertyInfo loginProp = user.GetType().GetProperty("Login");
			PropertyInfo emailProp = user.GetType().GetProperty("Email");

			Assert.IsFalse(validator.IsValid());

			user.Name = "hammett";
			//user.Login = "******";
			user.Password = "******";
			user.ConfirmationPassword = "******";
			//user.Email = "*****@*****.**";

			Assert.IsFalse(validator.IsValid());

			Assert.IsFalse(validator.PropertiesValidationErrorMessages.Contains(nameProp));
			Assert.IsTrue(validator.PropertiesValidationErrorMessages.Contains(loginProp));
			Assert.IsTrue(validator.PropertiesValidationErrorMessages.Contains(loginProp));


			user.Login = "******";
			user.Email = "*****@*****.**";

			Assert.IsTrue(validator.IsValid());

			Assert.IsFalse(validator.PropertiesValidationErrorMessages.Contains(nameProp));
			Assert.IsFalse(validator.PropertiesValidationErrorMessages.Contains(loginProp));
			Assert.IsFalse(validator.PropertiesValidationErrorMessages.Contains(loginProp));
		}
		public void HasErrorMessages()
		{
			ActiveRecordStarter.Initialize(GetConfigSource(), typeof(User));

			User user = new User();
			ActiveRecordValidator validator = new ActiveRecordValidator(user);

			Assert.IsFalse(validator.IsValid());
			Assert.AreEqual(5, validator.PropertiesValidationErrorMessages.Count);
			Assert.AreEqual(5, validator.ValidationErrorMessages.Length);

			user.Name = "hammett";
			//user.Login = "******";
			user.Password = "******";
			user.ConfirmationPassword = "******";
			//user.Email = "*****@*****.**";

			Assert.IsFalse(validator.IsValid());

			Assert.AreEqual(2, validator.PropertiesValidationErrorMessages.Count);
			Assert.AreEqual(2, validator.ValidationErrorMessages.Length);

			user.Login = "******";
			user.Email = "*****@*****.**";

			Assert.IsTrue(validator.IsValid());

			Assert.AreEqual(0, validator.PropertiesValidationErrorMessages.Count);
			Assert.AreEqual(0, validator.ValidationErrorMessages.Length);
		}
        public void CreateFail2()
        {
            ActiveRecordStarter.Initialize(GetConfigSource(), typeof(User));
            Recreate();

            User user = new User();

            user.Save();
        }
		public void IsValid()
		{
			ActiveRecordStarter.Initialize( GetConfigSource(), typeof(User) );

			User user = new User();

			Assert.IsFalse(user.IsValid()); 

			user.Name = "hammett";
			user.Login = "******";
			user.Password = "******";
			user.ConfirmationPassword = "******";
			user.Email = "*****@*****.**";

			Assert.IsTrue(user.IsValid()); 
		}
		private int CreateNewUser()
		{
			int id;

			using (new SessionScope())
			{
				User user = new User();

				user.Name = "hammett";
				user.Login = "******";
				user.Email = "*****@*****.**";
				user.ConfirmationPassword = "******";
				user.Password = "******";

				user.Save();

				id = user.Id;
			}

			return id;
		}
		public void ErrorMessages()
		{
			Thread.CurrentThread.CurrentCulture =
				Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-us");

			ActiveRecordStarter.Initialize( GetConfigSource(), typeof(User) );

			User user = new User();
			Type type = user.GetType();
			PropertyInfo info;
			ArrayList propertyMessages;

			Assert.IsFalse(user.IsValid()); 
			Assert.AreEqual(5, user.ValidationErrorMessages.Length);
			Assert.AreEqual("This is a required field", user.ValidationErrorMessages[0]);
			Assert.AreEqual("This is a required field", user.ValidationErrorMessages[1]);
			Assert.AreEqual("This is a required field", user.ValidationErrorMessages[2]);
			Assert.AreEqual("This is a required field", user.ValidationErrorMessages[3]);
			Assert.AreEqual("This is a required field", user.ValidationErrorMessages[4]);

			Assert.AreEqual(5, user.PropertiesValidationErrorMessages.Count);

			info = type.GetProperty("Login");
			Assert.IsTrue(user.PropertiesValidationErrorMessages.Contains(info));
			propertyMessages = (ArrayList)user.PropertiesValidationErrorMessages[info];
			Assert.AreEqual(1, propertyMessages.Count);
			Assert.AreEqual("This is a required field", propertyMessages[0]);

			info = type.GetProperty("Name");
			Assert.IsTrue(user.PropertiesValidationErrorMessages.Contains(info));
			propertyMessages = (ArrayList)user.PropertiesValidationErrorMessages[info];
			Assert.AreEqual(1, propertyMessages.Count);
			Assert.AreEqual("This is a required field", propertyMessages[0]);

			info = type.GetProperty("Email");
			Assert.IsTrue(user.PropertiesValidationErrorMessages.Contains(info));
			propertyMessages = (ArrayList)user.PropertiesValidationErrorMessages[info];
			Assert.AreEqual(1, propertyMessages.Count);
			Assert.AreEqual("This is a required field", propertyMessages[0]);

			info = type.GetProperty("Password");
			Assert.IsTrue(user.PropertiesValidationErrorMessages.Contains(info));
			propertyMessages = (ArrayList)user.PropertiesValidationErrorMessages[info];
			Assert.AreEqual(1, propertyMessages.Count);
			Assert.AreEqual("This is a required field", propertyMessages[0]);

			info = type.GetProperty("ConfirmationPassword");
			Assert.IsTrue(user.PropertiesValidationErrorMessages.Contains(info));
			propertyMessages = (ArrayList)user.PropertiesValidationErrorMessages[info];
			Assert.AreEqual(1, propertyMessages.Count);
			Assert.AreEqual("This is a required field", propertyMessages[0]);

			user.Name = "hammett";
			user.Login = "******";
			user.Email = "*****@*****.**";
			user.Password = "******";
			user.ConfirmationPassword = "******";
			
			Assert.IsFalse(user.IsValid()); 
			Assert.AreEqual(1, user.ValidationErrorMessages.Length);
			Assert.AreEqual("Fields do not match", user.ValidationErrorMessages[0]);

			info = type.GetProperty("Password");
			Assert.IsTrue(user.PropertiesValidationErrorMessages.Contains(info));
			propertyMessages = (ArrayList)user.PropertiesValidationErrorMessages[info];
			Assert.AreEqual(1, propertyMessages.Count);
			Assert.AreEqual("Fields do not match", propertyMessages[0]);

			user.Password = "******";

			Assert.IsTrue(user.IsValid()); 
			Assert.AreEqual(0, user.ValidationErrorMessages.Length);
		}
		public void CreateFail4()
		{
			ActiveRecordStarter.Initialize(GetConfigSource(), typeof(User));
			Recreate();

			using (new TransactionScope())
			{
				User user = new User();

				user.Save();
			}
		}