From 222b2155fd6b8230e29f9daf36356150090e3ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Zieli=C5=84ski?= Date: Sun, 8 Jun 2025 15:04:41 +0200 Subject: [PATCH] plugins test fix --- .github/workflows/build.yml | 14 +++++- src/Backend/DiunaBI.Tests/BaseTests.cs | 66 ++++++++++++++++++++++---- 2 files changed, 69 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 88e6909..e619de3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,15 +61,25 @@ jobs: mkdir -p ../../build/webapi/Plugins cp DiunaBI.Plugins.Morska/bin/Release/net8.0/DiunaBI.Plugins.Morska.dll ../../build/webapi/Plugins/ + - name: Build and prepare plugins + working-directory: src/Backend + run: | + dotnet build DiunaBI.Plugins.Morska/DiunaBI.Plugins.Morska.csproj --configuration Release + mkdir -p DiunaBI.Tests/bin/Release/net8.0/Plugins + cp DiunaBI.Plugins.Morska/bin/Release/net8.0/DiunaBI.Plugins.Morska.dll DiunaBI.Tests/bin/Release/net8.0/Plugins/ + cp DiunaBI.Plugins.Morska/bin/Release/net8.0/DiunaBI.Core.dll DiunaBI.Tests/bin/Release/net8.0/Plugins/ + echo "✅ Plugins copied to test directory:" + ls -la DiunaBI.Tests/bin/Release/net8.0/Plugins/ + - name: Run Tests working-directory: src/Backend run: | + dotnet add DiunaBI.Tests/DiunaBI.Tests.csproj package coverlet.collector dotnet test DiunaBI.Tests/DiunaBI.Tests.csproj \ --configuration Release \ --no-restore \ --logger "trx;LogFileName=test-results.trx" \ - --collect:"XPlat Code Coverage" \ - --filter "Category!=LocalOnly" + --collect:"XPlat Code Coverage" - name: Publish Test Results uses: actions/upload-artifact@v4 diff --git a/src/Backend/DiunaBI.Tests/BaseTests.cs b/src/Backend/DiunaBI.Tests/BaseTests.cs index ca366c5..6cdf5f3 100644 --- a/src/Backend/DiunaBI.Tests/BaseTests.cs +++ b/src/Backend/DiunaBI.Tests/BaseTests.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Mvc.Testing; using Xunit; +using Xunit.Abstractions; using System.Text.Json; namespace DiunaBI.Tests; @@ -7,21 +8,32 @@ namespace DiunaBI.Tests; public class ApiConnectionTests : IClassFixture> { private readonly WebApplicationFactory _factory; + private readonly ITestOutputHelper _output; - public ApiConnectionTests(WebApplicationFactory factory) + public ApiConnectionTests(WebApplicationFactory factory, ITestOutputHelper output) { _factory = factory; + _output = output; } [Fact] public async Task PingToApi() { + // Arrange var client = _factory.CreateClient(); + _output.WriteLine($"Test started: {nameof(PingToApi)}"); + // Act var response = await client.GetAsync("/api/Tests/Ping"); var content = await response.Content.ReadAsStringAsync(); var statusCode = (int)response.StatusCode; + // Debug info + _output.WriteLine($"Status Code: {statusCode}"); + _output.WriteLine($"Response Content: {content}"); + _output.WriteLine($"Headers: {string.Join(", ", response.Headers)}"); + + // Assert Assert.Equal(200, statusCode); Assert.Equal("Pong", content); } @@ -30,27 +42,63 @@ public class ApiConnectionTests : IClassFixture> [Trait("Category", "LocalOnly")] public async Task DatabaseConnectionTest() { + // Arrange var client = _factory.CreateClient(); + _output.WriteLine($"Test started: {nameof(DatabaseConnectionTest)}"); + // Act var response = await client.GetAsync("/api/Layers?start=0&limit=1"); var content = await response.Content.ReadAsStringAsync(); var statusCode = (int)response.StatusCode; + // Debug info + _output.WriteLine($"Status Code: {statusCode}"); + _output.WriteLine($"Response Content: {content}"); + _output.WriteLine($"Content Type: {response.Content.Headers.ContentType}"); + + // Assert Assert.Equal(200, statusCode); var layers = JsonSerializer.Deserialize(content); Assert.NotNull(layers); } - [Fact] - public async Task LoadPLuginsTest() - { - var client = _factory.CreateClient(); + [Fact] + public async Task LoadPluginsTest() + { + // Arrange + var client = _factory.CreateClient(); + _output.WriteLine($"Test started: {nameof(LoadPluginsTest)}"); + + // Debug info + var pluginsPath = Path.Combine(AppContext.BaseDirectory, "Plugins"); + _output.WriteLine($"Looking for plugins in: {pluginsPath}"); + if (Directory.Exists(pluginsPath)) + { + _output.WriteLine("Files in plugins directory:"); + foreach (var file in Directory.GetFiles(pluginsPath)) + { + _output.WriteLine($"- {Path.GetFileName(file)}"); + } + } + else + { + _output.WriteLine("❌ Plugins directory not found!"); + } + + // Act var response = await client.GetAsync("/api/Tests/Plugins"); var content = await response.Content.ReadAsStringAsync(); - var statusCode = (int)response.StatusCode; + _output.WriteLine($"API Response: {content}"); - Assert.Equal(200, statusCode); - var pluginsCount = JsonSerializer.Deserialize(content); - Assert.True(pluginsCount > 0, "Expected plugins count to be greater than 0"); + if (!int.TryParse(content, out var pluginsCount)) + { + _output.WriteLine($"❌ Failed to parse plugins count from response: {content}"); + Assert.Fail($"Expected numeric response but got: {content}"); + } + + // Assert + Assert.Equal(200, (int)response.StatusCode); + Assert.True(pluginsCount > 0, + $"Expected plugins count to be greater than 0. Got: {pluginsCount}"); } } \ No newline at end of file