Example #1
0
        public void MPT_ReadOnlyExtensionProperties()
        {
            var user = Get <TestUser>();

            var properties = new List <string>();

            user.PropertyChanged += (o, e) => { properties.Add(e.PropertyName); };

            properties.Clear();
            TestUserExt.SetUserCode(user, "NewCode");
            Assert.IsTrue(properties.Contains("TestUserExt_UserCode"));
            Assert.IsTrue(properties.Contains("TestUserExt_ReadOnlyUserCode"));
            Assert.IsTrue(properties.Contains("TestUserExt_ReadOnlyUserCodeShadow"));
            Assert.AreEqual(TestUserExt.GetUserCode(user), "NewCode");
            Assert.AreEqual(TestUserExt.GetReadOnlyUserCode(user), "NewCode ReadOnly!");
            Assert.AreEqual(TestUserExt.GetReadOnlyUserCodeShadow(user), "NewCode ReadOnly!");

            var typeProperties = TypeDescriptor.GetProperties(user);
            var property       = typeProperties.Find("TestUserExt_ReadOnlyUserCode", false);

            Assert.IsNotNull(property);
            Assert.IsTrue(property.IsReadOnly);
            property = typeProperties.Find("TestUserExt_ReadOnlyUserCodeShadow", false);
            Assert.IsNotNull(property);
            Assert.IsTrue(property.IsReadOnly);
        }
Example #2
0
        public void MPT_ORM_PropertiesMapping_Inheritance()
        {
            var repo = RF.Find <TestAdministrator>() as TestUserRepository;

            //清空历史数据
            var user = repo.GetByName("huqf");

            if (user != null)
            {
                user.PersistenceStatus = PersistenceStatus.Deleted;
                repo.Save(user);
            }

            //新建用户并设置一些值。
            var user1 = repo.New().CastTo <TestAdministrator>();

            user1.Name  = "huqf";
            user1.Level = 1;
            TestUserExt.SetUserCode(user1, "NewUserCode");

            //为用户添加一个角色
            var userRoles = user1.TestRoleList;
            var role      = new TestRole();

            userRoles.Add(role);
            role.Name = "admin";
            Assert.AreEqual(user1.Id, role.TestUserId);

            //保存新建用户
            repo.Save(user1);

            //重新获取保存的用户
            var user2 = repo.GetByName("huqf").CastTo <TestAdministrator>();

            Assert.IsNotNull(user2);
            Assert.AreEqual(user1.Name, user2.Name);
            Assert.AreEqual(user2.Level, 1);
            Assert.AreEqual(TestUserExt.GetUserCode(user2), "NewUserCode");
            Assert.AreEqual(user1.TestRoleList.Count, 1);
            Assert.AreEqual(user1.TestRoleList[0].CastTo <TestRole>().Name, "admin");

            //获取 Role
            var role2 = RF.Find <TestRole>().GetById(role.Id).CastTo <TestRole>();

            Assert.AreEqual(role.Name, "admin");
            Assert.AreEqual(role2.Name, "admin");
            Assert.AreEqual(user1.Id, role2.TestUserId);
            Assert.IsNotNull(role2.TestUser);

            //删除用户
            user1.PersistenceStatus = PersistenceStatus.Deleted;
            repo.Save(user1);
            var users = repo.GetAll();

            Assert.IsTrue(!users.Cast <TestUser>().Any(u => u.Name == "huqf"));
        }
Example #3
0
        public void MPT_ExtensionProperties()
        {
            var user = Get <TestUser>();

            Assert.AreEqual(TestUserExt.GetUserCode(user), "DefaultUserCode");

            TestUserExt.SetUserCode(user, "NewCode");
            Assert.AreEqual(TestUserExt.GetUserCode(user), "NewCode");

            var properties = TypeDescriptor.GetProperties(user);
            var property   = properties.Find("TestUserExt_UserCode", false);

            Assert.IsNotNull(property);
            Assert.IsFalse(property.IsReadOnly);
        }
