205 lines
11 KiB
Plaintext
205 lines
11 KiB
Plaintext
using DTS.Common.Classes.Tags;
|
|
using DTS.Common.Interface.Sensors;
|
|
using DTS.Common.Interface.Tags;
|
|
using DTS.Common.Interface.TestSetups.TestSetupsList;
|
|
using NUnit.Framework;
|
|
using System;
|
|
using System.Linq;
|
|
|
|
namespace DatabaseUnitTesting
|
|
{
|
|
[TestFixture]
|
|
public partial class DBAPITests
|
|
{
|
|
[Test]
|
|
public void TagsTestGetNegatives()
|
|
{
|
|
if (!_setup) { Setup(); }
|
|
TestLogin();
|
|
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
|
|
var tag = CreateFakeTag();
|
|
|
|
//insert a tag just so that we have something that _might_ be returned
|
|
var hr = DbAPI.DbAPI.Tags.TagsInsert(_user, connections.First(), ref tag);
|
|
Assert.IsTrue(0 == hr, "TagsInsert returned 0");
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagsGet(null, connections.First(), null, out var records);
|
|
Assert.IsTrue(0 != hr && (null == records || 0 == records.Length), "TagsGet should not allow null user");
|
|
hr = DbAPI.DbAPI.Tags.TagsGet(_user, null, null, out records);
|
|
Assert.IsTrue(0 != hr && (null == records || 0 == records.Length), "TagsGet should not allow null connection");
|
|
hr = DbAPI.DbAPI.Tags.TagsGetId(null, connections.First(), tag.Text, out var id);
|
|
Assert.IsTrue(0 != hr && null == id, "TagsGetId should not allow null user");
|
|
hr = DbAPI.DbAPI.Tags.TagsGetId(_user, null, tag.Text, out id);
|
|
Assert.IsTrue(0 != hr && null == id, "TagsGetId should not allow null connection");
|
|
|
|
ITag tag2 = null;
|
|
hr = DbAPI.DbAPI.Tags.TagsInsert(_user, connections.First(), ref tag2);
|
|
Assert.IsTrue(DbAPI.Errors.ErrorCodes.ERROR_MISSING_PARAMETER == hr, "TagsInsert with null does return missing parameter");
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagsDelete(null, connections.First(), tag.ID);
|
|
Assert.IsTrue(0 != hr, "TagsDelete should not allow null user");
|
|
hr = DbAPI.DbAPI.Tags.TagsDelete(_user, null, tag.ID);
|
|
Assert.IsTrue(0 != hr, "TagsDelete should not allow null connection");
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagsDelete(_user, connections.First(), tag.ID);
|
|
Assert.IsTrue(0 == hr, "TagsDelete returns 0");
|
|
}
|
|
[Test]
|
|
public void TagsTestGetPositives()
|
|
{
|
|
if (!_setup) { Setup(); }
|
|
TestLogin();
|
|
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
|
|
var tag = CreateFakeTag();
|
|
var hr = DbAPI.DbAPI.Tags.TagsGet(_user, connections.First(), null, out var records);
|
|
Assert.IsTrue(0 == hr && (null == records || !records.Any(r => r.Text == tag.Text)),
|
|
"TagsGet returns 0 and GUID text not already found");
|
|
hr = DbAPI.DbAPI.Tags.TagsInsert(_user, connections.First(), ref tag);
|
|
Assert.IsTrue(0 == hr && -1 != tag.ID, "TagsInsert returns 0 and modifies id");
|
|
hr = DbAPI.DbAPI.Tags.TagsGet(_user, connections.First(), null, out records);
|
|
Assert.IsTrue(0 == hr && null != records && records.Any(r => r.Text == tag.Text && r.ID == tag.ID),
|
|
"TagsGet returns 0 and finds the tag");
|
|
hr = DbAPI.DbAPI.Tags.TagsGet(_user, connections.First(), tag.ID, out records);
|
|
Assert.IsTrue(0 == hr && null != records && records.Length == 1 && TagIsEqual(records[0], tag)
|
|
, "TagsGet returns 0, and returns the tag [when passing in id]");
|
|
hr = DbAPI.DbAPI.Tags.TagsGetId(_user, connections.First(), tag.Text, out var id);
|
|
Assert.IsTrue(0 == hr && null != id && (int)id == tag.ID, "TagsGetId returns 0 and retrieves right id");
|
|
hr = DbAPI.DbAPI.Tags.TagsDelete(_user, connections.First(), tag.ID);
|
|
Assert.IsTrue(0 == hr, "TagsDelete returns 0");
|
|
hr = DbAPI.DbAPI.Tags.TagsGet(_user, connections.First(), null, out records);
|
|
Assert.IsTrue(0 == hr && null == records || !records.Any(r => r.Text == tag.Text), "TagsDelete returns 0");
|
|
}
|
|
private bool TagIsEqual(ITag left, ITag right)
|
|
{
|
|
return left.ID == right.ID &&
|
|
left.IsObsolete == right.IsObsolete &&
|
|
left.Text.Equals(right.Text);
|
|
}
|
|
public static ITag CreateFakeTag()
|
|
{
|
|
var tag = new Tag();
|
|
tag.ID = -1;
|
|
tag.Text = Guid.NewGuid().ToString().Substring(0, 15);
|
|
return tag;
|
|
}
|
|
[Test]
|
|
public void TagAssignmentsPositives()
|
|
{
|
|
if (!_setup) { Setup(); }
|
|
TestLogin();
|
|
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
|
|
var tag = CreateFakeTag();
|
|
|
|
_ = DbAPI.DbAPI.Tags.TagsInsert(_user, connections.First(), ref tag);
|
|
|
|
var testSetup = CreateFakeTestSetup();
|
|
_ = DbAPI.DbAPI.TestSetups.TestSetupsUpdateInsert(_user, connections.First(), 0, ref testSetup);
|
|
var sensor = CreateFakeSensor();
|
|
_ = DbAPI.DbAPI.Sensors.SensorsAnalogUpdateInsert(_user, connections.First(), sensor);
|
|
|
|
var hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(_user, connections.First(), null, out var tagAssignments);
|
|
Assert.IsTrue(0 == hr, "TagAssignmentsGet returns 0");
|
|
|
|
var taTestSetup = CreateTagAssignment(tag, testSetup);
|
|
hr = DbAPI.DbAPI.Tags.TagAssignmentsInsert(_user, connections.First(), taTestSetup);
|
|
Assert.IsTrue(0 == hr, "TagAssignmentsInsert returns 0");
|
|
|
|
var taSensor = CreateTagAssignment(tag, sensor);
|
|
hr = DbAPI.DbAPI.Tags.TagAssignmentsInsert(_user, connections.First(), taSensor);
|
|
Assert.IsTrue(0 == hr, "TagAssignmentsInsert returns 0");
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(_user, connections.First(), null, out tagAssignments);
|
|
Assert.IsTrue(0 == hr && null != tagAssignments &&
|
|
tagAssignments.Any(t => IsTagAssignmentEqual(t, taTestSetup)) &&
|
|
tagAssignments.Any(t => IsTagAssignmentEqual(t, taSensor)),
|
|
"TagAssignmentsGet returns tag assignments");
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(_user, connections.First(), TagTypes.TestSetup, out tagAssignments);
|
|
Assert.IsTrue(0 == hr && null != tagAssignments && tagAssignments.Any(t => IsTagAssignmentEqual(t, taTestSetup)),
|
|
"TagAssignmentsGet returns taTestSetup");
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(_user, connections.First(), TagTypes.Sensors, out tagAssignments);
|
|
Assert.IsTrue(0 == hr && null != tagAssignments && tagAssignments.Any(t => IsTagAssignmentEqual(t, taSensor)),
|
|
"TagAssignmentsGet returns taSensor");
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagAssignmentsDelete(_user, connections.First(), taSensor.ObjectID, TagTypes.Sensors);
|
|
Assert.IsTrue(0 == hr, "TagAssignmentsDelete returns 0");
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagAssignmentsDelete(_user, connections.First(), taTestSetup.ObjectID, TagTypes.TestSetup);
|
|
Assert.IsTrue(0 == hr, "TagAssignmentsDelete returns 0");
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(_user, connections.First(), null, out tagAssignments);
|
|
Assert.IsTrue(0 == hr && !tagAssignments.Any(t => IsTagAssignmentEqual(t, taSensor))
|
|
&& !tagAssignments.Any(t => IsTagAssignmentEqual(t, taTestSetup)), "TagAssignments deleted");
|
|
_ = DbAPI.DbAPI.Tags.TagsDelete(_user, connections.First(), tag.ID);
|
|
|
|
_ = DbAPI.DbAPI.Sensors.SensorsDelete(_user, connections.First(), sensor.Id, 0);
|
|
_ = DbAPI.DbAPI.TestSetups.TestSetupsDeleteById(_user, connections.First(), new[] { testSetup.Id });
|
|
}
|
|
|
|
private bool IsTagAssignmentEqual(ITagAssignment left, ITagAssignment right)
|
|
{
|
|
return left.ObjectID == right.ObjectID
|
|
&& left.ObjectType == right.ObjectType
|
|
&& left.TagID == right.TagID;
|
|
}
|
|
private ITagAssignment CreateTagAssignment(ITag tag, IAnalogDbRecord sensor)
|
|
{
|
|
var ta = new TagAssignment() { ObjectType = TagTypes.Sensors, TagID = tag.ID, ObjectID = sensor.Id };
|
|
return ta;
|
|
}
|
|
private ITagAssignment CreateTagAssignment(ITag tag, ITestSetupRecord test)
|
|
{
|
|
var ta = new TagAssignment() { ObjectID = test.Id, ObjectType = TagTypes.TestSetup, TagID = tag.ID };
|
|
return ta;
|
|
}
|
|
|
|
[Test]
|
|
public void TagAssignmentsNegatives()
|
|
{
|
|
if (!_setup) { Setup(); }
|
|
TestLogin();
|
|
var con = DbAPI.DbAPI.Connections.GetActiveConnections().First();
|
|
var tag = CreateFakeTag();
|
|
|
|
_ = DbAPI.DbAPI.Tags.TagsInsert(_user, con, ref tag);
|
|
|
|
var hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(null, con, null, out var tagAssignments);
|
|
Assert.IsTrue(0 != hr, "TagAssignmentsGet should not work with null user");
|
|
hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(_user, null, null, out tagAssignments);
|
|
Assert.IsTrue(0 != hr, "TagAssignmentsGet should not work with null connection");
|
|
var sensor = CreateFakeSensor();
|
|
_ = DbAPI.DbAPI.Sensors.SensorsAnalogUpdateInsert(_user, con, sensor);
|
|
var testSetup = CreateFakeTestSetup();
|
|
_ = DbAPI.DbAPI.TestSetups.TestSetupsUpdateInsert(_user, con, 0, ref testSetup);
|
|
|
|
var taSetup = CreateTagAssignment(tag, testSetup);
|
|
var taSensor = CreateTagAssignment(tag, sensor);
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagAssignmentsInsert(null, con, taSetup);
|
|
Assert.IsTrue(0 != hr, "TagAssignmentsInsert should not work with null user");
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagAssignmentsInsert(_user, null, taSetup);
|
|
Assert.IsTrue(0 != hr, "TagAssignmentsInsert should not work with null connection");
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagAssignmentsInsert(_user, con, null);
|
|
Assert.IsTrue(DbAPI.Errors.ErrorCodes.ERROR_MISSING_PARAMETER == hr, "TagAssignmentsInsert should not work with null tagassignment");
|
|
|
|
hr = DbAPI.DbAPI.TestSetups.TestSetupsDeleteById(_user, con, new[] { testSetup.Id });
|
|
Assert.IsTrue(0 == hr, "TestSetupsDelete should work when tag assignments exist");
|
|
|
|
hr = DbAPI.DbAPI.Sensors.SensorsDelete(_user, con, sensor.Id, 0);
|
|
Assert.IsTrue(0 == hr, "SensorsDelete should work when tag assignments exist");
|
|
|
|
var sensor2 = CreateFakeSensor();
|
|
_ = DbAPI.DbAPI.Sensors.SensorsAnalogUpdateInsert(_user, con, sensor);
|
|
var taSensor2 = CreateTagAssignment(tag, sensor2);
|
|
_ = DbAPI.DbAPI.Tags.TagAssignmentsInsert(_user, con, taSensor2);
|
|
|
|
hr = DbAPI.DbAPI.Tags.TagsDelete(_user, con, tag.ID);
|
|
Assert.IsTrue(0 == hr, "TagsDelete should work when tag assignments exist");
|
|
_ = DbAPI.DbAPI.Sensors.SensorsDelete(_user, con, sensor2.Id, 0);
|
|
}
|
|
}
|
|
}
|