public void TestObjectAsTemplate() { InitTestObjects(); var before = GetCountOfTestObjects(); Assert.AreNotEqual(0, before); var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "ListSamples"; dwt.CommandType = CommandType.StoredProcedure; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.AllProperties; var result = dw.DoWorkDirect <object>(dwt); Assert.AreNotEqual(0, result.Count); foreach (var item in result) { Assert.IsNotNull(item); } var after = GetCountOfTestObjects(); Assert.AreNotEqual(0, after); Assert.AreEqual(before, after); }
public void TestTransactionRollback() { InitTestObjects(); var before = GetCountOfTestObjects(); Assert.AreNotEqual(0, before); var dw = GetDataWorker(); var tran = dw.BeginTransaction(); var dwt = new DataWorkerTask(); dwt.CommandText = "delete from TestObjects"; dwt.CommandType = CommandType.Text; dwt.Transaction = tran; dwt.ReadResults = false; var result = dw.DoWorkDirect <SampleClass>(dwt); var during = GetCountOfTestObjects(); tran.Rollback(); Assert.AreNotEqual(0, dwt.RowsAffected); var after = GetCountOfTestObjects(); Assert.AreNotEqual(0, after); Assert.AreNotEqual(before, during); Assert.AreNotEqual(after, during); Assert.AreEqual(0, during); Assert.AreEqual(before, after); }
public void TestInputFromWriteOnlyProperty() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "WriteOnlyInputTest"; dwt.CommandType = CommandType.StoredProcedure; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.DataFields; var msg = "Read This"; var dataObject = new SampleClass { WriteOnlyProperty = msg }; var result = dw.DoWorkDirect <SampleClass>(dwt, dataObject); Assert.AreNotEqual(0, result.Count); foreach (var item in result) { Assert.IsTrue(item.ID != 0); Assert.IsNotNullOrEmpty(item.Name); Assert.AreNotEqual(msg, item.WriteOnlyPropertyOutput); Assert.IsNotNull(item.WriteOnlyPropertyOutput); Assert.AreEqual("Default Value Set In Stored Proc", item.WriteOnlyPropertyOutput); } }
public void TestOutputParameterDataDictionary() { InitTestObjects(); var before = GetCountOfTestObjects(); Assert.AreNotEqual(0, before); var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "InsertTestObject"; dwt.CommandType = CommandType.StoredProcedure; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.Dictionary; var testDict = new DataDictionary(); testDict["ID"] = 0; var result = dw.DoWorkDirect <SampleClass>(dwt, testDict); Assert.AreEqual(0, result.Count); Assert.AreEqual(1, dwt.RowsAffected); Assert.AreNotEqual(0, testDict["ID"]); var after = GetCountOfTestObjects(); Assert.AreNotEqual(0, after); Assert.AreEqual(before + 1, after); }
public void TestOutputParameterToResultsOn() { InitTestObjects(); var before = GetCountOfTestObjects(); Assert.AreNotEqual(0, before); var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "ListSamples"; dwt.CommandType = CommandType.StoredProcedure; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.Dictionary; dwt.ApplyOutputParametersToResults = true; // <== Explicit inversion of default to differentiate with TestOutputParameterToResultsOff() var testDict = new DataDictionary(); testDict["Feedout"] = "moo"; var result = dw.DoWorkDirect <SampleClass>(dwt, testDict); Assert.AreNotEqual(0, result.Count); Assert.IsTrue(testDict.ContainsKey("FEEDOUT")); // === Expect Change in Input dictionary, AND in results Assert.AreEqual("moo_ex", testDict["FEEDOUT"]); foreach (var item in result) { Assert.AreEqual("moo_ex", item.Feedout); } Assert.AreEqual(-1, dwt.RowsAffected); var after = GetCountOfTestObjects(); Assert.AreNotEqual(0, after); Assert.AreEqual(before, after); }
public void TestDataDictionaryInput() { InitTestObjects(); var before = GetCountOfTestObjects(); Assert.AreNotEqual(0, before); var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "ListSamples"; dwt.CommandType = CommandType.StoredProcedure; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.Dictionary; var testDict = new DataDictionary(); testDict["FeedToTestColumn"] = "ping"; var result = dw.DoWorkDirect <SampleClass>(dwt, testDict); Assert.AreNotEqual(0, result.Count); foreach (var item in result) { Assert.AreEqual("ping", item.TestColumn); } var after = GetCountOfTestObjects(); Assert.AreNotEqual(0, after); Assert.AreEqual(before, after); }
public void TestInt64PrimaryKey() { InitTestObjects(); var before = GetCountOfTestObjects(); Assert.AreNotEqual(0, before); var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "InsertTestObjectWithReallyBigID"; dwt.CommandType = CommandType.StoredProcedure; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.AllProperties; var testObject = new SampleClassPoco { ID = 0 }; var result = dw.DoWorkDirect <SampleClass>(dwt, testObject); Assert.AreEqual(0, result.Count); Assert.AreEqual(1, dwt.RowsAffected); Assert.AreNotEqual(0, testObject.ID); Assert.AreEqual(long.MaxValue, testObject.ID); var after = GetCountOfTestObjects(); Assert.AreNotEqual(0, after); Assert.AreEqual(before + 1, after); }
public void Test_InvalidMode() { var dw = GetDataWorker(); var dwt = new DataWorkerTask { Mode = DataWorkerMode.Invalid, CommandText = "select null", CommandType = CommandType.Text, }; dw.DoWorkDirect <object>(dwt); }
public void TestListCount() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "listsamples"; dwt.ReadResults = true; var result = dw.DoWorkDirect <SampleClass>(dwt); Assert.IsNotNull(result); Assert.AreNotEqual(0, result.Count); }
public void TestAffectedNoRead() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "testaffected"; dwt.ReadResults = false; var result = dw.DoWorkDirect <SampleClass>(dwt); Assert.AreEqual(1, dwt.RowsAffected, "Expected to affect 1 row"); Assert.IsNotNull(result); Assert.AreEqual(0, result.Count); }
public void TestAffectedReadAllProps() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "testaffected"; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.AllProperties; var obj = new { howmany = 2 }; var result = dw.DoWorkDirect <SampleClass>(dwt, obj); Assert.AreEqual(2, dwt.RowsAffected, "Expected to affect 2 rows"); Assert.IsNotNull(result); Assert.AreEqual(0, result.Count); // nothing returned by procedure, even though we tried to read }
public void TestOutputToReadOnlyProperty() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "select *,'bla' as ReadOnlyProperty from samples"; dwt.CommandType = CommandType.Text; dwt.ReadResults = true; var result = dw.DoWorkDirect <SampleClass>(dwt); Assert.AreNotEqual(0, result.Count); foreach (var item in result) { Assert.IsTrue(item.ID != 0); Assert.IsNotNullOrEmpty(item.Name); } }
public void TestAffectedReadDict() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "testaffected"; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.Dictionary; var dd = new DataDictionary(); dd["howmany"] = 2; var result = dw.DoWorkDirect <SampleClass>(dwt, dd); Assert.AreEqual(2, dwt.RowsAffected, "Expected to affect 2 rows"); Assert.IsNotNull(result); Assert.AreEqual(0, result.Count); // nothing returned by procedure, even though we tried to read }
public void TestSelectFilteredFromNormalObject() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "select * from samples where id <= @ID"; dwt.CommandType = CommandType.Text; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.AllProperties; var normalObject = new SampleClassPoco { ID = 2 }; var result = dw.DoWorkDirect <SampleClass>(dwt, normalObject); Assert.AreNotEqual(0, result.Count); foreach (var item in result) { Assert.IsTrue(item.ID <= 2); } }
public void TestInputFromNull() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "ListGarbage"; dwt.CommandType = CommandType.StoredProcedure; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.DataFields; var result = dw.DoWorkDirect <SampleClass>(dwt, null); Assert.AreNotEqual(0, result.Count); foreach (var item in result) { Assert.IsTrue(item.ID != 0); Assert.IsNotNullOrEmpty(item.Name); Assert.IsNotNull(item.Feedout); Assert.AreEqual("Default Value Set In Stored Proc", item.Feedout); } }
public void TestSelectFilteredConfirm() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "select * from samples where id > @x"; dwt.CommandType = CommandType.Text; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.Dictionary; var dd = new DataDictionary(); dd["x"] = 2; var result = dw.DoWorkDirect <SampleClass>(dwt, dd); Assert.AreNotEqual(0, result.Count); foreach (var item in result) { Assert.IsTrue(item.ID > 2); } }
public void TestOptionalParamsPopulated() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "TestMissingAndNullInput"; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.AllProperties; var obj = new SampleClass { RequiredParam = 42, // required OptionalParam1 = 43, OptionalParam2 = null, }; var result = dw.DoWorkDirect <SampleClass>(dwt, obj); Assert.IsNotNull(result); Assert.AreEqual(1, result.Count); Assert.AreEqual(obj.RequiredParam, result[0].RequiredParamOut); Assert.AreEqual(obj.OptionalParam1, result[0].OptionalParam1Out); Assert.AreEqual(obj.OptionalParam2, result[0].OptionalParam2Out); }
public void TestOptionalParamsUnpopulated() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "TestMissingAndNullInput"; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.AllProperties; var obj = new { // using anon to force non-existance of optional params RequiredParam = 42, // required //OptionalParam1 = , // defaults to null in db //OptionalParam2 = , // defaults to 41 in db }; var result = dw.DoWorkDirect <SampleClass>(dwt, obj); Assert.IsNotNull(result); Assert.AreEqual(1, result.Count); Assert.AreEqual(obj.RequiredParam, result[0].RequiredParamOut); Assert.AreEqual(null, result[0].OptionalParam1Out); Assert.AreEqual(41, result[0].OptionalParam2Out); }
public void TestSelectColumnNameRemapping() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "ListNotSimple"; dwt.CommandType = CommandType.StoredProcedure; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.DataFields; var msg = "any message"; var dataobject = new SampleClass { SimpleColumnIn = msg }; var result = dw.DoWorkDirect <SampleClass>(dwt, dataobject); Assert.AreNotEqual(0, result.Count); foreach (var item in result) { Assert.IsTrue(item.ID != 0); Assert.IsNotNullOrEmpty(item.Name); Assert.AreEqual(msg, item.SimpleColumnOut); } }
public void TestOutputParameterAnonymousObject() { InitTestObjects(); var before = GetCountOfTestObjects(); Assert.AreNotEqual(0, before); var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "InsertTestObject"; dwt.CommandType = CommandType.StoredProcedure; dwt.ReadResults = true; dwt.Mode = DataWorkerMode.AllProperties; var testObject = new { ID = 0 }; var result = dw.DoWorkDirect <SampleClass>(dwt, testObject); Assert.AreEqual(0, result.Count); Assert.AreEqual(1, dwt.RowsAffected); Assert.AreEqual(0, testObject.ID); // -- Anonymous Objects are immutable var after = GetCountOfTestObjects(); Assert.AreNotEqual(0, after); Assert.AreEqual(before + 1, after); }
//[Test] // SLOW TEST public void Test_DW_List_Lots_StoredProc() { var dw = GetDataWorker(); var dwt = new DataWorkerTask(); dwt.CommandText = "ListLotsOfRows"; dwt.CommandType = CommandType.StoredProcedure; dwt.ReadResults = true; var startT = Environment.TickCount; var result = dw.DoWorkDirect <LotsClass>(dwt); var endT = Environment.TickCount; Console.WriteLine("Query Time: {0:N} ms", endT - startT); Assert.IsNotNull(result); foreach (var element in result) { Assert.AreNotEqual(0, element.ID); Assert.AreNotEqual(0, element.Number); Assert.IsNotNullOrEmpty(element.Name); } Console.WriteLine("Total Rows: {0}", result.Count); }
public static void Main(string[] args) { try { var dwt = new DataWorkerTask(); dwt.CommandText = "ListLotsOfRows"; dwt.CommandType = CommandType.StoredProcedure; dwt.ReadResults = true; var startT = Environment.TickCount; var result = dw.DoWorkDirect <LotsClass>(dwt); var endT = Environment.TickCount; Console.WriteLine("Query Time: {0:N} ms", endT - startT); Console.WriteLine("Total Rows: {0}", result.Count); return; Console.WriteLine("Lets test with some demos..."); var baseDemo = new Demo { Name = string.Format("Demo to be nuked from {0:yyyy/MMM/dd HH:mm:ss}", DateTime.Now), Group = "[Nuke Group]", Description = "Test Demo" }; // Insert Say(NOTE, "Testing Insert"); var newDemo = new Demo { Name = baseDemo.Name, Group = baseDemo.Group, Description = baseDemo.Description, }; dw.Insert(newDemo); Console.WriteLine("New Demo ID: {0}", newDemo.ID); // List Say(NOTE, "Testing List"); ListDemosToScreen(); // Fetch Say(NOTE, "Testing Fetches"); Demo fetchedDemo; fetchedDemo = dw.Fetch(new Demo { ID = 1 }); // Invokes <T>(T) with T = Demo (inferred) if (fetchedDemo == null) { Say(BAD, "Fetched Demo is Null! (Expected Data to be there)"); } else { Console.WriteLine("Fetched Demo Name: {0}", fetchedDemo.Name); } fetchedDemo = dw.Fetch <Demo>(new Demo { ID = 2 }); // Invokes <T>(T) with T = Demo (explicit) if (fetchedDemo == null) { Say(BAD, "Fetched Demo is Null! (Expected Data to be there)"); } else { Console.WriteLine("Fetched Demo Name: {0}", fetchedDemo.Name); } fetchedDemo = dw.Fetch <Demo>(new IDObj { ID = 3 }); // Invokes <T>(object) with T = Demo if (fetchedDemo == null) { Say(BAD, "Fetched Demo is Null! (Expected Data to be there)"); } else { Console.WriteLine("Fetched Demo Name: {0}", fetchedDemo.Name); } fetchedDemo = dw.FetchByAllProps <Demo>(new { ID = 4 }); // as Object if (fetchedDemo == null) { Say(BAD, "Fetched Demo is Null! (Expected Data to be there)"); } else { Console.WriteLine("Fetched Demo Name: {0}", fetchedDemo.Name); } // Update Say(NOTE, "Testing Update"); newDemo.Description += "!"; dw.Update(newDemo); fetchedDemo = dw.Fetch(newDemo); if (fetchedDemo == null) { Say(BAD, "Fetched Demo is Null! (Expected Data to be there)"); } else { Console.WriteLine("Fetched Demo Description: {0}", fetchedDemo.Description); } // Delete Say(NOTE, "Testing Delete"); dw.Delete(newDemo); fetchedDemo = dw.Fetch(newDemo); if (fetchedDemo == null) { Say(GOOD, "Fetched Demo is Null. (This is good as it was meant to be deleted)"); } else { Say(BAD, "Fetched Demo is Not Null! (Expected null as should be deleted)"); } // Insert 5 more tests List <int> tempIDs = new List <int>(); Say(NOTE, "Adding more test entries."); for (int i = 0; i < 5; i++) { newDemo.Name += "."; if (i > 2) { newDemo.Group += "."; } dw.Insert(newDemo); Console.WriteLine(newDemo.ID); tempIDs.Add(newDemo.ID); } Say(NOTE, "List current Demos"); ListDemosToScreen(); dw.DoNonQuery("DeleteDemosByGroupName", baseDemo); Say(NOTE, "List after DeleteDemosByGroupName"); ListDemosToScreen(); dw.DoNonQuery("DeleteNukeDemos"); Say(NOTE, "List after DeleteNukeDemos"); ListDemosToScreen(); } catch (Exception exc) { Say(BAD, exc.Message); if (exc.InnerException != null) { Say(BAD, exc.InnerException.Message); } } Console.WriteLine("<Done> Press any key to exit..."); Console.ReadKey(true); Console.WriteLine("BYE"); }