using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using OI.Metrology.Archive.Repositories; using OI.Metrology.Shared.Models; using OI.Metrology.Shared.Repositories; using OI.Metrology.Tests.Models; using Serilog; using System.Reflection; using System.Text.Json; namespace OI.Metrology.Tests; [TestClass] public class UnitTestArchive { private readonly ILogger _Logger; private readonly AppSettings _AppSettings; private readonly string _WorkingDirectory; private readonly IMemoryCache? _MemoryCache; private readonly IConfigurationRoot _ConfigurationRoot; public UnitTestArchive() { 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(); logger.Information("Complete"); ServiceCollection services = new(); ServiceProvider serviceProvider = services.BuildServiceProvider(); _ = services.AddMemoryCache(); _MemoryCache = serviceProvider.GetService(); _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 TestMethodArchive() { Assert.IsFalse(_Logger is null); Assert.IsFalse(_AppSettings is null); Assert.IsFalse(_WorkingDirectory is null); Assert.IsFalse(_ConfigurationRoot is null); } [TestMethod] public void TestMethodArchiveJson() { string json; string jsonFile = Path.Combine(AppContext.BaseDirectory, "RdsMaxRepo.json"); Assert.IsTrue(File.Exists(jsonFile)); json = JsonSerializer.Serialize(_AppSettings); IDbConnectionFactory dbConnectionFactory = new SQLDbConnectionFactory(json); IRdsMaxRepo rdsMaxRepo = new RdsMaxRepo(dbConnectionFactory, _MemoryCache); json = File.ReadAllText(jsonFile); Shared.DataModels.RDS.Max[]? collection = JsonSerializer.Deserialize(json); if (collection is null) throw new NullReferenceException(nameof(collection)); List data = rdsMaxRepo.Convert(collection); Assert.IsTrue(data.Any()); } }