예제 #1
0
        public void TestBlocksPropertySearch()
        {
            Mock<TaskExpressionTranslatorBase> mock = new Mock<TaskExpressionTranslatorBase>
            {
                CallBase = true
            };
            mock.Setup(m => m.Execute()).Returns(new List<Task>());

            Mock<TaskQueryContext> ctxMock = new Mock<TaskQueryContext> { CallBase = true };
            ctxMock.Protected().Setup<TaskExpressionTranslatorBase>("InstantiateTranslator").Returns(mock.Object);
            QuerableTaskService tasks = new QuerableTaskService(ctxMock.Object);

            var t = from task in tasks
                    where
                        (task.ActualOwner == new IdentityId().GetIdentity()||task.ActualOwner==new IdentityId().GetIdentity())
                        ||
                        (task.Subject!="Test" && task.Name=="TestName")
                        &&
                        (task.Priority==Priority.High||task.Priority==Priority.Normal||task.Name.StartsWith("A"))
                    select task;
            foreach (Task task in t)
            {
                //execute the query
            }
        }
        public void TestSearchByTaskName()
        {
            TaskEntity entity1 = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Created,
                Created = DateTime.UtcNow,
                Name = "Name-1",
                Subject = "Subject"
            };
            TaskEntity entity2 = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Created,
                Created = DateTime.UtcNow,
                Name = "Name-Two",
                Subject = "Subject"
            };
            TaskEntity entity3 = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Created,
                Created = DateTime.UtcNow,
                Name = "Name-Three-3",
                Subject = "Subject"
            };

            TaskDao dao = new TaskDao(SessionFactory);
            dao.Store(entity1);
            dao.Store(entity2);
            dao.Store(entity3);
            QuerableTaskService tasks = new QuerableTaskService(
                new HibernateTaskQueryContext(SessionFactory));

            var t = from task in tasks where task.Name == "Name-1" select task;
            foreach (Task task in t)
            {
                Assert.IsNotNull(task);
            }
            Assert.IsNotNull(t);
            Assert.AreEqual(1, t.Count());
            Task foundTask = t.ElementAt(0);
            Assert.AreEqual("Name-1", foundTask.Name);
            Assert.AreEqual(entity1.TaskId, foundTask.Id);
        }
예제 #3
0
        public void TestEnsureAssignmentsPropertySearch()
        {
            Mock<TaskExpressionTranslatorBase> mock = new Mock<TaskExpressionTranslatorBase>
            {
                CallBase = true
            };
            mock.Setup(m => m.Execute()).Returns(new List<Task>());
            mock.Protected().Setup("QueryPotentialOwners",
                    ItExpr.Is<Operation>(o => o == Operation.Contains),
                    ItExpr.IsAny<object>()).Verifiable();
            mock.Protected().Setup("QueryActualOwner",
                    ItExpr.Is<Operation>(o => o == Operation.Equals),
                    ItExpr.IsAny<object>()).Verifiable();
            mock.Protected().Setup("QueryBusinessAdministrators",
                    ItExpr.Is<Operation>(o => o == Operation.Contains),
                    ItExpr.IsAny<object>()).Verifiable();

            Mock<TaskQueryContext> ctxMock = new Mock<TaskQueryContext> { CallBase = true };
            ctxMock.Protected().Setup<TaskExpressionTranslatorBase>("InstantiateTranslator").Returns(mock.Object);
            QuerableTaskService tasks = new QuerableTaskService(ctxMock.Object);
            var t = from task in tasks
                    where
                        task.PotentialOwners.Contains(new IdentityId().GetIdentity())
                        &&
                        task.ActualOwner==new IdentityId().GetIdentity()
                        ||
                        task.BusinessAdministrators.Contains(new IdentityId().GetIdentity())
                    select task;
            foreach (Task task in t)
            {
                //execute the query
            }
            mock.Protected().Verify("QueryPotentialOwners", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.Contains),
                ItExpr.IsAny<object>());
            mock.Protected().Verify("QueryBusinessAdministrators", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.Contains),
                ItExpr.IsAny<object>());
            mock.Protected().Verify("QueryActualOwner", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.Equals),
                ItExpr.IsAny<object>());
        }
