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)); } } }
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"); } }
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"); } }
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"); } }
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"); } }
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)); } } }
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"); } }
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"); } }