Ready to beta test

This commit is contained in:
2022-08-26 15:40:05 -07:00
parent 121c0c4d0c
commit b3e643c221
90 changed files with 5023 additions and 20 deletions

View File

@ -0,0 +1,52 @@
using Mesa_Backlog.Library;
using Microsoft.Extensions.Configuration;
using Serilog;
using System.Reflection;
namespace Mesa_Backlog.Tests;
[TestClass]
public class AA_UnitTestExample
{
private readonly ILogger _Logger;
private readonly AppSettings _AppSettings;
private readonly string _WorkingDirectory;
private readonly IConfigurationRoot _ConfigurationRoot;
public AA_UnitTestExample()
{
ILogger logger;
AppSettings appSettings;
string workingDirectory;
IConfigurationRoot configurationRoot;
LoggerConfiguration loggerConfiguration = new();
Assembly assembly = Assembly.GetExecutingAssembly();
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder()
.AddEnvironmentVariables()
.AddJsonFile("appsettings.Development.json");
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<AA_UnitTestExample>();
logger.Information("Complete");
_Logger = logger;
_AppSettings = appSettings;
_WorkingDirectory = workingDirectory;
_ConfigurationRoot = configurationRoot;
}
[TestMethod]
public void TestMethodNull()
{
Assert.IsFalse(_Logger is null);
Assert.IsFalse(_AppSettings is null);
Assert.IsFalse(_WorkingDirectory is null);
Assert.IsFalse(_ConfigurationRoot is null);
Assert.IsFalse(string.IsNullOrEmpty(_AppSettings.ToString()));
}
}

View File

@ -0,0 +1,102 @@
using Mesa_Backlog.Library;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
using Serilog;
using System.Diagnostics;
using System.Reflection;
namespace Mesa_Backlog.MS_Test;
[TestClass]
public class AB_UnitTestIsEnvironment
{
private readonly ILogger _Logger;
private readonly AppSettings _AppSettings;
private readonly string _WorkingDirectory;
private readonly IsEnvironment _IsEnvironment;
private readonly IConfigurationRoot _ConfigurationRoot;
public AB_UnitTestIsEnvironment()
{
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<AB_UnitTestIsEnvironment>();
logger.Information("Complete");
_Logger = logger;
_AppSettings = appSettings;
_IsEnvironment = isEnvironment;
_WorkingDirectory = workingDirectory;
_ConfigurationRoot = configurationRoot;
}
[TestMethod]
public void TestMethodNull()
{
Assert.IsFalse(_Logger is null);
Assert.IsFalse(_AppSettings is null);
Assert.IsFalse(_IsEnvironment is null);
Assert.IsFalse(_WorkingDirectory is null);
Assert.IsFalse(_ConfigurationRoot is null);
}
[TestMethod]
public void TestMethodTesta()
{
List<string> jsonFiles = new();
foreach (IConfigurationProvider configurationProvider in _ConfigurationRoot.Providers)
{
if (configurationProvider is not JsonConfigurationProvider jsonConfigurationProvider)
continue;
jsonFiles.Add(jsonConfigurationProvider.Source.Path);
}
Assert.IsTrue(jsonFiles.Any());
foreach (string jsonFile in jsonFiles)
_ = new IsEnvironment(jsonFile);
}
[TestMethod]
[TestCategory(nameof(IsEnvironment.Name.WindowsDevelopment))]
public void TestMethodTestCategory()
{
MethodBase? methodBase = new StackFrame().GetMethod();
Assert.IsNotNull(methodBase);
TestCategoryAttribute? testCategoryAttribute = methodBase.GetCustomAttribute<TestCategoryAttribute>();
Assert.IsNotNull(testCategoryAttribute);
foreach (string testCategory in testCategoryAttribute.TestCategories)
_ = new IsEnvironment(testCategory);
}
[TestMethod]
public void TestMethodHardcoded()
{
_ = new IsEnvironment(isDevelopment: true, isStaging: false, isProduction: false);
_ = new IsEnvironment(isDevelopment: false, isStaging: true, isProduction: false);
_ = new IsEnvironment(isDevelopment: false, isStaging: false, isProduction: true);
}
[TestMethod]
public void TestMethodAssembly()
{
Assembly assembly = Assembly.GetExecutingAssembly();
bool debuggerWasAttachedAtLineZero = Debugger.IsAttached || assembly.Location.Contains(@"\bin\Debug");
IsEnvironment isEnvironment = new(processesCount: null, nullASPNetCoreEnvironmentIsDevelopment: debuggerWasAttachedAtLineZero, nullASPNetCoreEnvironmentIsProduction: !debuggerWasAttachedAtLineZero);
_ = IsEnvironment.GetEnvironmentName(isEnvironment);
}
}

View File

