예제 #1
0
        public void LogObjectCreated()
        {
            Guid     memberId;
            DateTime checkpoint;

            checkpoint = GetCheckpoint();

            using (var db = new KcsarContext(this.databaseLocation))
            {
                Member m = new Member {
                    FirstName = "NewUser"
                };
                db.Members.Add(m);
                db.SaveChanges();
                memberId = m.Id;
            }

            using (var db = new KcsarContext(this.databaseLocation))
            {
                var member = db.Members.Single(f => f.Id == memberId);
                var logs   = db.GetLog(checkpoint);
                Assert.AreEqual(1, logs.Length, "log entries");
                Assert.AreEqual(member.GetReportHtml(), logs[0].Comment, "log msg: " + logs[0].Comment);
                Assert.AreEqual("Added", logs[0].Action, "action: " + logs[0].Action);
            }
        }
예제 #2
0
        public void LogPropertyChanged()
        {
            Guid memberId;

            using (var db = new KcsarContext(this.databaseLocation))
            {
                Member m = new Member {
                    FirstName = "Log property",
                    Gender    = Gender.Female,
                    BirthDate = new DateTime(2000, 12, 19)
                };
                db.Members.Add(m);
                db.SaveChanges();
                memberId = m.Id;
            }

            DateTime checkpoint = GetCheckpoint();

            using (var db = new KcsarContext(this.databaseLocation))
            {
                Member m = db.Members.Single(f => f.Id == memberId);
                m.FirstName = "Fixed";
                m.BirthDate = new DateTime(1990, 3, 5);
                m.Gender    = Gender.Male;
                db.SaveChanges();
                var log = db.GetLog(checkpoint);

                Assert.AreEqual(1, log.Length, "log entries");
                Console.WriteLine(log[0].Comment);
                Assert.IsTrue(log[0].Comment.Contains("FirstName: Log property => Fixed"), "log msg: " + log[0].Comment);
                Assert.IsTrue(log[0].Comment.Contains("Gender: Female => Male"), "log msg gender: " + log[0].Comment);
                Assert.IsTrue(log[0].Comment.Contains("BirthDate: 12/19/2000 => 3/5/1990"), "log msg date: " + log[0].Comment);
                Assert.AreEqual("Modified", log[0].Action, "action: " + log[0].Action);
            }
        }
예제 #3
0
        public void LogObjectDeleted()
        {
            Guid   memberId;
            string reportHtml;

            using (var db = new KcsarContext(this.databaseLocation))
            {
                Member m = new Member {
                    FirstName = "RemoveMe"
                };
                db.Members.Add(m);
                db.SaveChanges();
                memberId   = m.Id;
                reportHtml = m.GetReportHtml();
            }

            DateTime checkpoint = GetCheckpoint();

            using (var db = new KcsarContext(this.databaseLocation))
            {
                Member m = db.Members.Single(f => f.Id == memberId);
                db.Members.Remove(m);
                db.SaveChanges();
                var log = db.GetLog(checkpoint);

                Assert.AreEqual(1, log.Length, "log entries");
                Assert.AreEqual("Deleted", log[0].Action, "action: " + log[0].Action);
                Assert.AreEqual(reportHtml, log[0].Comment, "log msg: " + log[0].Comment);
            }
        }
예제 #4
0
        public void LogPrincipalChanged()
        {
            Member        first;
            Member        second;
            PersonAddress address;

            using (var db = new KcsarContext(this.databaseLocation))
            {
                first = new Member {
                    FirstName = "First"
                };
                db.Members.Add(first);
                second = new Member {
                    FirstName = "Second"
                };
                db.Members.Add(second);
                address = new PersonAddress {
                    Person = first, Street = "123", City = "Any", State = "WA", Zip = "98765"
                };
                first.Addresses.Add(address);

                db.SaveChanges();
            }

            var checkpoint = GetCheckpoint();

            using (var db = new KcsarContext(this.databaseLocation))
            {
                address        = db.Members.Where(f => f.Id == first.Id).SelectMany(f => f.Addresses).Single();
                address.Person = db.Members.Single(f => f.Id == second.Id);
                db.SaveChanges();
            }

            using (var db = new KcsarContext(this.databaseLocation))
            {
                var logs = db.GetLog(checkpoint);
                Assert.AreEqual(1, logs.Length, "log count");
                Assert.AreEqual(string.Format("{0}<br/>{1} => {2}",
                                              address, first, second), logs[0].Comment);
                Assert.AreEqual("Modified", logs[0].Action);
            }
        }