public void As_ActiveUserDifferences_Will_Return_A_Concat_Of_Active_UserDifferenceObjects_And_RoleDifferenceObjects()
        {
            var store = new XpoUserModelDictionaryDifferenceStore( Isolate.Fake.Instance<XafApplication>());
            var userDifferenceObject1 = new UserModelDifferenceObject(Session.DefaultSession);

            var queryUserDifferenceObject = Isolate.Fake.InstanceAndSwapAll<QueryUserModelDifferenceObject>();
            Isolate.WhenCalled(() => queryUserDifferenceObject.GetActiveModelDifferences("")).WillReturn(new List<UserModelDifferenceObject> { userDifferenceObject1 }.AsQueryable());
            var roleDifferenceObject = new RoleModelDifferenceObject(Session.DefaultSession);

            var queryRoleDifferenceObject = Isolate.Fake.InstanceAndSwapAll<QueryRoleModelDifferenceObject>();
            Isolate.WhenCalled(() => queryRoleDifferenceObject.GetActiveModelDifferences("")).WillReturn(new List<RoleModelDifferenceObject> { roleDifferenceObject }.AsQueryable());


            IQueryable<ModelDifferenceObject> queryable = store.GetActiveDifferenceObjects();

            Assert.AreEqual(2, queryable.Count());
            Assert.AreEqual(userDifferenceObject1, queryable.ToList()[1]);
            Assert.AreEqual(roleDifferenceObject, queryable.ToList()[0]);
        }
        public void ActiveDifferenceObjectsRoles_Will_Be_All_ModelDifferenceObjectsObjects_that_are_OfRoleType_And_That_At_Leat_One_of_Their_Roles_Is_Current_User_Role()
        {
            Isolate.Fake.ISecurityComplex();
            var role = new Role(Session.DefaultSession);
            role.Save();
            ((User)SecuritySystem.CurrentUser).Roles.Add(role);
            XafTypesInfo.Instance.RegisterEntity(typeof(RoleModelDifferenceObject));
            RoleDifferenceObjectBuilder.CreateDynamicMembers(Isolate.Fake.Instance<ISecurityComplex>());
            new ModelDifferenceObject(Session.DefaultSession){PersistentApplication = new PersistentApplication(Session.DefaultSession)}.Save();
            var roleDifferenceObjectsObject1 = new RoleModelDifferenceObject(Session.DefaultSession) { PersistentApplication =new PersistentApplication(Session.DefaultSession) { UniqueName = "AppName" } };
            ((XPCollection)roleDifferenceObjectsObject1.GetMemberValue("Roles")).Add(role);
            roleDifferenceObjectsObject1.Save();
            var roleDifferenceObjectsObject2 = new RoleModelDifferenceObject(Session.DefaultSession) { PersistentApplication = new PersistentApplication(Session.DefaultSession) { UniqueName = "AppName" } };
            roleDifferenceObjectsObject2.Save();
            ((XPCollection)roleDifferenceObjectsObject2.GetMemberValue("Roles")).Add(role);
            new RoleModelDifferenceObject(Session.DefaultSession) { PersistentApplication = new PersistentApplication(Session.DefaultSession){ Name = "AppName" } }.Save();
            

            IQueryable<RoleModelDifferenceObject> queryable = new QueryRoleModelDifferenceObject(Session.DefaultSession).GetActiveModelDifferences("AppName");

            Assert.AreEqual(2, queryable.Count());
        }