예제 #1
0
        public void HierarchyAncestorsDescendants()
        {
            using (var container = new RhetosTestContainer())
            {
                container.Resolve <ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestHierarchy.Simple" });
                var repository = container.Resolve <Common.DomRepository>();

                var h = new TestHierarchy.Simple2 {
                    ID = Guid.NewGuid(), Name2 = "h", Parent2ID = null
                };
                var h1 = new TestHierarchy.Simple2 {
                    ID = Guid.NewGuid(), Name2 = "h1", Parent2ID = h.ID
                };
                var h2 = new TestHierarchy.Simple2 {
                    ID = Guid.NewGuid(), Name2 = "h2", Parent2ID = h.ID
                };
                var h21 = new TestHierarchy.Simple2 {
                    ID = Guid.NewGuid(), Name2 = "h21", Parent2ID = h2.ID
                };

                repository.TestHierarchy.Simple2.Insert(new[] { h, h1, h2, h21 });

                var testAncestors = new Dictionary <TestHierarchy.Simple2, string>
                {
                    { h, "" },
                    { h1, "h" },
                    { h2, "h" },
                    { h21, "h, h2" }
                };

                foreach (var test in testAncestors)
                {
                    Console.WriteLine("Testing Ancestors " + test.Key.Name2 + " => " + test.Value);
                    var filtered = repository.TestHierarchy.Simple2.Filter(new TestHierarchy.Parent2HierarchyAncestors {
                        ID = test.Key.ID
                    });
                    Assert.AreEqual(test.Value, TestUtility.DumpSorted(filtered, item => item.Name2));
                }

                var testDescendants = new Dictionary <TestHierarchy.Simple2, string>
                {
                    { h, "h1, h2, h21" },
                    { h1, "" },
                    { h2, "h21" },
                    { h21, "" }
                };

                foreach (var test in testDescendants)
                {
                    Console.WriteLine("Testing Descendants " + test.Key.Name2 + " => " + test.Value);
                    var filtered = repository.TestHierarchy.Simple2.Filter(new TestHierarchy.Parent2HierarchyDescendants {
                        ID = test.Key.ID
                    });
                    Assert.AreEqual(test.Value, TestUtility.DumpSorted(filtered, item => item.Name2));
                }
            }
        }
예제 #2
0
        public void ErrorCircularReference1InsertSingleRoot()
        {
            using (var container = new RhetosTestContainer())
            {
                container.Resolve<ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestHierarchy.Simple2" });
                var repository = container.Resolve<Common.DomRepository>();

                var single = new TestHierarchy.Simple2 { ID = Guid.NewGuid(), Name2 = "a" };
                single.Parent2ID = single.ID;

                TestUtility.ShouldFail(() => repository.TestHierarchy.Simple2.Insert(new[] { single }), "not allowed", "circular dependency");
            }
        }
예제 #3
0
        public void ErrorCircularReference1InsertSingleRoot()
        {
            using (var container = new RhetosTestContainer())
            {
                container.Resolve <ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestHierarchy.Simple2" });
                var repository = container.Resolve <Common.DomRepository>();

                var single = new TestHierarchy.Simple2 {
                    ID = Guid.NewGuid(), Name2 = "a"
                };
                single.Parent2ID = single.ID;

                TestUtility.ShouldFail(() => repository.TestHierarchy.Simple2.Insert(new[] { single }), "not allowed", "circular dependency");
            }
        }
예제 #4
0
        public void ErrorCircularReference1UpdateSingleRoot()
        {
            using (var scope = TestScope.Create())
            {
                scope.Resolve <ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestHierarchy.Simple2" });
                var repository = scope.Resolve <Common.DomRepository>();

                var single = new TestHierarchy.Simple2 {
                    ID = Guid.NewGuid(), Name2 = "a"
                };
                repository.TestHierarchy.Simple2.Insert(new[] { single });

                single.Parent2ID = single.ID;
                TestUtility.ShouldFail(() => repository.TestHierarchy.Simple2.Update(new[] { single }), "not allowed", "circular dependency");
            }
        }
