Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Text.Json;
using Microsoft.Extensions.Logging.Testing;
using System.Text.Json.Serialization;
using NUnit.Framework;
using SchematicHQ.Client.Datastream;
Expand All @@ -10,7 +11,7 @@ namespace SchematicHQ.Client.Test.Datastream
public class DatastreamCacheTests
{
private MockWebSocket _mockWebSocket;
private MockSchematicLogger _mockLogger;
private FakeLogger _mockLogger;
private DatastreamClient _client;

[SetUp]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using Microsoft.Extensions.Logging.Testing;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
Expand All @@ -13,15 +14,15 @@ public class DatastreamClientAdapterTests
{
private DatastreamClientAdapter _adapter;
private MockWebSocket _mockWebSocket;
private MockSchematicLogger _mockLogger;
private FakeLogger _mockLogger;
private Action<bool> _connectionCallback;

[SetUp]
public void Setup()
{
// We need to capture the connection callback to trigger connection state changes in tests
_connectionCallback = null;
_mockLogger = new MockSchematicLogger();
_mockLogger = new FakeLogger();
_mockWebSocket = new MockWebSocket();
_mockWebSocket.SetState(WebSocketState.Open);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using System.Text;
using Microsoft.Extensions.Logging.Testing;
using System.Text.Json;
using System.Text.Json.Serialization;
using Microsoft.Extensions.Logging;
using NUnit.Framework;
using SchematicHQ.Client.RulesEngine.Utils;
using SchematicHQ.Client.Datastream;
Expand All @@ -12,7 +14,7 @@ namespace SchematicHQ.Client.Test.Datastream
public class DatastreamClientTests
{
private MockWebSocket _mockWebSocket;
private MockSchematicLogger _mockLogger;
private FakeLogger _mockLogger;
private DatastreamClient _client;
private JsonSerializerOptions _jsonOptions;

Expand Down Expand Up @@ -228,7 +230,7 @@ public void Dispose_ClosesWebSocketConnection()
_client.Dispose();

// Assert
Assert.That(_mockLogger.HasLogEntry(LogLevel.Info, "Connected to Schematic WebSocket"), Is.False);
Assert.That(_mockLogger.HasLogEntry(LogLevel.Information, "Connected to Schematic WebSocket"), Is.False);
}

private void SetupFlagsResponse()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using System.Text;
using Microsoft.Extensions.Logging.Testing;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using NUnit.Framework;
using SchematicHQ.Client.RulesEngine;
using SchematicHQ.Client.RulesEngine.Utils;
Expand All @@ -12,7 +14,7 @@ namespace SchematicHQ.Client.Test.Datastream
public class DatastreamConcurrencyTests
{
private MockWebSocket _mockWebSocket;
private MockSchematicLogger _mockLogger;
private FakeLogger _mockLogger;
private DatastreamClient _client;

[SetUp]
Expand Down Expand Up @@ -112,7 +114,7 @@ public async Task EmptyResponse_LogsWarning()
await Task.Delay(100);

// Assert
Assert.That(_mockLogger.HasLogEntry(LogLevel.Warn, "Received empty company data"), Is.True);
Assert.That(_mockLogger.HasLogEntry(LogLevel.Warning, "Received empty company data"), Is.True);
}

[Test]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using Microsoft.Extensions.Logging.Testing;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
Expand All @@ -11,12 +12,12 @@ namespace SchematicHQ.Client.Test.Datastream
[TestFixture]
public class DatastreamConnectionMonitoringTests
{
private MockSchematicLogger _logger;
private FakeLogger _logger;

[SetUp]
public void Setup()
{
_logger = new MockSchematicLogger();
_logger = new FakeLogger();
}

[Test]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using System.Net.WebSockets;
using Microsoft.Extensions.Logging.Testing;
using System.Text;
using System.Text.Json;
using Microsoft.Extensions.Logging;
using NUnit.Framework;
using SchematicHQ.Client.Datastream;
using SchematicHQ.Client.Test.Datastream.Mocks;
Expand All @@ -11,7 +13,7 @@ namespace SchematicHQ.Client.Test.Datastream
public class DatastreamConnectionTests
{
private MockWebSocket _mockWebSocket;
private MockSchematicLogger _mockLogger;
private FakeLogger _mockLogger;
private DatastreamClient _client;
private Action<bool> _connectionCallback;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Net.WebSockets;
using Microsoft.Extensions.Logging.Testing;
using System.Reflection;
using SchematicHQ.Client.Datastream;

Expand All @@ -9,10 +10,10 @@ namespace SchematicHQ.Client.Test.Datastream.Mocks
/// </summary>
public class DatastreamClientTestFactory
{
public static (DatastreamClient Client, MockWebSocket WebSocket, MockSchematicLogger Logger, Action<bool> ConnectionCallback)
public static (DatastreamClient Client, MockWebSocket WebSocket, FakeLogger Logger, Action<bool> ConnectionCallback)
CreateClientWithMocks(string apiKey = "test-api-key", TimeSpan? cacheTtl = null, Action<bool>? connectionCallback = null)
{
var logger = new MockSchematicLogger();
var logger = new FakeLogger();
var mockWebSocket = new MockWebSocket();
mockWebSocket.SetState(WebSocketState.Open);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Testing;

namespace SchematicHQ.Client.Test.Datastream.Mocks
{
public static class FakeLoggerExtensions
{
public static bool HasLogEntry(this FakeLogger logger, LogLevel level, string messageContains)
{
return logger.Collector.GetSnapshot().Any(r => r.Level == level && r.Message.Contains(messageContains));
}

public static ILoggerFactory ToLoggerFactory(this FakeLogger logger)
{
return LoggerFactory.Create(b => b
.SetMinimumLevel(LogLevel.Trace)
.AddProvider(new FakeLoggerProvider(logger.Collector)));
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using NUnit.Framework;
using Microsoft.Extensions.Logging.Testing;
using Moq;
using Moq.Protected;
using System;
Expand All @@ -20,7 +21,7 @@ public async Task PerformHealthCheck_WhenReplicatorReady_SetsHealthyToTrue()
// Arrange
var mockHttpMessageHandler = new Mock<HttpMessageHandler>();
var httpClient = new HttpClient(mockHttpMessageHandler.Object);
var logger = new MockSchematicLogger();
var logger = new FakeLogger();

var healthResponse = """
{
Expand Down Expand Up @@ -71,7 +72,7 @@ public async Task PerformHealthCheck_WhenReplicatorNotReady_SetsHealthyToFalse()
// Arrange
var mockHttpMessageHandler = new Mock<HttpMessageHandler>();
var httpClient = new HttpClient(mockHttpMessageHandler.Object);
var logger = new MockSchematicLogger();
var logger = new FakeLogger();

var healthResponse = """
{
Expand Down Expand Up @@ -122,7 +123,7 @@ public async Task CacheVersionChanged_WhenVersionChanges_FiresEvent()
// Arrange
var mockHttpMessageHandler = new Mock<HttpMessageHandler>();
var httpClient = new HttpClient(mockHttpMessageHandler.Object);
var logger = new MockSchematicLogger();
var logger = new FakeLogger();

var eventCallCount = 0;
string? firstEventOldVersion = null;
Expand Down Expand Up @@ -234,7 +235,7 @@ public void Dispose_CleansUpResources()
{
// Arrange
var httpClient = new HttpClient();
var logger = new MockSchematicLogger();
var logger = new FakeLogger();
var service = new ReplicatorHealthService(httpClient, "http://test/ready", logger);

// Act & Assert - should not throw
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Testing;
using NUnit.Framework;
using OpenFeature;
using OpenFeature.Constant;
Expand Down Expand Up @@ -267,30 +269,30 @@ public void Constructor_WithNullSchematic_ThrowsArgumentNullException()
public async Task Initialize_WithCustomLogger_RoutesThroughLogger()
{
// Arrange
var mockLogger = new MockSchematicLogger();
var options = new ClientOptions { Offline = true, Logger = mockLogger };
var mockLogger = new FakeLogger();
var options = new ClientOptions { Offline = true, LoggerFactory = mockLogger.ToLoggerFactory() };
var provider = new SchematicProvider("test-key", options);

// Act
await provider.InitializeAsync(EvaluationContext.Empty);

// Assert
Assert.That(mockLogger.HasLogEntry(LogLevel.Info, "initialized"), Is.True);
Assert.That(mockLogger.HasLogEntry(LogLevel.Information, "initialized"), Is.True);
}

[Test]
public async Task Shutdown_WithCustomLogger_RoutesThroughLogger()
{
// Arrange
var mockLogger = new MockSchematicLogger();
var options = new ClientOptions { Offline = true, Logger = mockLogger };
var mockLogger = new FakeLogger();
var options = new ClientOptions { Offline = true, LoggerFactory = mockLogger.ToLoggerFactory() };
var provider = new SchematicProvider("test-key", options);

// Act
await provider.ShutdownAsync();

// Assert
Assert.That(mockLogger.HasLogEntry(LogLevel.Info, "shutting down"), Is.True);
Assert.That(mockLogger.HasLogEntry(LogLevel.Information, "shutting down"), Is.True);
}

// Regression guard: when no custom Logger is supplied, ClientOptions.Logger
Expand All @@ -307,7 +309,7 @@ public async Task Initialize_WithNoCustomLogger_StillLogsViaDefaultConsoleLogger
try
{
// No Logger set; raise LogLevel so the Info init message is emitted.
var options = new ClientOptions { Offline = true, LogLevel = LogLevel.Info };
var options = new ClientOptions { Offline = true, LogLevel = LogLevel.Information };
var provider = new SchematicProvider("test-key", options);

// Act
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Configure additional MSBuild properties for your project in this file:
<GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Diagnostics.Testing" Version="9.10.0" />
<PackageReference Include="OpenFeature" Version="2.9.0" />
<PackageReference Include="Moq" Version="4.20.72" />
<PackageReference Include="Moq.Contrib.HttpClient" Version="1.4.0" />
Expand Down
Loading