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 _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(); IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; _Logger = serviceProvider.GetRequiredService>(); } 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 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(); Assert.IsTrue(appSettings is not null); if (System.Diagnostics.Debugger.IsAttached) EngineeringChangeNoticeDMO(_Logger, appSettings, maxDays, ecnNumber); _Logger?.LogInformation("{TestName} completed", _TestContext?.TestName); NonThrowTryCatch(); } }