예제 #5
0
        public void SingleRootConstraint()
        {
            using (var container = new RhetosTestContainer())
            {
                container.Resolve <ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestHierarchy.Simple2" });
                var repository = container.Resolve <Common.DomRepository>();

                var h1 = new TestHierarchy.Simple2 {
                    ID = Guid.NewGuid(), Name2 = "h1", Parent2ID = null
                };
                var h2 = new TestHierarchy.Simple2 {
                    ID = Guid.NewGuid(), Name2 = "h2", Parent2ID = null
                };

                TestUtility.ShouldFail(() => repository.TestHierarchy.Simple2.Insert(new[] { h1, h2 }),
                                       "root record", "TestHierarchy.Simple2", "Parent2");
            }
        }
예제 #6
0
        public void HierarchyAncestorsDescendants()
        {
            using (var executionContext = new CommonTestExecutionContext())
            {
                executionContext.SqlExecuter.ExecuteSql(new[] { "DELETE FROM TestHierarchy.Simple" });
                var repository = new Common.DomRepository(executionContext);

                var h = new TestHierarchy.Simple2 { ID = Guid.NewGuid(), Name2 = "h", Parent2 = null };
                var h1 = new TestHierarchy.Simple2 { ID = Guid.NewGuid(), Name2 = "h1", Parent2 = h };
                var h2 = new TestHierarchy.Simple2 { ID = Guid.NewGuid(), Name2 = "h2", Parent2 = h };
                var h21 = new TestHierarchy.Simple2 { ID = Guid.NewGuid(), Name2 = "h21", Parent2 = h2 };

                repository.TestHierarchy.Simple2.Insert(new[] { h, h1, h2, h21 });

                var testAncestors = new Dictionary<TestHierarchy.Simple2, string>
                {
                    { h, "" },
                    { h1, "h" },
                    { h2, "h" },
                    { h21, "h, h2" }
                };

                foreach (var test in testAncestors)
                {
                    Console.WriteLine("Testing Ancestors " + test.Key.Name2 + " => " + test.Value);
                    var filtered = repository.TestHierarchy.Simple2.Filter(new TestHierarchy.Parent2HierarchyAncestors { ID = test.Key.ID });
                    Assert.AreEqual(test.Value, TestUtility.DumpSorted(filtered, item => item.Name2));
                }

                var testDescentantds = new Dictionary<TestHierarchy.Simple2, string>
                {
                    { h, "h1, h2, h21" },
                    { h1, "" },
                    { h2, "h21" },
                    { h21, "" }
                };

                foreach (var test in testDescentantds)
                {
                    Console.WriteLine("Testing Descentantds " + test.Key.Name2 + " => " + test.Value);
                    var filtered = repository.TestHierarchy.Simple2.Filter(new TestHierarchy.Parent2HierarchyDescendants { ID = test.Key.ID });
                    Assert.AreEqual(test.Value, TestUtility.DumpSorted(filtered, item => item.Name2));
                }
            }
        }
예제 #7
0
        public void SingleRootConstraint()
        {
            using (var executionContext = new CommonTestExecutionContext())
            {
                executionContext.SqlExecuter.ExecuteSql(new[] { "DELETE FROM TestHierarchy.Simple2" });
                var repository = new Common.DomRepository(executionContext);

                var h1 = new TestHierarchy.Simple2 { ID = Guid.NewGuid(), Name2 = "h1", Parent2 = null };
                var h2 = new TestHierarchy.Simple2 { ID = Guid.NewGuid(), Name2 = "h2", Parent2 = null };

                TestUtility.ShouldFail(() => repository.TestHierarchy.Simple2.Insert(new[] { h1, h2 }),
                    "root record", "TestHierarchy.Simple2", "Parent2");
            }
        }
예제 #8
0
        public void SingleRootConstraint()
        {
            using (var container = new RhetosTestContainer())
            {
                container.Resolve<ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestHierarchy.Simple2" });
                var repository = container.Resolve<Common.DomRepository>();

                var h1 = new TestHierarchy.Simple2 { ID = Guid.NewGuid(), Name2 = "h1", Parent2 = null };
                var h2 = new TestHierarchy.Simple2 { ID = Guid.NewGuid(), Name2 = "h2", Parent2 = null };

                TestUtility.ShouldFail(() => repository.TestHierarchy.Simple2.Insert(new[] { h1, h2 }),
                    "root record", "TestHierarchy.Simple2", "Parent2");
            }
        }