@ -0,0 +1,54 @@
using Mesa_Backlog.Library;
using Microsoft.Extensions.Configuration;
using Serilog;
using System.Reflection;
namespace Mesa_Backlog.MS_Test;
[TestClass]
public class AC_UnitTestExcelReader
{
private readonly ILogger _Logger;
private readonly AppSettings _AppSettings;
private readonly string _WorkingDirectory;
private readonly IConfigurationRoot _ConfigurationRoot;
public AC_UnitTestExcelReader()
{
ILogger logger;
AppSettings appSettings;
string workingDirectory;
IConfigurationRoot configurationRoot;
LoggerConfiguration loggerConfiguration = new();
Assembly assembly = Assembly.GetExecutingAssembly();
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder()
.AddEnvironmentVariables()
.AddJsonFile("appsettings.Development.json");
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<AC_UnitTestExcelReader>();
logger.Information("Complete");
_Logger = logger;
_AppSettings = appSettings;
_WorkingDirectory = workingDirectory;
_ConfigurationRoot = configurationRoot;
}
[TestMethod, Ignore]
public void TestMethodExcelReader()
{
Assert.IsFalse(_WorkingDirectory is null);
Assert.IsFalse(_ConfigurationRoot is null);
string json = ExcelReader.GetJson(_AppSettings.Excel.SourceFile, _AppSettings.Excel.Sheet);
FIBacklogMesa[] fIBacklogMesaCollection = ExcelReader.GetFIBacklogMesaCollection(json);
_Logger.Information(string.Concat(fIBacklogMesaCollection.Length, " row(s)"));
json = ExcelReader.GetJson(fIBacklogMesaCollection);
File.WriteAllText(_AppSettings.Excel.TargetFile, json);
}
}

View File

@ -0,0 +1,68 @@
using Mesa_Backlog.Library;
using Microsoft.Extensions.Configuration;
using Serilog;
using System.Net.Http.Headers;
using System.Reflection;
using System.Text;
using Http = System.Net.Http;
namespace Mesa_Backlog.MS_Test;
[TestClass]
public class AD_UnitTestHttpClient
{
private readonly ILogger _Logger;
private readonly AppSettings _AppSettings;
private readonly string _WorkingDirectory;
private readonly IConfigurationRoot _ConfigurationRoot;
private readonly Http.HttpClient _HttpClient;
public AD_UnitTestHttpClient()
{
ILogger logger;
AppSettings appSettings;
string workingDirectory;
IConfigurationRoot configurationRoot;
LoggerConfiguration loggerConfiguration = new();
Assembly assembly = Assembly.GetExecutingAssembly();
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder()
.AddEnvironmentVariables()
.AddJsonFile("appsettings.Development.json");
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<AD_UnitTestHttpClient>();
logger.Information("Complete");
_Logger = logger;
_AppSettings = appSettings;
_WorkingDirectory = workingDirectory;
_ConfigurationRoot = configurationRoot;
byte[] bytes = Encoding.ASCII.GetBytes($":{_AppSettings.Client.PAT}");
string base64 = Convert.ToBase64String(bytes);
_HttpClient = new() { BaseAddress = new(_AppSettings.Client.BaseAddress) };
_HttpClient.DefaultRequestHeaders.Authorization = new("Basic", base64);
MediaTypeWithQualityHeaderValue mediaTypeWithQualityHeaderValue = new("application/json");
_HttpClient.DefaultRequestHeaders.Accept.Add(mediaTypeWithQualityHeaderValue);
}
[TestMethod]
public void TestMethodHttpClient()
{
Library.WorkItems.Root workItem;
Assert.IsFalse(_WorkingDirectory is null);
Assert.IsFalse(_ConfigurationRoot is null);
Library.WIQL.WorkItem[] workItems = Library.HttpClient.GetWorkItems(_HttpClient, _AppSettings.Client.BasePage, _AppSettings.Client.API, _AppSettings.Client.Query);
_Logger.Information(string.Concat(workItems, " item(s)"));
for (int i = 0; i < workItems.Length; i++)
{
workItem = Library.HttpClient.GetWorkItem(_HttpClient, _AppSettings.Client.BasePage, _AppSettings.Client.API, workItems[i].Id);
if (workItem is not null)
break;
}
}
}

View File

@ -0,0 +1,70 @@
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));
}
}

View File

@ -0,0 +1,47 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
<IsPackable>false</IsPackable>
<LangVersion>10.0</LangVersion>
<Nullable>enable</Nullable>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<VSTestLogger>trx</VSTestLogger>
<VSTestCollect>XPlat Code Coverage</VSTestCollect>
<VSTestResultsDirectory>../.vscode/TestResults</VSTestResultsDirectory>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MSTest.TestAdapter" Version="2.2.8" />
<PackageReference Include="MSTest.TestFramework" Version="2.2.8" />
<PackageReference Include="coverlet.collector" Version="3.1.2" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.3.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
<PackageReference Include="Serilog" Version="2.10.0" />
</ItemGroup>
<ItemGroup>
<None Include="..\appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="..\appsettings.Staging.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="..\appsettings.Development.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="..\.vscode\Source\FI Backlog Mesa.xlsx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="..\.vscode\Source\FI Backlog Mesa.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\classlib\Mesa-Backlog.Library.csproj" />
</ItemGroup>
</Project>

1
mstest/Usings.cs Normal file
View File

@ -0,0 +1 @@
global using Microsoft.VisualStudio.TestTools.UnitTesting;