223 lines
6.7 KiB
C#
223 lines
6.7 KiB
C#
using e_suite.API.Common.exceptions;
|
|
using e_suite.API.Common.models;
|
|
using e_suite.Database.Audit;
|
|
using e_suite.Database.Core.Tables.Glossaries;
|
|
using eSuite.Core.Miscellaneous;
|
|
using GlossariesManager.UnitTests.Helpers;
|
|
using NUnit.Framework;
|
|
|
|
namespace GlossariesManager.UnitTests;
|
|
|
|
[TestFixture]
|
|
public class GetGlossaryUnitTest : GlossariesManagerTestBase
|
|
{
|
|
[SetUp]
|
|
public override async Task Setup()
|
|
{
|
|
await base.Setup();
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetGlossaryItem_GettingWithGuid_ReturnsGlossaryItem()
|
|
{
|
|
// Arrange
|
|
var auditUserDetails = new AuditUserDetails
|
|
{
|
|
UserDisplayName = "Testy McTester",
|
|
UserId = 666
|
|
};
|
|
|
|
var glossaryItem = new NewGlossaryItem
|
|
{
|
|
Guid = new Guid("01293627-166f-4e10-9967-4a9215aefd2c"),
|
|
Name = "LithoSpec",
|
|
ChildCustomFieldDefinition = new List<GeneralIdRef>
|
|
{
|
|
new()
|
|
{
|
|
Guid = new Guid("{AA4D6C9C-EFE5-495B-993E-97C977EDF9D7}")
|
|
},
|
|
new()
|
|
{
|
|
Guid = new Guid("{67E85B6D-B25D-4AA7-8148-0B52BA694967}")
|
|
}
|
|
}
|
|
};
|
|
|
|
await GlossariesManager.AddGlossaryItem(auditUserDetails, glossaryItem, default);
|
|
|
|
// Act
|
|
var glossary = await GlossariesManager.GetGlossaryItem(auditUserDetails, new GeneralIdRef { Guid = glossaryItem.Guid }, default);
|
|
|
|
// Assert
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(glossary, Is.Not.Null);
|
|
Assert.That(glossary?.Name, Is.EqualTo(glossaryItem.Name));
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetGlossaryItem_GuidNotFound_ThrowsNotFoundException()
|
|
{
|
|
// Arrange
|
|
var auditUserDetails = new AuditUserDetails
|
|
{
|
|
UserDisplayName = "Testy McTester",
|
|
UserId = 666
|
|
};
|
|
|
|
var glossaryItem = new NewGlossaryItem
|
|
{
|
|
Guid = new Guid("54952d68-5702-4f93-9b1b-23b49df80bcc"),
|
|
Name = "LithoSpec",
|
|
ChildCustomFieldDefinition = new List<GeneralIdRef>
|
|
{
|
|
new()
|
|
{
|
|
Guid = new Guid("{AA4D6C9C-EFE5-495B-993E-97C977EDF9D7}")
|
|
},
|
|
new()
|
|
{
|
|
Guid = new Guid("{67E85B6D-B25D-4AA7-8148-0B52BA694967}")
|
|
}
|
|
}
|
|
};
|
|
|
|
await GlossariesManager.AddGlossaryItem(auditUserDetails, glossaryItem, default);
|
|
|
|
|
|
// Assert
|
|
Assert.ThrowsAsync<NotFoundException>(
|
|
// Act
|
|
async () => await GlossariesManager.GetGlossaryItem(auditUserDetails, new GeneralIdRef
|
|
{
|
|
Guid = new Guid("2d2bacf4-0945-4f42-ba07-e436d2e559e5")
|
|
}, default));
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetGlossaryItem_HasChildren_ChildrenReturnsCorrectly()
|
|
{
|
|
//Arrange
|
|
var auditUserDetails = new AuditUserDetails
|
|
{
|
|
UserDisplayName = "Testy McTester",
|
|
UserId = 666
|
|
};
|
|
|
|
var glossaryItem = new NewGlossaryItem
|
|
{
|
|
Guid = new Guid("051cf552-65a6-494a-b4dd-4b671f8b1de1"),
|
|
Name = "ParemtItem",
|
|
};
|
|
await GlossariesManager.AddGlossaryItem(auditUserDetails, glossaryItem, default);
|
|
|
|
var childGlossaryItem = new NewGlossaryItem
|
|
{
|
|
Guid = new Guid("d792480c-9f22-42d5-b8eb-c6da1c664ed7"),
|
|
Name = "Child Item",
|
|
Parent = new GeneralIdRef
|
|
{
|
|
Guid = glossaryItem.Guid,
|
|
}
|
|
};
|
|
await GlossariesManager.AddGlossaryItem(auditUserDetails, childGlossaryItem, default);
|
|
|
|
//Act
|
|
var glossary = await GlossariesManager.GetGlossaryItem(auditUserDetails, new GeneralIdRef { Guid = glossaryItem.Guid }, default);
|
|
|
|
//Assert
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(glossary, Is.Not.Null);
|
|
Assert.That(glossary!.Guid, Is.EqualTo(glossaryItem.Guid));
|
|
Assert.That(glossary!.Children, Is.Not.Null);
|
|
Assert.That(glossary!.Children!.Count, Is.EqualTo(1));
|
|
Assert.That(glossary!.Children![0].Guid, Is.EqualTo(childGlossaryItem.Guid));
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetGlossaryItem_WhenItemIsSeveralLevelsDeep_AllParentsReturned()
|
|
{
|
|
//Arrange
|
|
var auditUserDetails = new AuditUserDetails
|
|
{
|
|
UserDisplayName = "Testy McTester",
|
|
UserId = 666
|
|
};
|
|
|
|
GlossariesManagerRepository.Glossaries.Add(new Glossary
|
|
{
|
|
Id = 1,
|
|
Guid = new Guid("{FA6566F8-B4B0-48C5-9985-336C9284796E}"),
|
|
Name = "System"
|
|
});
|
|
|
|
GlossariesManagerRepository.Glossaries.Add( new Glossary
|
|
{
|
|
Id = 3,
|
|
Guid = new Guid("2d2bacf4-0945-4f42-ba07-e436d2e559e5"),
|
|
Name = "Categories",
|
|
ParentId = 1
|
|
} );
|
|
|
|
GlossariesManagerRepository.Glossaries.Add(new Glossary
|
|
{
|
|
Id = 4,
|
|
Guid = new Guid("51fb0e6a-6855-495e-bc9f-8d11036f3b7d"),
|
|
Name = "Star Wars Vehicles",
|
|
ParentId = 3
|
|
});
|
|
|
|
GlossariesManagerRepository.Glossaries.Add(new Glossary
|
|
{
|
|
Id = 5,
|
|
Guid = new Guid("ff9fcd3c-c644-4a13-a704-03f940275e77"),
|
|
Name = "Rebel Alliance",
|
|
ParentId = 4
|
|
});
|
|
|
|
GlossariesManagerRepository.Glossaries.Add(new Glossary
|
|
{
|
|
Id = 6,
|
|
Guid = new Guid("45317c71-a13c-471d-8fe3-70c331cbebf2"),
|
|
Name = "Star Fighers",
|
|
ParentId = 5
|
|
});
|
|
|
|
var xWingGuid = new Guid("02f2800a-b5d5-45a2-b573-186595c56e5c");
|
|
GlossariesManagerRepository.Glossaries.Add(new Glossary
|
|
{
|
|
Id = 7,
|
|
Guid = xWingGuid,
|
|
Name = "X-Wing",
|
|
ParentId = 6
|
|
});
|
|
|
|
//Act
|
|
var glossary = await GlossariesManager.GetGlossaryItem(auditUserDetails, new GeneralIdRef { Guid = xWingGuid }, default);
|
|
|
|
//Assert
|
|
var parentChain = new List<long>
|
|
{
|
|
7,
|
|
6,
|
|
5,
|
|
4,
|
|
3,
|
|
1
|
|
};
|
|
|
|
Assert.That(glossary, Is.Not.Null);
|
|
|
|
var glossaryToCheck = glossary;
|
|
foreach (var item in parentChain)
|
|
{
|
|
Assert.That(glossaryToCheck, Is.Not.Null);
|
|
Assert.That(glossaryToCheck!.Id, Is.EqualTo(item));
|
|
glossaryToCheck = glossaryToCheck.Parent;
|
|
}
|
|
}
|
|
} |