public void TestCreateUpdateTask()
        {
            TaskEntity entity = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Created,
                Created = DateTime.UtcNow,
                Name = "Name",
                Subject = "Subject"
            };

            Task task = new Task(entity)
                            {
                                LoggingService = new Mock<ILoggingService>().Object,
                                Priority = Priority.High

                            };

            TaskDao dao=new TaskDao(SessionFactory);
            task.Accept(dao);
            //update priority
            task.Priority = Priority.Medium;
            task.Name = "New Name";
            task.Subject = "New Subject";
            task.Accept(dao);
            task.AddComment("Bad comment");
            task.AddComment("Good comment");
            task.Accept(dao);
            TrickVisitor visitor=new TrickVisitor
                                     {
                                         OnEntityVisit = e=>e.Version=1
                                     };
            task.Accept(visitor);
            task.Name = "123";
            task.Accept(dao);
        }
        public void TestPersistRoleAssignment()
        {
            TaskEntity entity = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Created,
                Created = DateTime.UtcNow,
                Name = "Name",
                Subject = "Subject"
            };

            Task task = new Task(entity)
            {
                LoggingService = new Mock<ILoggingService>().Object,
                Priority = Priority.High

            };

            TaskDao dao = new TaskDao(SessionFactory);
            task.Accept(dao);
            task.PotentialOwners.Add(new IdentityId().GetIdentity());
            task.PotentialOwners.Add(new IdentityId().GetIdentity());
            task.Recepients.Add(new IdentityId().GetIdentity());
            task.Recepients.Add(new IdentityId().GetIdentity());
            task.Recepients.Add(new IdentityId().GetIdentity());
            task.Recepients.Add(new IdentityId().GetIdentity());
            task.BusinessAdministrators.Add(new IdentityId().GetIdentity());
            task.Accept(dao);

            using (ISession session = SessionFactory.OpenSession())
            {
                TaskEntity te = session.Query<TaskEntity>().Where(t => t.TaskId == entity.TaskId).FirstOrDefault();
            }
        }
        public void TestTaskReady()
        {
            TaskEntity entity = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Created,
                Created = DateTime.UtcNow,
                Name = "Name",
                Subject = "Subject"
            };

            Task task = new Task(entity)
            {
                LoggingService = new Mock<ILoggingService>().Object,
                Priority = Priority.High

            };

            TaskDao dao = new TaskDao(SessionFactory);
            task.Accept(dao);
            Task loaded;
            using (ISession session = SessionFactory.OpenSession())
            {
                TaskEntity te = session.Query<TaskEntity>().Where(t => t.TaskId == entity.TaskId).FirstOrDefault();
                loaded=new Task(te);
            }
            Thread.GetDomain().SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
            IPrincipal p = Thread.CurrentPrincipal;
            loaded.Start();
            task.Accept(dao);
            loaded.Claim();
            task.Accept(dao);
        }