Files
DP44/DataPRO/UnitTest/DatabaseUnitTesting/DbAPITestsGroupHardware.cs
2026-04-17 14:55:32 -04:00

122 lines
6.9 KiB
C#

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
{
/// <summary>
///
/// </summary>
/// <param name="staticGroupId">Call with null or the id of a corresponding static Group</param>
/// <returns></returns>
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");
}
}
}