public void EditVolunteerTest()
        {
            #region init
            IdentityHelper ihelper  = IdentityHelper.GetInstance();
            string         userName = "******";
            AppUser        user     = new AppUser
            {
                AccountName = userName,
                Name        = "James",
                Mobile      = "1888888888",
                Email       = "*****@*****.**"
            };
            string  password = "******";
            AppUser dbUser   = database.Users.SingleOrDefault(u => u.AccountName == userName);
            if (dbUser != null)
            {
                database.Users.Remove(dbUser);
                database.SaveChanges();
            }
            IdentityResult result1 = ihelper.CreateUser(user, password, AppRoleEnum.OrgnizationMember, OrganizationEnum.SEA团队);
            testclaims = ihelper.CreateClaims(userName, password, userName);
            helper     = VolunteerHelper.GetInstance(testclaims);
            #endregion
            #region 新建一个志愿者对象
            Volunteer v = new Volunteer
            {
                StudentNum = 0401,
                Name       = "EditTestName",
                Class      = "TestClass",
                Email      = "*****@*****.**",
                Room       = "testroom"
            };
            helper.AddVolunteer(v);
            #endregion

            #region 第一次修改
            v.Name = "ModifiedEditTestName";
            var tempvolunteer = helper.FindVolunteer(v.StudentNum);
            helper.EditVolunteer(tempvolunteer, v);//需要重建一个volunteer实体,因为实体v在加入数据库之后会自动更新链接到数据库中的条目。
            tempvolunteer = helper.FindVolunteer(v.StudentNum);
            if (!Volunteer.AreSame(v, tempvolunteer))
            {
                Assert.Fail("修改志愿者信息失败");
            }
            #endregion

            #region 第二次修改
            v.Name        = "EditByParamTestName";
            tempvolunteer = helper.FindVolunteer(v.StudentNum);
            helper.EditVolunteer(tempvolunteer, v.StudentNum, v.Name);
            tempvolunteer = helper.FindVolunteer(v.StudentNum);
            if (!Volunteer.AreSame(v, tempvolunteer))
            {
                Assert.Fail("第二次修改志愿者信息失败");
            }
            #endregion
            var result3 = helper.FindVolunteer(v.StudentNum);
            database.Volunteers.Remove(result3);//Remove
        }