Example #4
0
        public void MPT_ORM_PropertiesMapping()
        {
            using (RF.TransactionScope(UnitTestEntityRepositoryDataProvider.DbSettingName))
            {
                var repo = RF.ResolveInstance <TestUserRepository>();

                //新建用户并设置一些值。
                var user1 = repo.New();
                user1.Name = "huqf";
                TestUserExt.SetUserCode(user1, "NewUserCode");

                //为用户添加一个角色
                var userRoles = user1.TestRoleList;
                var role      = new TestRole();
                userRoles.Add(role);
                role.Name = "admin";
                Assert.AreEqual(user1.Id, role.TestUserId);

                //保存新建用户
                repo.Save(user1);

                //重新获取保存的用户
                var user2 = repo.GetByName("huqf");
                Assert.IsNotNull(user2);
                Assert.AreEqual(user1.Name, user2.Name);
                Assert.AreEqual(TestUserExt.GetUserCode(user2), "NewUserCode");
                Assert.AreEqual(user1.TestRoleList.Count, 1);
                Assert.AreEqual(user1.TestRoleList[0].CastTo <TestRole>().Name, "admin");

                //获取 Role
                var role2 = RF.Find <TestRole>().GetById(role.Id).CastTo <TestRole>();
                Assert.AreEqual(role.Name, "admin");
                Assert.AreEqual(role2.Name, "admin");
                Assert.AreEqual(user1.Id, role2.TestUserId);
                Assert.IsNotNull(role2.TestUser);

                //删除用户
                user1.PersistenceStatus = PersistenceStatus.Deleted;
                repo.Save(user1);
                var users = repo.GetAll();
                Assert.IsTrue(!users.Cast <TestUser>().Any(u => u.Name == "huqf"));
            }
        }
Example #5
0
        public void MPT_Serialization()
        {
            var e1 = Get <TestUser>();

            e1.Age = 15;
            e1._mySelfReference = e1;
            TestUserExt.SetUserCode(e1, "TestUserExt_UserCode");

            Assert.AreEqual(e1.Validate().Count, 1);

            //在这里可以查看序列化后传输的字符串
            var serializedString = MobileFormatter.SerializeToString(e1);

            Assert.IsNotNull(serializedString);
            var serializedXml = MobileFormatter.SerializeToXml(e1);

            Assert.IsNotNull(serializedXml);

            #region  制对象(序列化+反序列化)

            var e2 = ObjectCloner.Clone(e1).CastTo <TestUser>();

            //实体直接定义的字段
            Assert.AreEqual(e1._ageNonserailizable, 15);
            Assert.AreEqual(e1._ageSerailizable, 15);
            Assert.AreEqual(e2._ageSerailizable, 15);
            Assert.AreEqual(e2._ageNonserailizable, 0);
            Assert.AreEqual(e2._mySelfReference, e2);
            Assert.AreEqual(e2._now, DateTime.Today);

            //Rafy属性
            Assert.IsTrue(e2.IsDirty);
            Assert.IsFalse(e2.IsNew);
            Assert.IsFalse(e2.IsDeleted);

            //一般属性
            Assert.AreEqual(e2.Age, 15);
            Assert.AreEqual(e1.Age, 15);

            //默认属性
            Assert.AreEqual(e2.Id, e1.Id);
            Assert.AreEqual(e2.Name, "DefaultName");
            Assert.AreEqual(e1.Name, "DefaultName");

            #endregion

            #region 检测具体的序列化的值

            var si = new SerializationContainerContext(new SerializationInfoContainer(0), null);
            si.IsProcessingState = true;
            e1.CastTo <IMobileObject>().SerializeState(si);

            var list = si.States.Keys.ToArray();

            Assert.IsTrue(list.Contains("Age"), "Age 是属性值,需要序列化");
            Assert.IsTrue(list.Contains("TestUserExt_UserCode"), "UserCode 是扩展属性值,需要序列化");
            Assert.IsTrue(!list.Contains("Name"), "Name 是默认值,不需要序列化");
            Assert.IsTrue(!list.Contains("Id"), "Id 是默认值,不需要序列化");

            #endregion
        }