mesa-backlog/mstest/AE_UnitTestWorkItemTrackingHttpClient.cs
2022-08-26 15:40:05 -07:00

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));
}
}