mesa-fab-approval/Fab2ApprovalTests/DMO/EngineeringChangeNoticeDMOTests.cs
Phares Mike (CSC FI SPS MESLEO) 55d3a96228 Merged PR 12196: Alphabetize Category List -ECN Module
Moved pipeline to align with other projects in same repo

Changed MSBuild task to be specific and added new MSBuild Release task

Sort GetCategories on CategoryName

Added comments back from feature 135470

Added ItemGroup to allow testing internal methods

Testing for internal methods

Related work items: #135470, #238416
2025-03-05 19:27:20 +01:00

120 lines
6.8 KiB
C#

using System;
using System.Linq;
using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.ViewModels;
using Microsoft.AspNetCore.Mvc.Testing;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace Fab2ApprovalTests.DMO;
[TestClass]
public class EngineeringChangeNoticeDMOTests {
#pragma warning disable CS8618
private static ILogger? _Logger;
private static TestContext _TestContext;
private static WebApplicationFactory<Fab2ApprovalMKLink.Program> _WebApplicationFactory;
#pragma warning restore
public static void SetGlobalVars(ILogger? logger, AppSettings appSettings) {
logger?.LogDebug("Starting to set Fab2ApprovalSystem.Misc.GlobalVars");
Fab2ApprovalSystem.Misc.GlobalVars.AppSettings = appSettings;
Fab2ApprovalSystem.Misc.GlobalVars.AttachmentUrl = appSettings.AttachmentUrl is null ? string.Empty : appSettings.AttachmentUrl;
Fab2ApprovalSystem.Misc.GlobalVars.CA_BlankFormsLocation = appSettings.CABlankFormsLocation;
Fab2ApprovalSystem.Misc.GlobalVars.DBConnection = appSettings.DBConnection;
Fab2ApprovalSystem.Misc.GlobalVars.DB_CONNECTION_STRING = appSettings.DBConnectionString;
Fab2ApprovalSystem.Misc.GlobalVars.hostURL = appSettings.HostURL;
Fab2ApprovalSystem.Misc.GlobalVars.IS_INFINEON_DOMAIN = appSettings.IsInfineonDomain;
Fab2ApprovalSystem.Misc.GlobalVars.MesaTemplateFiles = appSettings.MesaTemplateFiles;
Fab2ApprovalSystem.Misc.GlobalVars.NDriveURL = appSettings.NDriveURL;
Fab2ApprovalSystem.Misc.GlobalVars.SENDER_EMAIL = appSettings.SenderEmail;
Fab2ApprovalSystem.Misc.GlobalVars.USER_ID = appSettings.UserId;
Fab2ApprovalSystem.Misc.GlobalVars.USER_ISADMIN = appSettings.UserIsAdmin;
Fab2ApprovalSystem.Misc.GlobalVars.WSR_URL = appSettings.WSR_URL;
logger?.LogDebug("Finished setting Fab2ApprovalSystem.Misc.GlobalVars");
}
[ClassInitialize]
public static void ClassInitAsync(TestContext testContext) {
_TestContext = testContext;
_WebApplicationFactory = new WebApplicationFactory<Fab2ApprovalMKLink.Program>();
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
_Logger = serviceProvider.GetRequiredService<ILogger<Fab2ApprovalMKLink.Program>>();
}
private static void NonThrowTryCatch() {
try { throw new Exception(); } catch (Exception) { }
}
private static void EngineeringChangeNoticeDMO(ILogger? logger, AppSettings appSettings, int maxDays, int ecnNumber) {
#pragma warning disable IDE0059
SetGlobalVars(logger, appSettings);
ECN_DMO ecnDMO = new();
ECN ecn = ecnDMO.GetECN(ecnNumber);
// void CancelECN(int? ecnNumber);
bool canSubmitECN = ecnDMO.CanSubmitECN(ecnNumber);
// void DeleteDocument(int ecnNumber, appSettings.UserId, string ecnTypeString);
// void DeleteECNAttachment(int attachmentID);
// bool ECNApproveCancelled_ExpiredDocument(int issueID, byte step, string comments, out bool lastStep, appSettings.UserId, int documentType);
// void ECNResetTECNAtRejection(int ecnNumber, appSettings.UserId, int docType);
IssuesViewModel[] issuesViewModels = ecnDMO.GetAllTECNs().ToArray();
ApprovalLogHistory[] approvalLogHistories = ecnDMO.GetECNApprovalLogHistory(ecnNumber).ToArray();
ECNAttachment[] eCNAttachments = ecnDMO.GetECNAttachments(ecnNumber).ToArray();
IssuesViewModel[] issuesViewModelsB = ecnDMO.GetECN_TECNPendingApprovals(appSettings.UserId).ToArray();
// string GetFileName(string attachmentID);
IssuesViewModel[] issuesViewModelsC = ecnDMO.GetMyConvertedTECNsToECNs(appSettings.UserId, maxDays).ToArray();
IssuesViewModel[] issuesViewModelsD = ecnDMO.GetMyExpiredTECNs(appSettings.UserId, maxDays).ToArray();
IssuesViewModel[] issuesViewModelsE = ecnDMO.GetMyExpiringTECNs(appSettings.UserId, maxDays).ToArray();
// List<string> GetRejectionOrginatorEmailList(int ecnNumber);
int[] ints = ecnDMO.GetTECNNotificationUsers().ToArray();
// void InsertECNAttachment(ECNAttachment attach);
// int PCRBExists(int pcrb);
// void ReassignOriginatorECN(int ecnNumber, int newOriginatorID, string comments, appSettings.UserId);
// void ReleaseLockOnDocument(appSettings.UserId, int issueID);
// int ReSubmitDocument(int issueID, appSettings.UserId, int documentType, out int allowedITAR, string descriptionOfChange, string reasonForChange, string ecnTypeString, out int newECNNumber, int categoryId);
// void SaveAfterSubmitByApprover(int ecnNumber, string implementationDetails);
// void SetToExecutionStep(int ecnNumber, appSettings.UserId, int documentType, string ecnTypeString);
// int SubmitDocument(int issueID, appSettings.UserId, int documentType, out int allowedITAR);
// int SubmitForCancellation(int issueID, byte currentStep, appSettings.UserId, int documentType, string ecnType, int TECNOperationType);
// int SubmitTECNExtensionDocument(int issueID, appSettings.UserId, int documentType, DateTime extensionDate);
// void TECNExtensionLog(int ecnNumber, DateTime extensionDate);
// void UpdateECNType(int ecnNumber, string ecnType);
// ECN InsertECN(ECN ecn)
// void UpdateECN(ECN ecn)
// ECN GetECN(int ecnNumber, out int isITAR, int userID)
// ECN GetECNForRead(int ecnNumber, out int isITAR, int userID)
// ECNPdf GetECNPdf(int ecnNumber)
ECNAffectedDeparmtent[] departments = ecnDMO.GetDepartments().ToArray();
ECNAffectedModule[] modules = ecnDMO.GetModules().ToArray();
ECNCategory[] categories = ecnDMO.GetCategories().ToArray();
ECNArea[] eCNAreas = ecnDMO.GetECNAreas().ToArray();
ECNTechnology[] eCNTechnologies = ecnDMO.GetECNTechnologies().ToArray();
ECNAcknowledgementTrainingBy[] eCNAcknowledgementTrainingBy = ecnDMO.GetECNAcknowledgementTrainingBy().ToArray();
ProductFamilies[] productFamilies = ecnDMO.GetProductFamilies().ToArray();
if (ecnDMO is null) { }
#pragma warning restore IDE0059
}
#if Release
[Ignore]
#endif
[TestMethod]
[DataRow(1, 82700)]
public void EngineeringChangeNoticeIsAttachedOnlyDMO(int maxDays, int ecnNumber) {
_Logger?.LogInformation("Starting Web Application");
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
AppSettings? appSettings = serviceProvider?.GetRequiredService<AppSettings>();
Assert.IsTrue(appSettings is not null);
if (System.Diagnostics.Debugger.IsAttached)
EngineeringChangeNoticeDMO(_Logger, appSettings, maxDays, ecnNumber);
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
NonThrowTryCatch();
}
}