public void AllowSave() { using (var container = new RhetosTestContainer()) { var simple = container.Resolve <Common.DomRepository>().TestAllowSave.Simple; var s1 = new TestAllowSave.Simple { Code = 1, Name = "a", CodeAS = null, NameAS = null }; var s2 = new TestAllowSave.Simple { Code = 1, Name = "aaaaa", CodeAS = 2, NameAS = "b" }; simple.Insert(s1, s2); Assert.AreEqual("1a, 1aaaaa2b", TestUtility.DumpSorted(simple.Query(new[] { s1.ID, s2.ID }), s => s.Code + s.Name + s.CodeAS + s.NameAS)); Assert.AreEqual(0, simple.Validate(new[] { s1.ID, s2.ID }, onSave: true).Count(), "There should be no invalid items with errors that are checked on save."); // Errors that are NOT checked on save: var errors = simple.Validate(new[] { s1.ID, s2.ID }, onSave: false); Assert.AreEqual( TestUtility.DumpSorted(new[] { "The required property CodeAS is not set./CodeAS/" + s1.ID, "The required property NameAS is not set./NameAS/" + s1.ID, "[Test] Longer than 3.//" + s2.ID, "[Test] Longer than 4./Name/" + s2.ID }), TestUtility.DumpSorted(errors, error => string.Format(error.Message, error.MessageParameters) + "/" + error.Property + "/" + error.ID)); } }
public void InvalidString() { using (var container = new RhetosTestContainer()) { var simple = container.Resolve <Common.DomRepository>().TestAllowSave.Simple; var s1 = new TestAllowSave.Simple { Code = 1, Name = null, CodeAS = 2, NameAS = "b" }; TestUtility.ShouldFail <UserException>( () => simple.Insert(s1), "It is not allowed to enter TestAllowSave.Simple because the required property Name is not set.", "SystemMessage: DataStructure:TestAllowSave.Simple,ID:", ",Property:Name"); } using (var container = new RhetosTestContainer()) { var simple = container.Resolve <Common.DomRepository>().TestAllowSave.Simple; var s1 = new TestAllowSave.Simple { Code = 1, Name = "", CodeAS = 2, NameAS = "b" }; TestUtility.ShouldFail <UserException>( () => simple.Insert(s1), "It is not allowed to enter TestAllowSave.Simple because the required property Name is not set.", "SystemMessage: DataStructure:TestAllowSave.Simple,ID:", ",Property:Name"); } }
public void AllowSave() { foreach (bool useDatabaseNullSemantics in new[] { false, true }) { using (var scope = TestScope.Create(builder => builder.ConfigureUseDatabaseNullSemantics(useDatabaseNullSemantics))) { var simple = scope.Resolve <Common.DomRepository>().TestAllowSave.Simple; var s1 = new TestAllowSave.Simple { Code = 1, Name = "a", CodeAS = null, NameAS = null }; var s2 = new TestAllowSave.Simple { Code = 1, Name = "aaaaa", CodeAS = 2, NameAS = "b" }; simple.Insert(s1, s2); Assert.AreEqual("1a, 1aaaaa2b", TestUtility.DumpSorted(simple.Load(new[] { s1.ID, s2.ID }), s => s.Code + s.Name + s.CodeAS + s.NameAS)); Assert.AreEqual(0, simple.Validate(new[] { s1.ID, s2.ID }, onSave: true).Count(), "There should be no invalid items with errors that are checked on save."); // Errors that are NOT checked on save: var errors = simple.Validate(new[] { s1.ID, s2.ID }, onSave: false); Assert.AreEqual( TestUtility.DumpSorted(new[] { "The required property CodeAS is not set./CodeAS/" + s1.ID, "The required property NameAS is not set./NameAS/" + s1.ID, "[Test] Longer than 3.//" + s2.ID, "[Test] Longer than 4./Name/" + s2.ID }), TestUtility.DumpSorted(errors, error => string.Format(error.Message, error.MessageParameters) + "/" + error.Property + "/" + error.ID)); } } }
public void ValidData() { using (var container = new RhetosTestContainer()) { var simple = container.Resolve <Common.DomRepository>().TestAllowSave.Simple; var s1 = new TestAllowSave.Simple { Code = 1, Name = "a", CodeAS = 2, NameAS = "b" }; simple.Insert(s1); Assert.AreEqual("1a2b", simple.Query(new[] { s1.ID }).Select(s => s.Code + s.Name + s.CodeAS + s.NameAS).Single()); } }
public void InvalidInteger() { using (var scope = TestScope.Create()) { var simple = scope.Resolve <Common.DomRepository>().TestAllowSave.Simple; var s1 = new TestAllowSave.Simple { Code = null, Name = "a", CodeAS = 2, NameAS = "b" }; TestUtility.ShouldFail <UserException>( () => simple.Insert(s1), "It is not allowed to enter TestAllowSave.Simple because the required property Code is not set.", "SystemMessage: DataStructure:TestAllowSave.Simple,ID:", ",Property:Code"); } }
public void AllowSaveEmptyString() { using (var container = new RhetosTestContainer()) { var simple = container.Resolve <Common.DomRepository>().TestAllowSave.Simple; var s1 = new TestAllowSave.Simple { Code = 1, Name = "a", CodeAS = 2, NameAS = "" }; simple.Insert(s1); Assert.AreEqual("1a2", simple.Query(new[] { s1.ID }).Select(s => s.Code + s.Name + s.CodeAS + s.NameAS).Single()); Assert.AreEqual(0, simple.Validate(new[] { s1.ID }, onSave: true).Count(), "There should be no invalid items with errors that are checked on save."); // Errors that are NOT checked on save: var errors = simple.Validate(new[] { s1.ID }, onSave: false); Assert.AreEqual( "The required property NameAS is not set./NameAS", TestUtility.DumpSorted(errors, error => string.Format(error.Message, error.MessageParameters) + "/" + error.Property)); Assert.IsTrue(errors.All(e => e.ID == s1.ID)); } }