Exemple #1
0
        /// <summary>
        /// 保存Medium对象
        /// </summary>
        void IMediumMgr.Save(Medium medium)
        {
            List <ValidationResult> results = new List <ValidationResult>();
            bool isValid = Validator.TryValidateObject(medium,
                                                       new ValidationContext(medium),
                                                       results);

            if (!isValid)
            {
                throw new ArgumentException("介质数据不合法!");
            }

            if (medium.IsTransient())
            {
                medium.GenerateNewIdentity();
                _mediumRepository.Add(medium);
            }
            else
            {
                _mediumRepository.Modify(medium);
            }

            _mediumRepository.UnitOfWork.Commit();
        }
        public void OverAllAdminFuntionTest()
        {
            //Add OneTimeExperience : Product
            var ote = new OneTimeExperience()
            {
                Name  = "testOTE",
                Price = 10.3M
            };

            ote.GenerateNewIdentity();
            _admin.AddProduct(ote);
            Assert.AreEqual(context.Products.Count(), 1);
            var result = context.Products.FirstOrDefault(x => x.Id == ote.Id);

            Assert.AreEqual(context.Products.FirstOrDefault(x => x.Id == ote.Id), ote);

            //Add Lecture : MemberProduct : Product
            var lecture = new Lecture()
            {
                Count       = 10,
                Description = "test description",
                Name        = "testLecture",
                Price       = 10.4M
            };

            lecture.GenerateNewIdentity();
            _admin.AddProduct(lecture);
            Assert.AreEqual(context.Products.Count(), 2);
            Assert.AreEqual(context.Products.FirstOrDefault(x => x.Id == lecture.Id), lecture);

            //Add Medium
            var medium = new Medium()
            {
                Name = "testMedium"
            };

            medium.GenerateNewIdentity();
            _admin.AddMedium(medium);
            Assert.AreEqual(context.Mediums.Count(), 1);
            Assert.AreEqual(context.Mediums.FirstOrDefault(x => x.Name == medium.Name).Id, medium.Id);

            //Add TimesCard : MemberProduct : Product
            var timesCard = new TimesCard()
            {
                Count  = 10,
                Medium = medium,
                Name   = "testTimesCard",
                Price  = 9.9M
            };

            timesCard.GenerateNewIdentity();
            _admin.AddProduct(timesCard);
            Assert.AreEqual(context.Products.Count(), 3);
            Assert.AreEqual(context.Products.FirstOrDefault(x => x.Id == timesCard.Id), timesCard);

            var tutor = new Tutor()
            {
                Address     = "testAddress",
                Gender      = Model.Enums.Gender.Female,
                IsManager   = true,
                Name        = "testName",
                PhoneNumber = "12345678"
            };

            _admin.AddTutor(tutor);
            Assert.AreEqual(context.Tutors.Count(), 1);
            Assert.AreEqual(context.Tutors.FirstOrDefault(x => x.Name == tutor.Name).Id, tutor.Id);

            //_admin.Sell(tutor.Id, timesCard.Id, "testMember", "testPhoneNumber");
            Assert.AreEqual(context.Purchases.Count(), 1);
            var testSell = context.Purchases.FirstOrDefault(x => x.ProductId == timesCard.Id);

            Assert.AreEqual(testSell.Product, timesCard);
            Assert.AreNotEqual(testSell.PurchaseDate, null);
            Assert.AreEqual(testSell.Tutor, tutor);
            Assert.AreEqual(context.Members.Count(), 1);
            var testMember = context.Members.FirstOrDefault();

            Assert.AreEqual(testMember.Name, "testMember");
            Assert.AreEqual(testMember.PhoneNumber, "testPhoneNumber");
            Assert.AreEqual(testMember.Address, null);
            Assert.AreEqual(testMember.Balances.Count, 1);
            Assert.AreEqual(testMember.Balances.FirstOrDefault().Product, timesCard);
            Assert.AreEqual(testMember.Gender, Model.Enums.Gender.Male);

            //var newMember = new Member()
            //{
            //    Address = "testAddress",
            //    PhoneNumber = "testPhoneNunber",
            //    Name ="testMember"
            //};
            //_admin.ModifyMember(newMember);
            //Assert.AreEqual(_context.Members.Count(), 1);
            //Assert.AreEqual(_context.Members.FirstOrDefault().Id, testMember.Id);
            //Assert.AreEqual(_context.Members.FirstOrDefault().Address, "testAddress");
        }