Files
DP44/DataPRO/UnitTest/DatabaseUnitTesting/DbAPITestsLaboratoryDetails.cs

110 lines
8.1 KiB
C#
Raw Normal View History

2026-04-17 14:55:32 -04:00
using DTS.Common.Interface.TestMetaData;
using DTS.Common.Classes.LabratoryDetails;
using NUnit.Framework;
using System;
using System.Linq;
namespace DatabaseUnitTesting
{
[TestFixture]
public partial class DBAPITests
{
public LabratoryDetailsDbRecord CreateFakeLabratoryDetails(string name)
{
var record = new LabratoryDetailsDbRecord();
record.LabratoryId = -1;
record.Name = name;
record.LabratoryName = Guid.NewGuid().ToString().Substring(0, 15);
record.LabratoryContactName = Guid.NewGuid().ToString().Substring(0, 15);
record.LabratoryContactPhone = Guid.NewGuid().ToString().Substring(0, 15);
record.LabratoryContactFax = Guid.NewGuid().ToString().Substring(0, 15);
record.LabratoryContactEmail = Guid.NewGuid().ToString().Substring(0, 15);
record.LabratoryTestRefNumber = Guid.NewGuid().ToString().Substring(0, 15);
record.LabratoryProjectRefNumber = Guid.NewGuid().ToString().Substring(0, 15);
record.LastModified = DateTime.Today;
record.LastModifiedBy = "NUNIT";
record.LocalOnly = true;
record.Version = 1;
return record;
}
[Test]
public void LaboratoryDetails()
{
if (!_setup) { Setup(); }
TestLogin();
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
//Delete all to start with a blank table
var hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsDelete(_user, connections.First(), null, out string errorMessage);
Assert.IsTrue(0 == hr, "Should return 0 for LabratoryDetailsDelete");
//Get all
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsGet(_user, connections.First(), null, out ILabratoryDetailsDbRecord[] allLabratoryDetailsDbRecords);
Assert.IsTrue(0 == hr, "Should return 0 for LabratoryDetailsGet");
Assert.IsTrue(null != allLabratoryDetailsDbRecords && allLabratoryDetailsDbRecords.Length == 0, "LabratoryDetailsGet should have retrieved 0 records");
//we'll insert two records, one which is the one we'll be testing with get, and one that is just a decoy
//for tests which we do not expect to be returned, etc.
var legitRecord = CreateFakeLabratoryDetails("legit");
var decoyRecord = CreateFakeLabratoryDetails("decoy");
//Insert
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsInsert(_user, connections.First(), legitRecord, out int newLegitId, out string legitErrorString);
Assert.IsTrue(0 == hr, "Should be able to insert a legitimate LabratoryDetails record");
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsInsert(_user, connections.First(), decoyRecord, out int newFakeId, out string fakeErrorString);
Assert.IsTrue(0 == hr, "Should be able to insert a decoy LabratoryDetails record");
//Get by Name
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsGet(_user, connections.First(), legitRecord.Name, out ILabratoryDetailsDbRecord[] labratoryDetailsDbRecords);
Assert.IsTrue(0 == hr, "Should return 0 for LabratoryDetailsGet");
Assert.IsTrue(null != labratoryDetailsDbRecords && labratoryDetailsDbRecords.Length == 1, "LabratoryDetailsGet should have retrieved 1 record");
Assert.IsTrue(labratoryDetailsDbRecords.Any(r => r.Name == legitRecord.Name), "LabratoryDetailsGet should have retrieved only one record");
//Get all
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsGet(_user, connections.First(), null, out allLabratoryDetailsDbRecords);
Assert.IsTrue(0 == hr, "Should return 0 for LabratoryDetailsGet");
Assert.IsTrue(null != allLabratoryDetailsDbRecords && allLabratoryDetailsDbRecords.Length == 2, "LabratoryDetailsGet should have retrieved 2 records");
Assert.IsTrue(allLabratoryDetailsDbRecords.Any(r => r.Name == legitRecord.Name), "LabratoryDetailsGet should have retrieved our record");
Assert.IsTrue(allLabratoryDetailsDbRecords.Any(r => r.Name == decoyRecord.Name), "LabratoryDetailsGet should have retrieved our record");
//Update
var newLabratoryTestRefNumber = Guid.NewGuid().ToString().Substring(0, 15);
legitRecord.LabratoryTestRefNumber = newLabratoryTestRefNumber;
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsUpdate(_user, connections.First(), legitRecord, out legitErrorString);
Assert.IsTrue(0 == hr, "Should be able to insert a legitimate LabratoryDetails record");
Assert.IsTrue(legitErrorString == string.Empty, $"Error when inserting a legitimate LabratoryDetails record: {legitErrorString}");
//Get by Name
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsGet(_user, connections.First(), legitRecord.Name, out labratoryDetailsDbRecords);
Assert.IsTrue(0 == hr, "Should return 0 for LabratoryDetailsGet");
Assert.IsTrue(null != labratoryDetailsDbRecords && labratoryDetailsDbRecords.Length == 1, "LabratoryDetailsGet should have retrieved 1 record");
Assert.IsTrue(labratoryDetailsDbRecords.Any(r => r.LabratoryTestRefNumber == newLabratoryTestRefNumber), "LabratoryDetailsGet should have retrieved the updated record");
//Delete by Name
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsDelete(_user, connections.First(), legitRecord.Name, out errorMessage);
Assert.IsTrue(0 == hr, "Should return 0 for LabratoryDetailsDelete");
//Get by Name
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsGet(_user, connections.First(), legitRecord.Name, out labratoryDetailsDbRecords);
Assert.IsTrue(0 == hr, "Should return 0 for LabratoryDetailsGet");
Assert.IsTrue(null != labratoryDetailsDbRecords, "LabratoryDetailsGet should not have retrieved this record");
Assert.IsFalse(labratoryDetailsDbRecords.Any(r => r.Name == legitRecord.Name), "LabratoryDetailsGet should not have retrieved this record");
//Get all
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsGet(_user, connections.First(), null, out allLabratoryDetailsDbRecords);
Assert.IsTrue(0 == hr, "Should return 0 for LabratoryDetailsGet");
Assert.IsTrue(null != allLabratoryDetailsDbRecords && allLabratoryDetailsDbRecords.Length == 1, "LabratoryDetailsGet should have retrieved only the decoy record");
Assert.IsFalse(allLabratoryDetailsDbRecords.Any(r => r.Name == legitRecord.Name), "LabratoryDetailsGet not should have retrieved this record");
Assert.IsTrue(allLabratoryDetailsDbRecords.Any(r => r.Name == decoyRecord.Name), "LabratoryDetailsGet should have retrieved this record");
//Delete all
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsDelete(_user, connections.First(), null, out errorMessage);
Assert.IsTrue(0 == hr, "Should return 0 for LabratoryDetailsDelete");
//Get by Name
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsGet(_user, connections.First(), legitRecord.Name, out labratoryDetailsDbRecords);
Assert.IsTrue(0 == hr, "Should return 0 for LabratoryDetailsGet");
Assert.IsTrue(null != labratoryDetailsDbRecords, "LabratoryDetailsGet should not have retrieved this record");
Assert.IsFalse(labratoryDetailsDbRecords.Any(r => r.Name == legitRecord.Name), "LabratoryDetailsGet should not have retrieved any records");
//Get all
hr = DbAPI.DbAPI.LabratoryDetails.LabratoryDetailsGet(_user, connections.First(), null, out allLabratoryDetailsDbRecords);
Assert.IsTrue(0 == hr, "Should return 0 for LabratoryDetailsGet");
Assert.IsTrue(null != allLabratoryDetailsDbRecords, "LabratoryDetailsGet should not have retrieved this record");
Assert.IsFalse(allLabratoryDetailsDbRecords.Any(r => r.Name == legitRecord.Name), "LabratoryDetailsGet should not have retrieved any records");
}
}
}