Backend/e-suite.Modules.GlossariesManager/GlossariesManager.UnitTests/DeleteGlossaryUnitTests.cs
2026-01-20 21:50:10 +00:00

161 lines
4.5 KiB
C#

using e_suite.API.Common.exceptions;
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 DeleteGlossaryUnitTests : GlossariesManagerTestBase
{
[SetUp]
public override async Task Setup()
{
await base.Setup();
}
[Test]
public void DeleteGlossaryItem_ItemDoesNotExist_ThrowsException()
{
//Arrange
var auditUserDetails = new AuditUserDetails
{
UserDisplayName = "Testy McTester",
UserId = 666
};
var generalIdRef = new GeneralIdRef
{
Guid = new Guid("{8A909C67-BC70-4FE2-8B5A-B5799B8E9E98}")
};
// Act & Assert
Assert.ThrowsAsync<NotFoundException>( async() => await GlossariesManager.DeleteGlossaryItem(auditUserDetails, generalIdRef,default) );
}
[Test]
public void DeleteGlossaryItem_ItemDoesAlreadyDeleted_ThrowsException()
{
//Arrange
var auditUserDetails = new AuditUserDetails
{
UserDisplayName = "Testy McTester",
UserId = 666
};
var generalIdRef = new GeneralIdRef
{
Guid = new Guid("{8A909C67-BC70-4FE2-8B5A-B5799B8E9E98}")
};
GlossariesManagerRepository.Glossaries.Add( new Glossary
{
Id = 1,
Guid = generalIdRef.Guid.Value,
Deleted = true
});
// Act & Assert
Assert.ThrowsAsync<InvalidOperationException>(async () => await GlossariesManager.DeleteGlossaryItem(auditUserDetails, generalIdRef, default));
}
[Test]
public async Task DeleteGlossaryItem_ItemFound_ItemIsMarkedDeleted()
{
//Arrange
var auditUserDetails = new AuditUserDetails
{
UserDisplayName = "Testy McTester",
UserId = 666
};
var generalIdRef = new GeneralIdRef
{
Guid = new Guid("{8A909C67-BC70-4FE2-8B5A-B5799B8E9E98}")
};
GlossariesManagerRepository.Glossaries.Add(new Glossary
{
Id = 1,
Guid = generalIdRef.Guid.Value,
Deleted = false
});
// Act
await GlossariesManager.DeleteGlossaryItem(auditUserDetails, generalIdRef, default);
//Assert
Assert.That(GlossariesManagerRepository.Glossaries[0].Deleted, Is.True);
}
[Test]
public async Task DeleteGlossaryItem_ItemHasChildren_ChildrenAreAlsoDeleted()
{
//Arrange
var auditUserDetails = new AuditUserDetails
{
UserDisplayName = "Testy McTester",
UserId = 666
};
var generalIdRef = new GeneralIdRef
{
Guid = new Guid("{8A909C67-BC70-4FE2-8B5A-B5799B8E9E98}")
};
var parentItem = new Glossary
{
Id = 1,
Guid = generalIdRef.Guid.Value,
Deleted = false
};
GlossariesManagerRepository.Glossaries.Add(parentItem);
var unrelatedItem = new Glossary
{
Id = 2,
Guid = new Guid("{FF497364-1AB6-4316-9CB7-B27D06B5A469}"),
Deleted = false
};
GlossariesManagerRepository.Glossaries.Add(unrelatedItem);
var childItem = new Glossary
{
Id = 3,
Guid = new Guid("{902958C9-0D46-458D-98A1-ED9602706FEF}"),
Deleted = false,
ParentId = parentItem.Id,
Parent = parentItem
};
GlossariesManagerRepository.Glossaries.Add(childItem);
var grandChild = new Glossary
{
Id = 4,
Guid = new Guid("{72CD4B61-1EDB-494E-91FE-3A40AEC3FEC3}"),
Deleted = false,
ParentId = childItem.Id,
Parent = childItem
};
GlossariesManagerRepository.Glossaries.Add(grandChild);
// Act
await GlossariesManager.DeleteGlossaryItem(auditUserDetails, generalIdRef, default);
//Assert
Assert.That(GlossariesManagerRepository.Glossaries[0].Deleted, Is.True);
Assert.That(GlossariesManagerRepository.Glossaries[1].Deleted, Is.False);
Assert.That(GlossariesManagerRepository.Glossaries[2].Deleted, Is.True);
Assert.That(GlossariesManagerRepository.Glossaries[3].Deleted, Is.True);
}
}