using System; using System.Collections.Generic; using System.Text; using NUnit.Framework; using System.Data; namespace IndianHealthService.BMXNet.Tests { /// /// BMX ADO SS^BMX TEST FILE^^~~~~~ /// /// /// [TestFixture] public class CreateUpdateDeleteChildRows:BmxValidUserTestSuite { [SetUp] public override void Setup() { base.Setup(); this.SetupTable(); } private String _parentIen = null; public String ParentIen { get { return _parentIen; } set { _parentIen = value; } } public override void SetupTable() { base.SetupTable(); this.ClearTable(); this.AddParent(); //necessary so that the next one won't fail this.ClearChildTable(); } [Test] public void AddParent() { DataTable table = this.RemoteSession.TableFromCommand(this.FetchTableString); int rowCount = table.Rows.Count; DataRow row = table.NewRow(); row["NAME"] = "Parent"; row["DATE"] = new DateTime(1970, 10, 10); row["NUMBER"] = 8; row["NUMBER R/O"] = 9; table.Rows.Add(row); Assert.AreEqual(rowCount + 1, table.Rows.Count); Assert.IsTrue(this.RemoteSession.SaveChanges(table)); table = this.RemoteSession.TableFromCommand(this.FetchTableString); Assert.AreEqual(rowCount + 1, table.Rows.Count); row = table.Rows[0]; Assert.AreEqual(row["NAME"], "Parent"); this.ParentIen = row["BMXIEN"].ToString(); Assert.Greater(int.Parse(this.ParentIen), 0); } public virtual void ClearChildTable() { DataTable table = this.RemoteSession.TableFromCommand(this.FetchString()); //TODO: is this supposed to work???? table.Rows.Clear(); foreach (DataRow each in table.Rows) { each.Delete(); } this.RemoteSession.SaveChanges(table); table = this.RemoteSession.TableFromCommand(this.FetchString()); Assert.AreEqual(0, table.Rows.Count); } public String FetchString() { return "BMX ADO SS^BMX TEST FILE2^"+this.ParentIen+",^~~~~~"; } [Test] public void TestCarrotLimiter() { String result=this.RemoteSession.TransmitRPC("BMX DEMO", "B^10", "OR CPRS GUI CHART"); } [Test] public void AddRow() { DataTable table = this.RemoteSession.TableFromCommand(this.FetchString()); DataRow row = table.NewRow(); row["BMXIEN1"] = this.ParentIen; row["NAME2"] = "John"; row["DATE2"] = new DateTime(1970, 10, 10); row["NUMBER2"] = 8; row["NUMBER2 R/O"] = 9; table.Rows.Add(row); Assert.AreEqual(1, table.Rows.Count); Assert.IsTrue(this.RemoteSession.SaveChanges(table)); table = this.RemoteSession.TableFromCommand(this.FetchString()); Assert.AreEqual(1, table.Rows.Count); row = table.Rows[0]; Assert.AreEqual(row["NAME2"], "John"); Assert.AreEqual(row["DATE2"], new DateTime(1970, 10, 10)); } [Test] public void UpdateRow() { DataTable table = this.RemoteSession.TableFromCommand(this.FetchString()); DataRow row = table.NewRow(); row["BMXIEN1"] = this.ParentIen; row["NAME2"] = "John"; row["DATE2"] = new DateTime(1970, 10, 10); row["NUMBER2"] = 8; row["NUMBER2 R/O"] = 9; table.Rows.Add(row); Assert.AreEqual(1, table.Rows.Count); Assert.IsTrue(this.RemoteSession.SaveChanges(table)); table = this.RemoteSession.TableFromCommand(this.FetchString()); row = table.Rows[0]; row["NAME2"]="Fred"; row["DATE2"]= new DateTime(1970, 11, 11); Assert.IsTrue(this.RemoteSession.SaveChanges(table)); table = this.RemoteSession.TableFromCommand(this.FetchString()); Assert.AreEqual(1, table.Rows.Count); row = table.Rows[0]; Assert.AreEqual(row["NAME2"], "Fred"); Assert.AreEqual(row["DATE2"], new DateTime(1970, 11, 11)); } [Test] public void DeleteRow() { DataTable table = this.RemoteSession.TableFromCommand(this.FetchString()); DataRow row = table.NewRow(); row["BMXIEN1"] = this.ParentIen; row["NAME2"] = "John"; row["DATE2"] = new DateTime(1970, 10, 10); row["NUMBER2"] = 8; row["NUMBER2 R/O"] = 9; table.Rows.Add(row); Assert.AreEqual(1, table.Rows.Count); row = table.NewRow(); row["BMXIEN1"] = this.ParentIen; row["NAME2"] = "Jane"; row["DATE2"] = new DateTime(1972, 10, 10); row["NUMBER2"] = 8; row["NUMBER2 R/O"] = 9; table.Rows.Add(row); Assert.AreEqual(2, table.Rows.Count); Assert.IsTrue(this.RemoteSession.SaveChanges(table)); table = this.RemoteSession.TableFromCommand(this.FetchString()); Assert.AreEqual(2, table.Rows.Count); row = table.Rows[1]; Assert.AreEqual(row["NAME2"], "Jane"); row.Delete(); //TODO: Deleting a row does not remove it ... it still counts. Assert below fails //if 1 Assert.AreEqual(2, table.Rows.Count); Assert.IsTrue(this.RemoteSession.SaveChanges(table)); table = this.RemoteSession.TableFromCommand(this.FetchString()); Assert.AreEqual(1, table.Rows.Count); row = table.Rows[0]; Assert.AreEqual(row["NAME2"],"John"); } [Test] public void CascadedDeleteRow() { DataTable table = this.RemoteSession.TableFromCommand(this.FetchString()); DataRow row = table.NewRow(); row["BMXIEN1"] = this.ParentIen; row["NAME2"] = "John"; row["DATE2"] = new DateTime(1970, 10, 10); row["NUMBER2"] = 8; row["NUMBER2 R/O"] = 9; table.Rows.Add(row); Assert.AreEqual(1, table.Rows.Count); Assert.IsTrue(this.RemoteSession.SaveChanges(table)); table = this.RemoteSession.TableFromCommand(this.FetchString()); Assert.AreEqual(1, table.Rows.Count); row = table.Rows[0]; Assert.AreEqual(row["NAME2"], "John"); Assert.AreEqual(row["DATE2"], new DateTime(1970, 10, 10)); DataTable parentTable = this.RemoteSession.TableFromCommand(this.FetchTableString); Assert.AreEqual(1, table.Rows.Count); parentTable.Rows[0].Delete(); Assert.IsTrue(this.RemoteSession.SaveChanges(parentTable)); this.AddParent(); table = this.RemoteSession.TableFromCommand(this.FetchString()); Assert.AreEqual(0, table.Rows.Count); } } }