-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCombinedPublishedReaderTest.cs
More file actions
109 lines (93 loc) · 3.71 KB
/
CombinedPublishedReaderTest.cs
File metadata and controls
109 lines (93 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Moq;
using Xunit;
using LabTracker;
using LabTracker.Mqtt;
using LabTracker.Unifi;
namespace LabTracker.Tests;
public class CombinedPublishedReaderTest
{
private readonly Mock<ILogger<CombinedPublishedReader>> _mockLogger;
private readonly Mock<IOptions<Options>> _mockOptions;
private readonly Mock<IUniFiApiClient> _mockUnifiApiClient;
private readonly Mock<ILoggerFactory> _mockLoggerFactory;
private readonly Options _testOptions;
public CombinedPublishedReaderTest()
{
_mockLogger = new Mock<ILogger<CombinedPublishedReader>>();
_mockOptions = new Mock<IOptions<Options>>();
_mockUnifiApiClient = new Mock<IUniFiApiClient>();
_mockLoggerFactory = new Mock<ILoggerFactory>();
_testOptions = new Options
{
Mqtt = new MqttOptions
{
BrokerHost = "test-broker",
BrokerPort = 1883,
TopicPrefix = "test"
},
UnifiApi = new UnifiApiOptions
{
BaseUrl = "unifi.example.com",
Key = "test-key"
}
};
_mockOptions.Setup(x => x.Value).Returns(_testOptions);
// Setup logger factory to return mock loggers using the non-generic CreateLogger method
_mockLoggerFactory.Setup(x => x.CreateLogger(typeof(MqttPublishedReader).FullName!))
.Returns(new Mock<ILogger<MqttPublishedReader>>().Object);
_mockLoggerFactory.Setup(x => x.CreateLogger(typeof(UnifiPublishedReader).FullName!))
.Returns(new Mock<ILogger<UnifiPublishedReader>>().Object);
}
[Fact]
public void Constructor_ShouldCreateCombinedPublishedReader()
{
// Act
var reader = new CombinedPublishedReader(_mockLogger.Object, _mockOptions.Object,
_mockUnifiApiClient.Object, _mockLoggerFactory.Object);
// Assert
Assert.NotNull(reader);
Assert.True(reader.ForceSnapshot);
}
[Fact]
public void ForceSnapshot_ShouldReturnTrue()
{
// Arrange
var reader = new CombinedPublishedReader(_mockLogger.Object, _mockOptions.Object,
_mockUnifiApiClient.Object, _mockLoggerFactory.Object);
// Act & Assert
Assert.True(reader.ForceSnapshot);
}
[Fact]
public void CombinedPublishedReader_ShouldImplementIPublished()
{
// Arrange
var reader = new CombinedPublishedReader(_mockLogger.Object, _mockOptions.Object,
_mockUnifiApiClient.Object, _mockLoggerFactory.Object);
// Act & Assert
Assert.IsAssignableFrom<IPublished>(reader);
}
}
public class CombinedPublishedReaderContractTest
{
[Fact]
public void CombinedPublishedReader_ShouldImplementIPublished()
{
// Arrange
var mockLogger = new Mock<ILogger<CombinedPublishedReader>>();
var mockOptions = new Mock<IOptions<Options>>();
var mockUnifiApiClient = new Mock<IUniFiApiClient>();
var mockLoggerFactory = new Mock<ILoggerFactory>();
mockOptions.Setup(x => x.Value).Returns(new Options());
mockLoggerFactory.Setup(x => x.CreateLogger(typeof(MqttPublishedReader).FullName!))
.Returns(new Mock<ILogger<MqttPublishedReader>>().Object);
mockLoggerFactory.Setup(x => x.CreateLogger(typeof(UnifiPublishedReader).FullName!))
.Returns(new Mock<ILogger<UnifiPublishedReader>>().Object);
// Act
var reader = new CombinedPublishedReader(mockLogger.Object, mockOptions.Object,
mockUnifiApiClient.Object, mockLoggerFactory.Object);
// Assert
Assert.IsAssignableFrom<IPublished>(reader);
}
}