public void DateCreated_Can_Not_Be_Null(DifferenceType differenceType, ValidationState validationState)
        {

            var o = new ModelDifferenceObject(Session.DefaultSession);
            Isolate.WhenCalled(() => o.DifferenceType).WillReturn(differenceType);
            var ruleSet = new RuleSet();

            RuleSetValidationResult target = ruleSet.ValidateTarget(o, ContextIdentifier.Save);

            RuleSetValidationResultItem @default = target.Results.Where(
                item =>
                item.Rule is RuleRequiredField &&
                ((RuleRequiredField)item.Rule).TargetMember.Name == o.GetPropertyInfo(x => x.DateCreated).Name).FirstOrDefault();
            Assert.AreEqual(validationState, @default.State);
        }
        public void Same_ApplicationName_Differences_Cannot_Exist()
        {
            new ModelDifferenceObject(Session.DefaultSession) { PersistentApplication = new PersistentApplication(Session.DefaultSession) { UniqueName = "appName" } }.Save();

            var modelDifferenceObject = new ModelDifferenceObject(Session.DefaultSession) { PersistentApplication = new PersistentApplication(Session.DefaultSession) { UniqueName = "appName" } };
            var objectsToValidate = new SaveContextTargetObjectSelector().GetObjectsToValidate(Session.DefaultSession, modelDifferenceObject);

            RuleSetValidationResult targets = Validator.RuleSet.ValidateAllTargets(objectsToValidate, ContextIdentifier.Save);

            var resultItem = targets.Results.Where(
                item =>
                item.Rule is RuleUniqueValue &&
                item.Rule.UsedProperties.Contains(
                    modelDifferenceObject.GetPropertyInfo(x => modelDifferenceObject.PersistentApplication.UniqueName).Name)).
                FirstOrDefault();

            Assert.IsNotNull(resultItem);
            Assert.AreEqual(ValidationState.Invalid, resultItem.State);
        }
        public void PersistentApplication_Is_Required()
        {
            var modelDifferenceObject = new ModelDifferenceObject(Session.DefaultSession) { PersistentApplication = null };

            var validationResult = new RuleSet().ValidateTarget(modelDifferenceObject, ContextIdentifier.Save);

            var validationResultItem = validationResult.Results.Where(item => item.Rule is RuleRequiredField && item.Rule.UsedProperties.Contains(modelDifferenceObject.GetPropertyInfo(x => x.PersistentApplication).Name)).FirstOrDefault();
            Assert.IsNull(modelDifferenceObject.PersistentApplication);
            Assert.IsNotNull(validationResultItem);
            Assert.AreEqual(ValidationState.Invalid, validationResultItem.State);
        }