plugins test fix
This commit is contained in:
14
.github/workflows/build.yml
vendored
14
.github/workflows/build.yml
vendored
@@ -61,15 +61,25 @@ jobs:
|
|||||||
mkdir -p ../../build/webapi/Plugins
|
mkdir -p ../../build/webapi/Plugins
|
||||||
cp DiunaBI.Plugins.Morska/bin/Release/net8.0/DiunaBI.Plugins.Morska.dll ../../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
|
- name: Run Tests
|
||||||
working-directory: src/Backend
|
working-directory: src/Backend
|
||||||
run: |
|
run: |
|
||||||
|
dotnet add DiunaBI.Tests/DiunaBI.Tests.csproj package coverlet.collector
|
||||||
dotnet test DiunaBI.Tests/DiunaBI.Tests.csproj \
|
dotnet test DiunaBI.Tests/DiunaBI.Tests.csproj \
|
||||||
--configuration Release \
|
--configuration Release \
|
||||||
--no-restore \
|
--no-restore \
|
||||||
--logger "trx;LogFileName=test-results.trx" \
|
--logger "trx;LogFileName=test-results.trx" \
|
||||||
--collect:"XPlat Code Coverage" \
|
--collect:"XPlat Code Coverage"
|
||||||
--filter "Category!=LocalOnly"
|
|
||||||
|
|
||||||
- name: Publish Test Results
|
- name: Publish Test Results
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
using Xunit.Abstractions;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
|
||||||
namespace DiunaBI.Tests;
|
namespace DiunaBI.Tests;
|
||||||
@@ -7,21 +8,32 @@ namespace DiunaBI.Tests;
|
|||||||
public class ApiConnectionTests : IClassFixture<WebApplicationFactory<Program>>
|
public class ApiConnectionTests : IClassFixture<WebApplicationFactory<Program>>
|
||||||
{
|
{
|
||||||
private readonly WebApplicationFactory<Program> _factory;
|
private readonly WebApplicationFactory<Program> _factory;
|
||||||
|
private readonly ITestOutputHelper _output;
|
||||||
|
|
||||||
public ApiConnectionTests(WebApplicationFactory<Program> factory)
|
public ApiConnectionTests(WebApplicationFactory<Program> factory, ITestOutputHelper output)
|
||||||
{
|
{
|
||||||
_factory = factory;
|
_factory = factory;
|
||||||
|
_output = output;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task PingToApi()
|
public async Task PingToApi()
|
||||||
{
|
{
|
||||||
|
// Arrange
|
||||||
var client = _factory.CreateClient();
|
var client = _factory.CreateClient();
|
||||||
|
_output.WriteLine($"Test started: {nameof(PingToApi)}");
|
||||||
|
|
||||||
|
// Act
|
||||||
var response = await client.GetAsync("/api/Tests/Ping");
|
var response = await client.GetAsync("/api/Tests/Ping");
|
||||||
var content = await response.Content.ReadAsStringAsync();
|
var content = await response.Content.ReadAsStringAsync();
|
||||||
var statusCode = (int)response.StatusCode;
|
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(200, statusCode);
|
||||||
Assert.Equal("Pong", content);
|
Assert.Equal("Pong", content);
|
||||||
}
|
}
|
||||||
@@ -30,27 +42,63 @@ public class ApiConnectionTests : IClassFixture<WebApplicationFactory<Program>>
|
|||||||
[Trait("Category", "LocalOnly")]
|
[Trait("Category", "LocalOnly")]
|
||||||
public async Task DatabaseConnectionTest()
|
public async Task DatabaseConnectionTest()
|
||||||
{
|
{
|
||||||
|
// Arrange
|
||||||
var client = _factory.CreateClient();
|
var client = _factory.CreateClient();
|
||||||
|
_output.WriteLine($"Test started: {nameof(DatabaseConnectionTest)}");
|
||||||
|
|
||||||
|
// Act
|
||||||
var response = await client.GetAsync("/api/Layers?start=0&limit=1");
|
var response = await client.GetAsync("/api/Layers?start=0&limit=1");
|
||||||
var content = await response.Content.ReadAsStringAsync();
|
var content = await response.Content.ReadAsStringAsync();
|
||||||
var statusCode = (int)response.StatusCode;
|
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);
|
Assert.Equal(200, statusCode);
|
||||||
var layers = JsonSerializer.Deserialize<dynamic>(content);
|
var layers = JsonSerializer.Deserialize<dynamic>(content);
|
||||||
Assert.NotNull(layers);
|
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 response = await client.GetAsync("/api/Tests/Plugins");
|
||||||
var content = await response.Content.ReadAsStringAsync();
|
var content = await response.Content.ReadAsStringAsync();
|
||||||
var statusCode = (int)response.StatusCode;
|
_output.WriteLine($"API Response: {content}");
|
||||||
|
|
||||||
Assert.Equal(200, statusCode);
|
if (!int.TryParse(content, out var pluginsCount))
|
||||||
var pluginsCount = JsonSerializer.Deserialize<int>(content);
|
{
|
||||||
Assert.True(pluginsCount > 0, "Expected plugins count to be greater than 0");
|
_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}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user