예제 #2
0
        public void AddBlackListTest()
        {
            // 创建第一个volunteer
            Random    tempnum    = new Random();
            int       studentnum = tempnum.Next(000, 999);
            Guid      uid        = Guid.NewGuid();
            string    name       = uid.ToString();
            Volunteer v1         = new Volunteer()
            {
                //Id = 000,
                StudentNum = studentnum,
                Mobile     = "1234567890-",
                Name       = name,
                Email      = "*****@*****.**",
                Class      = "AddTestClass",
                Room       = "AddTestRoom"
            };

            volunteerhelper.AddVolunteer(v1);
            v1 = database.Volunteers.Single(b => b.StudentNum == v1.StudentNum);
            // 创建一个adder
            Guid    temp        = Guid.NewGuid();
            string  appusername = temp.ToString();
            Random  rnd         = new Random();
            int     usertempnum = rnd.Next(000, 999);
            int     usernum     = usertempnum;
            AppUser adder       = new AppUser()
            {
                AccountName = appusername,
                StudentNum  = usernum,
                Mobile      = "1234567890",
                Email       = "*****@*****.**"
            };

            identityhelper.CreateUser(adder, "23457890-", AppRoleEnum.OrgnizationMember, OrganizationEnum.TestOnly);
            adder = database.Users.Single(a => a.AccountName == adder.AccountName);
            // 创建一个org
            Organization org = identityhelper.CreateOrFindOrganization(OrganizationEnum.TestOnly);
            // 创建一个pro
            Guid    prouid  = Guid.NewGuid();
            string  proname = uid.ToString();
            Project pro     = new Project()
            {
                Name         = proname,
                Place        = "testplace",
                Organization = org
            };

            projectmanagerhelper.CreatNewProject(org, System.DateTime.Now, pro.Name, pro.Place, "", 70);
            pro = database.Projects.Single(p => p.Name == pro.Name);
            // 添加第一条黑名单记录
            BlackListRecord testaddrecord1 = new BlackListRecord
            {
                //Id = 1234567890,
                Volunteer    = database.Volunteers.Single(b => b.StudentNum == v1.StudentNum),
                Adder        = database.Users.Single(b => b.StudentNum == adder.StudentNum),
                Status       = BlackListRecordStatus.Enabled,
                Organization = org,
                EndTime      = new DateTime(2090, 2, 11),
                AddTime      = System.DateTime.Now,
                Project      = database.Projects.Single(b => b.Name == pro.Name)
            };
            BlackListResult result = helper.AddBlackListRecord(testaddrecord1);

            if (!result.Succeeded)
            {
                Assert.Fail("返回错误结果!请检查后重试");
            }
            var actual = helper.FindBlackList(v1);

            if (actual == null)
            {
                Assert.Fail("记录添加失败!数据库无此记录!");
            }

            // 测试ExistingRecord
            BlackListRecord testaddrecord3 = new BlackListRecord
            {
                //Id = 0987654321
                Volunteer    = v1,
                Adder        = adder,
                Status       = BlackListRecordStatus.Enabled,
                Organization = org,
                EndTime      = new DateTime(2090, 2, 11),
                AddTime      = System.DateTime.Now,
                Project      = pro
            };
            BlackListResult existingrecordresult = helper.AddBlackListRecord(testaddrecord3);

            //Assert.AreEqual(existingrecordresult, BlackListResult.AddBlackListRecordErrorEnum.ExistingRecord, "检验existingrecord失败!");
            if (!BlackListResult.AreSame(BlackListResult.Error(BlackListResult.AddBlackListRecordErrorEnum.ExistingRecord), existingrecordresult))
            {
                Assert.Fail();
            }

            // 测试WrongTime
            BlackListRecord testaddrecord4 = new BlackListRecord
            {
                EndTime = new DateTime(2017, 2, 1),
                AddTime = System.DateTime.Now
            };
            var wrongtimeresult = helper.AddBlackListRecord(testaddrecord4);

            //Assert.AreEqual(wrongtimeresult, BlackListResult.AddBlackListRecordErrorEnum.WrongTime, "测试wrongtime失败!");
            if (!BlackListResult.AreSame(BlackListResult.Error(BlackListResult.AddBlackListRecordErrorEnum.WrongTime), wrongtimeresult))
            {
                Assert.Fail();
            }

            // 测试Nullrecord
            BlackListRecord testaddrecord5   = new BlackListRecord();
            var             nullrecordresult = helper.AddBlackListRecord(testaddrecord5);

            //Assert.AreEqual(nullrecordresult, BlackListResult.AddBlackListRecordErrorEnum.NullRecord, "测试nullrecord失败!");
            if (!BlackListResult.AreSame(BlackListResult.Error(BlackListResult.AddBlackListRecordErrorEnum.NullRecord), nullrecordresult))
            {
                Assert.Fail();
            }
            //清空数据库
            DeleteOrgnization(org); // 清空org 同时清空了blacklistrecord和org下的project,users
            volunteerhelper.DeleteVolunteer(v1.StudentNum);
        }
        public void FindSortedVolunteersByProjectTest()
        {
            // 创建org
            Organization org = identityhelper.CreateOrFindOrganization(Entity.OrganizationEnum.TestOnly);

            // 创建一个project
            Guid    uid  = Guid.NewGuid();
            string  name = "CreatVolunteerTest" + uid.ToString();
            Project pro  = new Project
            {
                Name         = name,
                Place        = "uibe",
                Maximum      = 20,
                Details      = "nothing",
                Time         = DateTime.Now,
                Condition    = Interface.ProjectCondition.Ongoing,
                Organization = org
            };

            projectmanagehelper.CreatNewProject(org, DateTime.Now, name, "uibe", "nothing", 20);
            pro = database.Projects.Single(p => p.Name == pro.Name);
            var addresult = database.Projects.Where(b => b.Name == name);

            if (addresult == null)
            {
                Assert.Fail("添加记录失败!");
            }

            // 向项目中添加志愿者
            // 创建两个志愿者
            Random    random1     = new Random();
            int       studentnum1 = random1.Next(000, 999);
            Volunteer v1          = new Volunteer
            {
                StudentNum = studentnum1,
                Name       = "FindSortedVolunteersByProject",
                Class      = "testclass",
                Room       = "testroom",
                Mobile     = "18888888888",
                Score      = 4
            };

            volunteerhelper.AddVolunteer(v1);
            if (database.Volunteers.Where(v => v.StudentNum == v1.StudentNum).Count() == 0)
            {
                Assert.Fail("插入对象失败!");
            }
            Random    random2     = new Random();
            int       studentnum2 = random2.Next(000, 999);
            Volunteer v2          = new Volunteer
            {
                StudentNum = studentnum2,
                Name       = "FindSortedVolunteersByProject",
                Class      = "testclass",
                Room       = "testroom",
                Mobile     = "18888888888",
                Score      = 2
            };

            volunteerhelper.AddVolunteer(v2);
            helper.SingleVolunteerInputById(v1.StudentNum, pro);
            helper.SingleVolunteerInputById(v2.StudentNum, pro);


            // 测试FindSortedVolunteersByProject
            var       volunteerlist = helper.FindSortedVolunteersByProject(pro);
            Volunteer testresult    = volunteerlist.First();

            if (testresult.StudentNum != studentnum1)
            {
                Assert.Fail("测试FindSortedVolunteersByProject失败!");
            }

            // 删除数据库的有关数据[org pro vol]
            volunteerhelper.DeleteVolunteer(v1.StudentNum);
            volunteerhelper.DeleteVolunteer(v2.StudentNum);
            DeleteOrgnization(org);
        }
        public void AddVolunteerTest()
        {
            #region 插入第一个volunteer对象
            int stunum = 888;
            if (database.Volunteers.Where(o => o.StudentNum == stunum).ToList().Count() > 0)
            {
                var existedvolunteer = FindVolunteerByStuNum(stunum);
                helper.DeleteVolunteer(existedvolunteer);
            }
            Volunteer v = new Volunteer
            {
                StudentNum = stunum,
                Mobile     = "13812345678",
                Name       = "AddTest",
                Email      = "*****@*****.**",
                Class      = "AddTestClass",
                Room       = "AddTestRoom"
            };
            var result = helper.AddVolunteer(v);
            var actual = FindVolunteerByStuNum(v.StudentNum);
            if (!Volunteer.AreSame(v, actual))
            {
                Assert.Fail("插入第一个volunteer对象失败");
            }
            //Assert.AreEqual(v, actual);
            if (!VolunteerResult.AreSame(result, VolunteerResult.Success()))
            {
                Assert.Fail("插入第一个volunteer对象失败");
            }
            #region 插入重复对象

            result = helper.AddVolunteer(v.StudentNum, "shadowman");
            if (!VolunteerResult.AreSame(VolunteerResult.Error(VolunteerResult.AddVolunteerErrorEnum.SameIdVolunteerExisted, v.StudentNum), result))
            {
                Assert.Fail("插入重复的对象未能正确处理.");
            }

            #endregion
            database.Volunteers.Remove(actual);//Remove
            #endregion

            #region 插入第二个volunteer对象
            int    tempnum  = 999;
            string tempname = "TestVolunteer2";
            result = helper.AddVolunteer(tempnum, tempname);
            if (VolunteerResult.AreSame(result, VolunteerResult.Error(VolunteerResult.AddVolunteerErrorEnum.SameIdVolunteerExisted, tempnum)))
            {
                var existedvolunteer = FindVolunteerByStuNum(tempnum);
                helper.DeleteVolunteer(existedvolunteer);
                result = helper.AddVolunteer(tempnum, tempname);
            }
            actual = FindVolunteerByStuNum(tempnum);
            if (!VolunteerResult.AreSame(result, VolunteerResult.Success()))
            {
                Assert.Fail("插入第二个volunteer对象失败.");
            }
            if (actual == null)
            {
                Assert.Fail();
            }
            database.Volunteers.Remove(actual);//Remove
            #endregion

            #region 插入null志愿者对象
            result = helper.AddVolunteer(null);
            if (!VolunteerResult.AreSame(result, VolunteerResult.Error(VolunteerResult.AddVolunteerErrorEnum.NullVolunteerObject)))
            {
                Assert.Fail("插入的null对象未能正确处理.");
            }
            #endregion

            #region 插入学号为0的志愿者对象
            result = helper.AddVolunteer(0);
            if (!VolunteerResult.AreSame(result, VolunteerResult.Error(VolunteerResult.AddVolunteerErrorEnum.EmptyId)))
            {
                Assert.Fail("插入的学号为0的对象未能正确处理.");
            }
            #endregion
        }
        private void Confirm_Click(object sender, RoutedEventArgs e)
        {
            //<Volunteer> finalList = csvGrid.SelectedItems as List<Volunteer>;
            List <string>           errors        = new List <string>();
            List <csvItemViewModel> succeededList = new List <csvItemViewModel>();

            foreach (csvItemViewModel v in csvList)
            {
                if (v.Selected)
                {
                    if (vhelper.FindVolunteer(v.StudentNum) == null)
                    {
                        var addResult = vhelper.AddVolunteer(v.Volunteer);
                        if (!addResult.Succeeded)
                        {
                            errors.Add(addResult.ErrorString);
                        }
                        else
                        {
                            var addToProjectResult = pphelper.SingleVolunteerInputById(v.StudentNum, project);
                            if (!addToProjectResult.Succeeded)
                            {
                                errors.Add(string.Join(",", addToProjectResult.Errors) + "没有成功添加入项目");
                            }
                            else
                            {
                                succeededList.Add(v);
                            }
                        }
                    }
                    else
                    {
                        var addToProjectResult = pphelper.SingleVolunteerInputById(v.StudentNum, project);
                        if (!addToProjectResult.Succeeded)
                        {
                            errors.Add(string.Join(",", addToProjectResult.Errors) + "没有成功添加入项目");
                        }
                        else
                        {
                            succeededList.Add(v);
                        }
                    }
                }
            }
            string errorstring = string.Join("\n", errors);

            if (errorstring != "")
            {
                MessageBox.Show(errorstring);
            }
            foreach (csvItemViewModel vm in succeededList)
            {
                csvList.Remove(vm);
            }
            if (csvList.Count != 0)
            {
                MessageBox.Show("最终,共往项目中添加:" + succeededList.Count + "位志愿者.\n现在显示的是没有选择的志愿者跟添加失败的志愿者.\n若不需要添加,请关闭该窗口.", "添加成功", MessageBoxButton.OK);
                ShowCddGrid();
            }
            else
            {
                MessageBox.Show("最终,共往项目中添加: " + succeededList.Count + "位志愿者.\n所有列表中的志愿者已经添加完毕.");
                fatherWindow.Close();
            }
        }