70 lines
4.5 KiB
C#
70 lines
4.5 KiB
C#
using Mesa_Backlog.Library;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.VisualStudio.Services.Common;
|
|
using Microsoft.VisualStudio.Services.WebApi;
|
|
using Serilog;
|
|
using System.Diagnostics;
|
|
using System.Reflection;
|
|
using WebApi = Microsoft.TeamFoundation.WorkItemTracking.WebApi;
|
|
|
|
namespace Mesa_Backlog.MS_Test;
|
|
|
|
[TestClass]
|
|
public class AE_UnitTestWorkItemTrackingHttpClient
|
|
{
|
|
|
|
private readonly ILogger _Logger;
|
|
private readonly AppSettings _AppSettings;
|
|
private readonly string _WorkingDirectory;
|
|
private readonly IsEnvironment _IsEnvironment;
|
|
private readonly IConfigurationRoot _ConfigurationRoot;
|
|
private readonly WebApi.WorkItemTrackingHttpClient _WorkItemTrackingHttpClient;
|
|
|
|
public AE_UnitTestWorkItemTrackingHttpClient()
|
|
{
|
|
ILogger logger;
|
|
AppSettings appSettings;
|
|
string workingDirectory;
|
|
IConfigurationRoot configurationRoot;
|
|
LoggerConfiguration loggerConfiguration = new();
|
|
Assembly assembly = Assembly.GetExecutingAssembly();
|
|
bool debuggerWasAttachedAtLineZero = Debugger.IsAttached || assembly.Location.Contains(@"\bin\Debug");
|
|
IsEnvironment isEnvironment = new(processesCount: null, nullASPNetCoreEnvironmentIsDevelopment: debuggerWasAttachedAtLineZero, nullASPNetCoreEnvironmentIsProduction: !debuggerWasAttachedAtLineZero);
|
|
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder()
|
|
.AddEnvironmentVariables()
|
|
.AddJsonFile(isEnvironment.AppSettingsFileName);
|
|
configurationRoot = configurationBuilder.Build();
|
|
appSettings = Library.Binder.AppSettings.Get(configurationRoot);
|
|
workingDirectory = IWorkingDirectory.GetWorkingDirectory(assembly.GetName().Name, appSettings.WorkingDirectoryName);
|
|
Environment.SetEnvironmentVariable(nameof(workingDirectory), workingDirectory);
|
|
_ = ConfigurationLoggerConfigurationExtensions.Configuration(loggerConfiguration.ReadFrom, configurationRoot);
|
|
Log.Logger = loggerConfiguration.CreateLogger();
|
|
logger = Log.ForContext<AE_UnitTestWorkItemTrackingHttpClient>();
|
|
logger.Information("Complete");
|
|
_Logger = logger;
|
|
_AppSettings = appSettings;
|
|
_IsEnvironment = isEnvironment;
|
|
_WorkingDirectory = workingDirectory;
|
|
_ConfigurationRoot = configurationRoot;
|
|
VssBasicCredential credential = new("", appSettings.Client.PAT);
|
|
VssConnection connection = new(new(string.Concat(appSettings.Client.BaseAddress, appSettings.Client.BasePage)), credential);
|
|
_WorkItemTrackingHttpClient = connection.GetClient<WebApi.WorkItemTrackingHttpClient>();
|
|
|
|
}
|
|
|
|
[TestMethod]
|
|
public void TestMethodWorkItemTrackingHttpClient()
|
|
{
|
|
Assert.IsFalse(_WorkingDirectory is null);
|
|
Assert.IsFalse(_ConfigurationRoot is null);
|
|
string json = "{\r\n \"Req \": \"642\",\r\n \"Submitted\": \"7/19/2022 12:00:00 AM\",\r\n \"Requestor\": \"Susan H\",\r\n \"Assigned To \": \"Jonathan\",\r\n \"Second Resource\": \"\",\r\n \"Title\": \"Reactor Log Form -\\u003E Reactor Item tracking validation is not catching everything. Allowing invalid reactor items to be tracked. Not requiring that a react item be created before being logged\",\r\n \"Epi Line\": \"\",\r\n \"Area\": \"\",\r\n \"System(s)\": \"OI\",\r\n \"Pri Sort\": \"0\",\r\n \"Priority\": \"BugFix\",\r\n \"Status\": \"Open\",\r\n \"Definition\": \"\",\r\n \"Updates\": \"7/21/22 - data entry/validation issue. Will be done in conjunction with Equip Maint web UI\\u003Cbr /\\u003E7/19/22 - Added by JRO\",\r\n \"Est Effort _(days)\": \"1\",\r\n \"Commit Date \": \"\",\r\n \"Re-Commit Date \": \"\",\r\n \"UAT as of \": \"\",\r\n \"CMPDate\": null,\r\n \"F20\": \"\",\r\n \"F21\": \"\",\r\n \"F22\": \"\",\r\n \"F23\": \"\",\r\n \"F24\": \"\",\r\n \"F25\": \"\",\r\n \"F26\": \"\",\r\n \"F27\": \"\",\r\n \"F28\": \"\",\r\n \"F29\": \"\",\r\n \"F30\": \"\",\r\n \"F31\": \"\",\r\n \"F32\": \"\",\r\n \"F33\": \"\"\r\n }";
|
|
FIBacklogMesa? fIBacklogMesa = System.Text.Json.JsonSerializer.Deserialize<FIBacklogMesa>(json);
|
|
Assert.IsNotNull(fIBacklogMesa);
|
|
_Logger.Information(fIBacklogMesa.ToString());
|
|
Task<WebApi.Models.WorkItem> workItemTask = WorkItemTrackingHttpClient.CreateWorkItem(_IsEnvironment.Development, _WorkItemTrackingHttpClient, _AppSettings.Client.Project, fIBacklogMesa);
|
|
workItemTask.Wait();
|
|
if (workItemTask.Result is null)
|
|
throw new NullReferenceException(nameof(workItemTask.Result));
|
|
}
|
|
|
|
} |