예제 #4
0
        public void TestEnsureSimpePropertySearch()
        {
            Mock<TaskExpressionTranslatorBase> mock = new Mock<TaskExpressionTranslatorBase>
                                                          {
                                                              CallBase = true
                                                          };
            IIdentity initiatorIdentity = new IdentityId(new Guid("56FDB6D4-D3AA-4C97-964A-6E8660A92FBC")).GetIdentity();
            DateTime now = DateTime.UtcNow;
            mock.Protected().Setup("QueryStatus",
                ItExpr.Is<Operation>(o=>o==Operation.Equals),
                ItExpr.Is<object>(v => (TaskStatus)v == TaskStatus.Ready)).Verifiable();
            mock.Protected().Setup("QueryPriority",
                ItExpr.Is<Operation>(o=>o==Operation.Equals),
                ItExpr.Is<object>(v => (Priority)v == Priority.Normal)).Verifiable();
            mock.Protected().Setup("QueryId",
                ItExpr.Is<Operation>(o=>o==Operation.Equals),
                ItExpr.Is<object>(v => (TaskId) v ==new TaskId(new Guid("56FDB6D4-D3AA-4C97-964A-6E8660A92FBC")))).Verifiable();
            mock.Protected().Setup("QueryCreated",
                ItExpr.Is<Operation>(o=>o==Operation.LessOrEquals),
                ItExpr.Is<object>(v => ((DateTime)v).Equals(now - new TimeSpan(20, 0, 0)))).Verifiable();
            mock.Protected().Setup("QueryStarted",
                ItExpr.Is<Operation>(o=>o==Operation.GreaterOrEquals),
                ItExpr.Is<object>(v => ((DateTime)v).Equals(now-new TimeSpan(10,0,0)))).Verifiable();
            mock.Protected().Setup("QueryCompleted",
                ItExpr.Is<Operation>(o=>o==Operation.Less),
                ItExpr.Is<object>(v =>((DateTime)v).Equals(now))).Verifiable();
            mock.Protected().Setup("QueryTaskOutcome",
                ItExpr.Is<Operation>(o=>o==Operation.Equals),
                ItExpr.Is<object>(v => (string)v == "success")).Verifiable();
            mock.Protected().Setup("QueryInitiator",
                ItExpr.Is<Operation>(o=>o==Operation.Equals),
                ItExpr.Is<object>(v => ((IIdentity)v).GetMappedId().Id == new Guid("56FDB6D4-D3AA-4C97-964A-6E8660A92FBC"))).Verifiable();
            mock.Protected().Setup("QueryActualOwner",
                ItExpr.Is<Operation>(o=>o==Operation.NotEqual),
                ItExpr.Is<object>(v => v == null)).Verifiable();
            mock.Setup(m => m.Execute()).Returns(new List<Task>());

            Mock<TaskQueryContext> ctxMock=new Mock<TaskQueryContext>{CallBase = true};
            ctxMock.Protected().Setup<TaskExpressionTranslatorBase>("InstantiateTranslator").Returns(mock.Object);

            QuerableTaskService tasks = new QuerableTaskService(ctxMock.Object);

            var t = from task in tasks
                    where
                        task.Priority == GetPriority()
                        &&
                        task.Status == TaskStatus.Ready
                        &&
                        task.Id == new TaskId(new Guid("56FDB6D4-D3AA-4C97-964A-6E8660A92FBC"))
                        &&
                        task.Created<=now-new TimeSpan(20,0,0)
                        &&
                        task.Started>=now-new TimeSpan(10,0,0)
                        &&
                        task.Completed<now
                        &&
                        task.TaskOutcome=="success"
                        &&
                        task.Initiator == initiatorIdentity
                        &&
                        task.ActualOwner!=null
                    select task;
            foreach (Task task in t)
            {
                //execute the query
            }
            // verify executions
            mock.Protected().Verify("QueryStatus", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.Equals),
                ItExpr.Is<object>(v => (TaskStatus)v == TaskStatus.Ready));
            mock.Protected().Verify("QueryPriority", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.Equals),
                ItExpr.Is<object>(v => (Priority)v == Priority.Normal));
            mock.Protected().Verify("QueryId", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.Equals),
                ItExpr.Is<object>(v => (TaskId)v == new TaskId(new Guid("56FDB6D4-D3AA-4C97-964A-6E8660A92FBC"))));
            mock.Protected().Verify("QueryCreated", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.LessOrEquals),
                ItExpr.Is<object>(v => ((DateTime)v).Equals(now - new TimeSpan(20, 0, 0))));
            mock.Protected().Verify("QueryStarted", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.GreaterOrEquals),
                ItExpr.Is<object>(v => ((DateTime)v).Equals(now - new TimeSpan(10, 0, 0))));
            mock.Protected().Verify("QueryCompleted", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.Less),
                ItExpr.Is<object>(v => ((DateTime)v).Equals(now)));
            mock.Protected().Verify("QueryTaskOutcome", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.Equals),
                ItExpr.Is<object>(v => (string)v == "success"));
            mock.Protected().Verify("QueryInitiator", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.Equals),
                ItExpr.Is<object>(v => ((IIdentity)v).GetMappedId().Id == new Guid("56FDB6D4-D3AA-4C97-964A-6E8660A92FBC")));
            mock.Protected().Verify("QueryActualOwner", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.NotEqual),
                ItExpr.Is<object>(v => v == null));
        }
