using DTS.Common.Classes.Groups; using DTS.Common.Interface.DataRecorders; using DTS.Common.Interface.Groups; using NUnit.Framework; using System; using System.Linq; namespace DatabaseUnitTesting { [TestFixture] public partial class DBAPITests { /// /// /// /// Call with null or the id of a corresponding static Group /// public IGroupDbRecord CreateFakeGroup(string displayName, int? staticGroupId) { var group = new GroupDbRecord(); group.SerialNumber = Guid.NewGuid().ToString().Substring(0, 10); group.Picture = ""; group.DisplayName = displayName; group.Description = ""; group.Embedded = false; group.LastModified = DateTime.Now; group.LastModifiedBy = ""; group.StaticGroupId = staticGroupId; return group; } public GroupHardwareDbRecord CreateGroupHardwareDbRecord(int groupId, int dasId) { var groupHardwareDbRecord = new GroupHardwareDbRecord(); groupHardwareDbRecord.GroupId = groupId; groupHardwareDbRecord.DASId = dasId; return groupHardwareDbRecord; } [Test] public void TestGroupHardwareInsertGetAndDelete() { if (!_setup) { Setup(); } TestLogin(); var connections = DbAPI.DbAPI.Connections.GetActiveConnections(); //Delete all records from the DAS and Groups tables - either of which should delete all records from the GroupHardware table also. var hr = DbAPI.DbAPI.DAS.DASGet(_user, connections.First(), connections.First().ClientDbVersion, null, null, out IDASDBRecord[] dasRecords); Assert.IsTrue(0 == hr, "Should return 0 for DASGet"); foreach (var dasRecord in dasRecords) { hr = DbAPI.DbAPI.DAS.DASDelete(_user, connections.First(), dasRecord.DASId, dasRecord.SerialNumber, false); Assert.IsTrue(0 == hr, "Should return 0 for DASDelete"); } hr = DbAPI.DbAPI.Groups.GroupsGet(_user, connections.First(), null, null, null, null, null, out IGroupDbRecord[] groups); Assert.IsTrue(0 == hr, "Should return 0 for GroupsGet"); foreach (var group in groups) { hr = DbAPI.DbAPI.Groups.GroupsDelete(_user, connections.First(), group.Id, out string deleteErrorString); Assert.IsTrue(0 == hr, "Should return 0 for GroupsDelete"); } //Insert one legit and one bogus DAS var legitDas = CreateFakeDAS(); legitDas.SerialNumber = "legit"; hr = DbAPI.DbAPI.DAS.DASInsert(_user, connections.First(), legitDas); Assert.AreEqual(0, hr, "DASInsert legit executed"); var bogusDas = CreateFakeDAS(); bogusDas.SerialNumber = "bogus"; hr = DbAPI.DbAPI.DAS.DASInsert(_user, connections.First(), bogusDas); Assert.AreEqual(0, hr, "DASInsert bogus executed"); //Insert a legit static Group var legitGroup = CreateFakeGroup("legit", null); hr = DbAPI.DbAPI.Groups.GroupsInsert(_user, connections.First(), ref legitGroup); Assert.AreEqual(0, hr, "Legit GroupInsert executed"); //Insert a bogus static Group var bogusGroup = CreateFakeGroup("bogus", null); hr = DbAPI.DbAPI.Groups.GroupsInsert(_user, connections.First(), ref bogusGroup); Assert.AreEqual(0, hr, "Bogus GroupInsert executed"); //**Insert GroupHardware records for the legit static Group with both DAS var groupHardwareDbRecord = CreateGroupHardwareDbRecord(legitGroup.Id, legitDas.DASId); hr = DbAPI.DbAPI.GroupHardware.GroupHardwareInsert(_user, connections.First(), groupHardwareDbRecord, out int newId, out string errorMessage); Assert.IsTrue(0 == hr, "Should return 0 for GroupHardwareInsert"); groupHardwareDbRecord = CreateGroupHardwareDbRecord(legitGroup.Id, bogusDas.DASId); hr = DbAPI.DbAPI.GroupHardware.GroupHardwareInsert(_user, connections.First(), groupHardwareDbRecord, out newId, out errorMessage); Assert.IsTrue(0 == hr, "Should return 0 for GroupHardwareInsert"); //**Insert a GroupHardware record for the bogus static Group with one bogus DAS groupHardwareDbRecord = CreateGroupHardwareDbRecord(bogusGroup.Id, bogusDas.DASId); hr = DbAPI.DbAPI.GroupHardware.GroupHardwareInsert(_user, connections.First(), groupHardwareDbRecord, out newId, out errorMessage); Assert.IsTrue(0 == hr, "Should return 0 for GroupHardwareInsert"); //**Get the GroupHardware record for the legit static Group only (1) hr = DbAPI.DbAPI.GroupHardware.GroupHardwareGet(_user, connections.First(), legitGroup.Id, legitDas.SerialNumber, legitGroup.Embedded, out GroupHardwareDbRecord[] groupHardwareRecords); Assert.IsTrue(0 == hr, "Should return 0 for GroupHardwareGet"); Assert.IsTrue(null != groupHardwareRecords && groupHardwareRecords.Length == 2, "GroupHardwareGet should have retrieved 2 records"); //**Get all GroupHardware records (3) hr = DbAPI.DbAPI.GroupHardware.GroupHardwareGet(_user, connections.First(), null, null, null, out groupHardwareRecords); Assert.IsTrue(0 == hr, "Should return 0 for GroupHardwareGet"); Assert.IsTrue(null != groupHardwareRecords && groupHardwareRecords.Length == 3, "GroupHardwareGet should have retrieved 3 records"); //**Delete the GroupHardware records for the bogus static Group hr = DbAPI.DbAPI.GroupHardware.GroupHardwareDelete(_user, connections.First(), bogusGroup.Id, bogusDas.DASId, out string errorString); Assert.IsTrue(0 == hr, "Should return 0 for GroupHardwareDelete"); //**Get the deleted GroupHardware record (fail) (0) hr = DbAPI.DbAPI.GroupHardware.GroupHardwareGet(_user, connections.First(), bogusGroup.Id, bogusDas.SerialNumber, false, out groupHardwareRecords); Assert.IsTrue(0 == hr, "Should return 0 for GroupHardwareGet of deleted record"); Assert.IsTrue(null != groupHardwareRecords && groupHardwareRecords.Length == 0, "GroupHardwareGet should have retrieved 0 records"); //**Get all GroupHardware records (2) hr = DbAPI.DbAPI.GroupHardware.GroupHardwareGet(_user, connections.First(), legitGroup.Id, bogusDas.SerialNumber, false, out groupHardwareRecords); Assert.IsTrue(0 == hr, "Should return 0 for GroupHardwareGet"); Assert.IsTrue(null != groupHardwareRecords && groupHardwareRecords.Length == 2, "GroupHardwareGet should have retrieved 2 records"); } } }