using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.Extensions.DependencyInjection; using OI.Metrology.Shared.Models.Stateless; using OI.Metrology.Shared.Services; using Serilog; using System.Net.Http.Json; namespace OI.Metrology.Tests; [TestClass] public class UnitTestToolTypesController { #pragma warning disable CS8618 private static ILogger _Logger; private static string _ControllerName; private static TestContext _TestContext; private static WebApplicationFactory _WebApplicationFactory; #pragma warning restore [ClassInitialize] public static void ClassInitAsync(TestContext testContext) { _TestContext = testContext; _Logger = Log.ForContext(); _WebApplicationFactory = new WebApplicationFactory(); _ControllerName = nameof(Viewer.ApiControllers.ToolTypesController)[..^10]; } [TestMethod] public void TestControllerName() { _Logger.Information("Starting Web Application"); Assert.AreEqual(IToolTypesController.GetRouteName(), _ControllerName); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public void Index() { _Logger.Information("Starting Web Application"); IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService(); IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService(); object @object = toolTypesRepository.Index(metrologyRepository); Assert.IsTrue(@object is not null); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public async Task IndexApi() { HttpClient httpClient = _WebApplicationFactory.CreateClient(); _Logger.Information("Starting Web Application"); _ = await httpClient.GetFromJsonAsync($"api/{_ControllerName}"); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public void GetToolTypeMetadata() { _Logger.Information("Starting Web Application"); IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService(); IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService(); object @object = toolTypesRepository.GetToolTypeMetadata(metrologyRepository, id: 0, sortby: string.Empty); Assert.IsTrue(@object is not null); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public async Task GetToolTypeMetadataApi() { HttpClient httpClient = _WebApplicationFactory.CreateClient(); _Logger.Information("Starting Web Application"); _ = await httpClient.GetFromJsonAsync($"api/{_ControllerName}/0"); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public void GetHeaders() { _Logger.Information("Starting Web Application"); IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService(); IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService(); string json = toolTypesRepository.GetHeaders(metrologyRepository, id: 0, datebegin: null, dateend: null, page: null, pagesize: null, headerid: null); Assert.IsTrue(json is not null); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public async Task GetHeadersApi() { HttpClient httpClient = _WebApplicationFactory.CreateClient(); _Logger.Information("Starting Web Application"); _ = await httpClient.GetFromJsonAsync($"api/{_ControllerName}/0/headers"); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public void GetHeaderTitles() { _Logger.Information("Starting Web Application"); IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService(); IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService(); string json = toolTypesRepository.GetHeaderTitles(metrologyRepository, id: 0, page: null, pagesize: null); Assert.IsTrue(json is not null); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public async Task GetHeaderTitlesApi() { HttpClient httpClient = _WebApplicationFactory.CreateClient(); _Logger.Information("Starting Web Application"); _ = await httpClient.GetFromJsonAsync($"api/{_ControllerName}/0/headertitles"); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public void GetHeaderFields() { _Logger.Information("Starting Web Application"); IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService(); IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService(); string json = toolTypesRepository.GetHeaderFields(metrologyRepository, id: 0, headerid: 0); Assert.IsTrue(json is not null); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public async Task GetHeaderFieldsApi() { HttpClient httpClient = _WebApplicationFactory.CreateClient(); _Logger.Information("Starting Web Application"); _ = await httpClient.GetFromJsonAsync($"api/{_ControllerName}/0/headers/0/fields"); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public void GetData() { _Logger.Information("Starting Web Application"); IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService(); IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService(); string json = toolTypesRepository.GetData(metrologyRepository, id: 0, headerid: 0); Assert.IsTrue(json is not null); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public async Task GetDataApi() { HttpClient httpClient = _WebApplicationFactory.CreateClient(); _Logger.Information("Starting Web Application"); _ = await httpClient.GetFromJsonAsync($"api/{_ControllerName}/0/headers/data"); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public void GetAttachment() { _Logger.Information("Starting Web Application"); IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IAttachmentsService attachmentsService = serviceProvider.GetRequiredService(); IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService(); IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService(); (string? message, string? _, Stream? _) = toolTypesRepository.GetAttachment(metrologyRepository, attachmentsService, toolTypeId: 0, string.Empty, string.Empty, string.Empty); Assert.IsTrue(message is null); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public async Task GetAttachmentApi() { HttpClient httpClient = _WebApplicationFactory.CreateClient(); _Logger.Information("Starting Web Application"); _ = await httpClient.GetFromJsonAsync($"api/{_ControllerName}/0/0/files/0/a.txt"); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public void OIExport() { _Logger.Information("Starting Web Application"); IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider; IMetrologyRepository metrologyRepository = serviceProvider.GetRequiredService(); IToolTypesRepository toolTypesRepository = serviceProvider.GetRequiredService(); Viewer.Models.AppSettings appSettings = serviceProvider.GetRequiredService(); Exception? exception = toolTypesRepository.OIExport(metrologyRepository, appSettings.OIExportPath, toolTypeId: 0, headerid: 0); Assert.IsTrue(exception is null); _Logger.Information($"{_TestContext?.TestName} completed"); } [TestMethod] public async Task OIExportApi() { HttpClient httpClient = _WebApplicationFactory.CreateClient(); _Logger.Information("Starting Web Application"); _ = await httpClient.GetFromJsonAsync($"api/{_ControllerName}/0/headers/0/oiexport"); _Logger.Information($"{_TestContext?.TestName} completed"); } }