예제 #5
0
        public void TestSubtasksSearch()
        {
            TaskId parentTaskId=new TaskId();
            Mock<TaskExpressionTranslatorBase> mock = new Mock<TaskExpressionTranslatorBase>
                                                          {
                                                              CallBase = true
                                                          };
            mock.Setup(m => m.Execute()).Returns(new List<Task>());
            mock.Protected().Setup("QueryParentId",
                                   ItExpr.Is<Operation>(o => o == Operation.Equals),
                                   ItExpr.Is<TaskId>(o=>o.Id==parentTaskId.Id)).Verifiable();

            Mock<TaskQueryContext> ctxMock = new Mock<TaskQueryContext> { CallBase = true };
            ctxMock.Protected().Setup<TaskExpressionTranslatorBase>("InstantiateTranslator").Returns(mock.Object);
            QuerableTaskService tasks = new QuerableTaskService(ctxMock.Object);

            var t = from task in tasks
                    where
                        task.Parent.Id == parentTaskId
                    select task;
            foreach (Task task in t)
            {
                //execute the query
            }
            mock.Protected().Verify("QueryParentId", Times.Once(),
                                    ItExpr.Is<Operation>(o => o == Operation.Equals),
                                    ItExpr.Is<TaskId>(o => o.Id == parentTaskId.Id));
        }
