using System; using System.Data.SqlClient; using NUnit.Framework; using System.Data; namespace DatabaseUnitTesting { [TestFixture] public class SensorsDigitalInUnitTests : TestSetups { [Test] // ============================================================ // Send new valid digital in sensor parameters to sp_SensorsDigitalInUpdateInsert and // compare all fields except LastModified and new ID. Pass if all fields in SensorsDigitalIn // table are entered. // ============================================================ [Category("sp_SensorsDigitalInUpdateInsert")] public void VerifyWriteToDigitalInTable_sp_SensorsDigitalInUpdateInsertTest() { string filename = TestResultPath + "DigitalInSensorInsertTest.xml"; // only data in SensorsDigitalIn table will be compared UnitTests.AddObjectComparison("dbo", "SensorsDigitalIn"); // But the LastModified column is excluded from comparison, // just to demonstrate how we do it. UnitTests.AddColumnToIgnore("dbo", "SensorsDigitalIn", "LastModified"); UnitTests.AddColumnToIgnore("dbo", "SensorsDigitalIn", "Id"); Command.CommandType = CommandType.StoredProcedure; Command.CommandText = "sp_SensorsDigitalInUpdateInsert"; Command.Parameters.Add(new SqlParameter("@SerialNumber", SqlDbType.NVarChar) { Value = "DigiInSerialNum" }); Command.Parameters.Add(new SqlParameter("@SettingMode", SqlDbType.Int) { Value = 8 }); Command.Parameters.Add(new SqlParameter("@ScaleMultiplier", SqlDbType.NVarChar) { Value = "ArbitraryHighAndLow,1,2" }); Command.Parameters.Add(new SqlParameter("@LastModified", SqlDbType.DateTime) { Value = DateTime.Now }); Command.Parameters.Add(new SqlParameter("@LastModifiedBy", SqlDbType.NVarChar) { Value = "TestUser" }); Command.Parameters.Add(new SqlParameter("@eId", SqlDbType.NVarChar) { Value = "EID" }); Command.Parameters.Add(new SqlParameter("@UserValue1", SqlDbType.NVarChar) { Value = "" }); Command.Parameters.Add(new SqlParameter("@UserValue2", SqlDbType.NVarChar) { Value = "" }); Command.Parameters.Add(new SqlParameter("@UserValue3", SqlDbType.NVarChar) { Value = "" }); Command.Parameters.Add(new SqlParameter("@UserTags", SqlDbType.VarBinary) { Value = new byte[10 * sizeof(int)] }); var newIdParam = new SqlParameter("@new_id", System.Data.SqlDbType.Int) { Direction = System.Data.ParameterDirection.Output }; Command.Parameters.Add(newIdParam); var errorNumberParam = new SqlParameter("@errorNumber", System.Data.SqlDbType.Int) { Direction = System.Data.ParameterDirection.Output }; Command.Parameters.Add(errorNumberParam); var errorMessageParam = new SqlParameter("@errorMessage", System.Data.SqlDbType.NVarChar, 250) { Direction = System.Data.ParameterDirection.Output }; Command.Parameters.Add(errorMessageParam); Command.ExecuteNonQuery(); if (BSETUPMODE) UnitTests.WriteDiffsToXml(filename); else Assert.IsTrue(UnitTests.CompareDiffsToXml(filename)); } [Test] // ============================================================ // Send valid digital in sensor parameters to sp_SensorsDigitalInUpdateInsert for a sensor // already in the database and compare all fields except LastModified and new ID. // Pass if all fields in SensorsDigitalIn table are entered. // ============================================================ [Category("sp_SensorsDigitalInUpdateInsert")] public void VerifyUpdateToDigitalIn_sp_SensorsDigitalInUpdateInsertTest() { string filename = TestResultPath + "DigitalInSensorUpdateTest.xml"; // only data in SensorsDigitalIn table will be compared UnitTests.AddObjectComparison("dbo", "SensorsDigitalIn"); // But the LastModified column is excluded from comparison, // just to demonstrate how we do it. UnitTests.AddColumnToIgnore("dbo", "SensorsDigitalIn", "LastModified"); UnitTests.AddColumnToIgnore("dbo", "SensorsDigitalIn", "Id"); //SqlCommand command = connection.CreateCommand(); //command.Transaction = transaction; Command.CommandType = CommandType.StoredProcedure; Command.CommandText = "sp_SensorsDigitalInUpdateInsert"; Command.Parameters.Add(new SqlParameter("@SerialNumber", SqlDbType.NVarChar) { Value = "DigiInSerialNum" }); Command.Parameters.Add(new SqlParameter("@SettingMode", SqlDbType.Int) { Value = 8 }); Command.Parameters.Add(new SqlParameter("@ScaleMultiplier", SqlDbType.NVarChar) { Value = "ArbitraryHighAndLow,1,2" }); Command.Parameters.Add(new SqlParameter("@LastModified", SqlDbType.DateTime) { Value = DateTime.Now }); Command.Parameters.Add(new SqlParameter("@LastModifiedBy", SqlDbType.NVarChar) { Value = "TestUser" }); Command.Parameters.Add(new SqlParameter("@eId", SqlDbType.NVarChar) { Value = "EID" }); Command.Parameters.Add(new SqlParameter("@UserValue1", SqlDbType.NVarChar) { Value = "" }); Command.Parameters.Add(new SqlParameter("@UserValue2", SqlDbType.NVarChar) { Value = "" }); Command.Parameters.Add(new SqlParameter("@UserValue3", SqlDbType.NVarChar) { Value = "" }); Command.Parameters.Add(new SqlParameter("@UserTags", SqlDbType.VarBinary) { Value = new byte[10 * sizeof(int)] }); var newIdParam = new SqlParameter("@new_id", System.Data.SqlDbType.Int) { Direction = System.Data.ParameterDirection.Output }; Command.Parameters.Add(newIdParam); var errorNumberParam = new SqlParameter("@errorNumber", System.Data.SqlDbType.Int) { Direction = System.Data.ParameterDirection.Output }; Command.Parameters.Add(errorNumberParam); var errorMessageParam = new SqlParameter("@errorMessage", System.Data.SqlDbType.NVarChar, 250) { Direction = System.Data.ParameterDirection.Output }; Command.Parameters.Add(errorMessageParam); Command.ExecuteNonQuery(); //Now that the sensor is saved, make a change so "update" is called Command.Parameters[5].Value = "EID_Modified"; Command.ExecuteNonQuery(); if (BSETUPMODE) UnitTests.WriteDiffsToXml(filename); else Assert.IsTrue(UnitTests.CompareDiffsToXml(filename)); } //[Test] // ============================================================ // Send valid digital in sensor parameters to sp_SensorsDigitalInUpdateInsert for a sensor // already in the database and verify no new row is created in dbo.Sensors. // // ============================================================ //[Test] // ============================================================ // Send valid digital in sensor parameters to sp_SensorsDigitalInUpdateInsert for a new sensor // to be entered into the db and verify a new row is created in dbo.Sensors. // // ============================================================ } }