using DTS.Common.Classes.Channels; using DTS.Common.Classes.TestSetups; using DTS.Common.Interface.Channels; using DTS.Common.Interface.TestSetups.TestSetupsList; using NUnit.Framework; using System; using System.Linq; using System.Collections.Generic; using DTS.Common.Storage; namespace DatabaseUnitTesting { [TestFixture] public partial class DBAPITests { /// /// Testing of version created for the replacement of the string RegionsOfInterest field in the /// TestSetups table with the TestSetupROIs and ROIPeriodChannels tables. /// This should only work with a Version 92 or later database, but should handle Version 91 databases gracefully. /// Tests included: /// sp_TestSetupsUpdateInsert_92 (and sp_TestSetupsInsert_92) /// sp_TestSetupROIsInsert /// sp_ROIPeriodChannelsInsert /// sp_TestSetupROIsGet /// sp_ROIPeriodChannelsGet /// sp_TestSetupROIsDelete /// [Test] public void RegionsOfInterest() { if (!_setup) { Setup(); } TestLogin(); var connections = DbAPI.DbAPI.Connections.GetActiveConnections(); //***Testing*** sp_TestSetupsUpdateInsert_92 var testSetupRecordToInsert = CreateFakeTestSetupWithROIs(2); var hr = DbAPI.DbAPI.TestSetups.TestSetupsUpdateInsert(_user, connections.First(), 92, ref testSetupRecordToInsert); Assert.IsTrue(0 == hr, "Should be able to insert a test setup"); DbAPI.DbAPI.GetDatabaseVersion(connections.First(), out int serverDbVersion); if (serverDbVersion <= 91) { var regionOfInterest = testSetupRecordToInsert.RegionsOfInterest.First(); hr = DbAPI.DbAPI.RegionsOfInterest.RegionsOfInterestInsert(_user, connections.First(), 91, testSetupRecordToInsert.Id, regionOfInterest); Assert.IsTrue(0 != hr, "RegionsOfInterestInsert should not work if database Version is 91 or less"); } else if (serverDbVersion >= 92) { //***Testing*** sp_TestSetupROIsInsert and sp_ROIPeriodChannelsInsert //valid Insert Regions of Interest foreach (var regionOfInterest in testSetupRecordToInsert.RegionsOfInterest) { hr = DbAPI.DbAPI.RegionsOfInterest.RegionsOfInterestInsert(_user, connections.First(), 97, testSetupRecordToInsert.Id, regionOfInterest); } //***Testing*** sp_TestSetupROIsGet and sp_ROIPeriodChannelsGet //valid get the RegionsOfInterest for this Test Setup hr = DbAPI.DbAPI.RegionsOfInterest.RegionsOfInterestGet(_user, connections.First(), DbOperations.CURRENT_DB_VERSION, testSetupRecordToInsert.Id, out var roiRecords); Assert.IsTrue(0 == hr && null != roiRecords && roiRecords.Length == 2 && roiRecords.Any(r => r.Suffix == testSetupRecordToInsert.RegionsOfInterest.First().Suffix), "First suffix test failed"); Assert.IsTrue(0 == hr && null != roiRecords && roiRecords.Length == 2 && roiRecords.Any(r => r.Suffix == testSetupRecordToInsert.RegionsOfInterest.Last().Suffix), "Last suffix test failed"); //***Testing*** sp_TestSetupROIsDelete //Delete all of the RegionsOfInterest for this Test Setup hr = DbAPI.DbAPI.RegionsOfInterest.RegionsOfInterestDelete(_user, connections.First(), testSetupRecordToInsert.Id); Assert.IsTrue(0 == hr, "Should be able to delete all ROIs in a Test Setup"); //***Testing*** sp_TestSetupROIsGet and sp_ROIPeriodChannelsGet //Make sure they were deleted hr = DbAPI.DbAPI.RegionsOfInterest.RegionsOfInterestGet(_user, connections.First(), DbOperations.CURRENT_DB_VERSION, testSetupRecordToInsert.Id, out roiRecords); Assert.IsTrue(0 == hr && (null == roiRecords || roiRecords.Length == 0)); } } } }