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

143 lines
4.4 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.Forms;
using e_suite.Database.Core.Tables.Printer;
using e_suite.Modules.SpecificationManager.UnitTests.Helpers;
using eSuite.Core.Miscellaneous;
using Moq;
using NUnit.Framework;
namespace e_suite.Modules.SpecificationManager.UnitTests;
[TestFixture]
public class CreateSpecificationUnitTests : SpecificationManagerTestBase
{
[SetUp]
public override async Task Setup()
{
await base.Setup();
}
[Test]
public void CreateSpecification_WhenSiteNotFound_ThrowsNotFoundException()
{
//Arrange
var auditUserDetails = new AuditUserDetails
{
UserId = 234523,
UserDisplayName = "Testy McTester",
Comment = string.Empty
};
var createSpecification = new CreateSpecification
{
Site = new GeneralIdRef()
};
//Assert
var actualResult = Assert.ThrowsAsync<NotFoundException>(async () =>
{
//Act
await SpecificationManager.CreateSpecification(auditUserDetails, createSpecification, true, CancellationToken.None);
});
Assert.That(actualResult!.Message, Is.EqualTo("Site not found"));
}
[Test]
public void CreateSpecification_WhenFormInstanceNotFound_ThrowsNotFoundException()
{
//Arrange
var auditUserDetails = new AuditUserDetails
{
UserId = 234523,
UserDisplayName = "Testy McTester",
Comment = string.Empty
};
var site = new Site
{
Guid = new Guid("fbbaa30c-aaa8-4d21-8d00-898bbfdd6b74"),
Id = 235,
Name = "Bun Fight Factory"
};
SiteManagerRepository.Sites.Add( site);
var createSpecification = new CreateSpecification
{
Site = new GeneralIdRef
{
Guid = site.Guid
},
FormInstanceId = new GeneralIdRef()
};
//Assert
var actualResult = Assert.ThrowsAsync<NotFoundException>(async () =>
{
//Act
await SpecificationManager.CreateSpecification(auditUserDetails, createSpecification, true, CancellationToken.None);
});
Assert.That(actualResult!.Message, Is.EqualTo("Form instance not found"));
}
[Test]
public async Task CreateSpecification_WhenEverythingFound_CreatesSpecification()
{
//Arrange
var auditUserDetails = new AuditUserDetails
{
UserId = 234523,
UserDisplayName = "Testy McTester",
Comment = string.Empty
};
var site = new Site
{
Guid = new Guid("fbbaa30c-aaa8-4d21-8d00-898bbfdd6b74"),
Id = 235,
Name = "Bun Fight Factory"
};
SiteManagerRepository.Sites.Add(site);
var formInstance = new FormInstance
{
Guid = new Guid("cb3a91c8-9419-4815-9d52-d0f82946e5ef"),
Id = 321412433
};
FormRepository.FormInstances.Add(formInstance);
var createSpecification = new CreateSpecification
{
Guid = new Guid("e2f0165d-64b0-4bf7-a06a-a9c268cbb72e"),
Name = "My new specification",
Site = new GeneralIdRef
{
Guid = site.Guid
},
FormInstanceId = new GeneralIdRef
{
Guid = formInstance.Guid
}
};
//Act
await SpecificationManager.CreateSpecification(auditUserDetails, createSpecification, true, CancellationToken.None);
//Assert
Assert.Multiple(() =>
{
Assert.That(SpecificationManagerRepository.Specifications.Count, Is.EqualTo(1));
var actualResult = SpecificationManagerRepository.Specifications[0];
Assert.That(actualResult.Guid, Is.EqualTo(createSpecification.Guid));
Assert.That(actualResult.Name, Is.EqualTo(createSpecification.Name));
Assert.That(actualResult.Site.Guid, Is.EqualTo(site.Guid));
Assert.That(actualResult.Site.Id, Is.EqualTo(site.Id));
Assert.That(actualResult.FormInstanceId, Is.EqualTo(formInstance.Id));
Assert.That(actualResult.Deleted, Is.False);
EFlowSyncMessageSenderMock.Verify(x => x.SyncEFlowPrinterCategories(), Times.Once);
});
}
}