104 lines
4.0 KiB
C#
104 lines
4.0 KiB
C#
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Configuration.Json;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using Phares.Shared;
|
|
using Serilog;
|
|
using System.Diagnostics;
|
|
using System.Reflection;
|
|
using View_by_Distance.Shared.Models.Stateless.Methods;
|
|
using View_by_Distance.Tests.Models;
|
|
|
|
namespace View_by_Distance.Tests;
|
|
|
|
[TestClass]
|
|
public class UnitTestIsEnvironment
|
|
{
|
|
|
|
private readonly ILogger _Logger;
|
|
private readonly AppSettings _AppSettings;
|
|
private readonly string _WorkingDirectory;
|
|
private readonly IConfigurationRoot _ConfigurationRoot;
|
|
|
|
public UnitTestIsEnvironment()
|
|
{
|
|
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 = Models.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<UnitTestIsEnvironment>();
|
|
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);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void TestMethodTest()
|
|
{
|
|
List<string> jsonFiles = new();
|
|
foreach (IConfigurationProvider configurationProvider in _ConfigurationRoot.Providers)
|
|
{
|
|
if (configurationProvider is not JsonConfigurationProvider jsonConfigurationProvider || jsonConfigurationProvider.Source.Path is null)
|
|
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();
|
|
if (methodBase is not null)
|
|
{
|
|
TestCategoryAttribute? testCategoryAttribute = methodBase.GetCustomAttribute<TestCategoryAttribute>();
|
|
if (testCategoryAttribute is not null)
|
|
{
|
|
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);
|
|
}
|
|
|
|
} |