예제 #6
0
        public void TestEnsureSimpleStringPropertySearch()
        {
            Mock<TaskExpressionTranslatorBase> mock = new Mock<TaskExpressionTranslatorBase>
            {
                CallBase = true
            };
            mock.Setup(m => m.Execute()).Returns(new List<Task>());
            mock.Protected().Setup("QueryName",
                    ItExpr.Is<Operation>(o => o == Operation.Equals),
                    ItExpr.Is<object>(v =>(string)v == "Test")).Verifiable();
            mock.Protected().Setup("QuerySubject",
                    ItExpr.Is<Operation>(o => o == Operation.Equals),
                    ItExpr.Is<object>(v => (string)v == "Subject")).Verifiable();

            Mock<TaskQueryContext> ctxMock = new Mock<TaskQueryContext> { CallBase = true };
            ctxMock.Protected().Setup<TaskExpressionTranslatorBase>("InstantiateTranslator").Returns(mock.Object);
            QuerableTaskService tasks = new QuerableTaskService(ctxMock.Object);
            var t = from task in tasks
                    where
                        task.Name=="Test"
                        &&
                        task.Subject=="Subject"
                    select task;
            foreach (Task task in t)
            {
                //execute the query
            }
            mock.Protected().Verify("QueryName",Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.Equals),
                ItExpr.Is<object>(v => (string)v == "Test"));
            mock.Protected().Verify("QuerySubject", Times.Once(),
                ItExpr.Is<Operation>(o => o == Operation.Equals),
                ItExpr.Is<object>(v => (string)v == "Subject"));
        }
        public void TestSearchSimpleAndOr()
        {
            TaskEntity entity1 = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Failed,
                Created = DateTime.UtcNow,
                Name = "Name-1",
                Subject = "Subject"
            };
            TaskEntity entity2 = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.High,
                Status = TaskStatus.Ready,
                Created = DateTime.UtcNow,
                Name = "Name-Two",
                Subject = "Subject"
            };
            TaskEntity entity3 = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.InProgress,
                Created = DateTime.UtcNow,
                Name = "Name-Three-3",
                Subject = "Subject"
            };

            TaskDao dao = new TaskDao(SessionFactory);
            dao.Store(entity1);
            dao.Store(entity2);
            dao.Store(entity3);
            QuerableTaskService tasks = new QuerableTaskService(
                new HibernateTaskQueryContext(SessionFactory));

            var t = from task in tasks
                    where task.Name.StartsWith("Name")
                        && task.Priority > Priority.Normal
                        || task.Status==TaskStatus.InProgress
                    select task;

            Assert.IsNotNull(t);
            foreach (Task task in t)
            {
                Assert.IsNotNull(task);
            }
            Assert.AreEqual(2, t.Count());
            Task foundTask = t.ElementAt(0);
            Assert.AreEqual("Name-Two", foundTask.Name);
            Assert.AreEqual(entity2.TaskId, foundTask.Id);
            foundTask = t.ElementAt(1);
            Assert.AreEqual("Name-Three-3", foundTask.Name);
            Assert.AreEqual(entity3.TaskId, foundTask.Id);
        }
 public void TestSearchCollectionContains()
 {
     Guid userGuid1 = Guid.NewGuid();
     Guid userGuid2 = Guid.NewGuid();
     TaskEntity entity1 = new TaskEntity
     {
         TaskId = new TaskId(),
         Initiator = new IdentityId().GetIdentity(),
         Priority = Priority.Normal,
         Status = TaskStatus.Failed,
         Created = DateTime.UtcNow,
         Name = "Name-1",
         Subject = "Subject"
     };
     TaskEntity entity2 = new TaskEntity
     {
         TaskId = new TaskId(),
         Initiator = new IdentityId().GetIdentity(),
         Priority = Priority.High,
         Status = TaskStatus.Ready,
         Created = DateTime.UtcNow,
         Name = "Name-Two",
         Subject = "Subject"
     };
     TaskEntity entity3 = new TaskEntity
     {
         TaskId = new TaskId(),
         Initiator = new IdentityId().GetIdentity(),
         Priority = Priority.Normal,
         Status = TaskStatus.InProgress,
         Created = DateTime.UtcNow,
         Name = "Name-Three-3",
         Subject = "Subject"
     };
     entity2.PotentialOwners.Add(new IdentityId(userGuid1).GetIdentity());
     entity2.PotentialOwners.Add(new IdentityId(userGuid2).GetIdentity());
     entity1.BusinessAdministrators.Add(new IdentityId(userGuid1).GetIdentity());
     TaskDao dao = new TaskDao(SessionFactory);
     dao.Store(entity1);
     dao.Store(entity2);
     dao.Store(entity3);
     QuerableTaskService tasks = new QuerableTaskService(
         new HibernateTaskQueryContext(SessionFactory));
     var t = from task in tasks
             where task.PotentialOwners.Contains(new IdentityId(userGuid1).GetIdentity())
             select task;
     Assert.IsNotNull(t);
     foreach(var task in t)
     {
         Assert.IsNotNull(task);
     }
     Assert.AreEqual(1,t.Count());
     Task foundTask = t.ElementAt(0);
     Assert.IsNotNull(foundTask);
     Assert.AreEqual(entity2.TaskId,foundTask.Id);
 }