Skip to content

Commit 0420fb9

Browse files
committed
Fix existing tests
1 parent 67bd19f commit 0420fb9

5 files changed

Lines changed: 44 additions & 66 deletions

File tree

src/HassModel/NetDaemon.HassModel.Tests/Internal/EntityAreaCachTests.cs renamed to src/HassModel/NetDaemon.HassModel.Tests/Internal/EntityAreaCacheTests.cs

Lines changed: 36 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,25 @@
99

1010
namespace NetDaemon.HassModel.Tests.Internal;
1111

12-
public class EntityAreaCachTests
12+
public class EntityAreaCacheTests
1313
{
1414
[Fact]
1515
public async Task EntityIdWithArea_Returns_HassArea()
1616
{
1717
// Arrange
1818
using var testSubject = new Subject<HassEvent>();
19-
var _hassConnectionMock = new Mock<IHomeAssistantConnection>();
20-
var haRunnerMock = new Mock<IHomeAssistantRunner>();
21-
22-
haRunnerMock.SetupGet(n => n.CurrentConnection).Returns(_hassConnectionMock.Object);
19+
var hassConnectionMock = new Mock<IHomeAssistantConnection>();
2320

24-
_hassConnectionMock.Setup(n =>
21+
hassConnectionMock.Setup(n =>
2522
n.SubscribeToHomeAssistantEventsAsync(It.IsAny<string>(), It.IsAny<CancellationToken>()))
2623
.ReturnsAsync(testSubject);
2724

28-
_hassConnectionMock.Setup(
25+
hassConnectionMock.Setup(
2926
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassDevice>>(
3027
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
3128
)).ReturnsAsync(Array.Empty<HassDevice>());
3229

33-
_hassConnectionMock.Setup(
30+
hassConnectionMock.Setup(
3431
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassArea>>
3532
(
3633
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
@@ -40,7 +37,7 @@ public async Task EntityIdWithArea_Returns_HassArea()
4037
new() {Id = "AreaId", Name = "Area Name"}
4138
});
4239

43-
_hassConnectionMock.Setup(
40+
hassConnectionMock.Setup(
4441
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassEntity>>
4542
(
4643
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
@@ -53,31 +50,28 @@ public async Task EntityIdWithArea_Returns_HassArea()
5350
var serviceColletion = new ServiceCollection();
5451
_ = serviceColletion.AddTransient(_ => new Mock<IObservable<HassEvent>>().Object);
5552

56-
using var cache = new RegistryCache(haRunnerMock.Object, NullLogger<RegistryCache>.Instance);
53+
using var cache = new RegistryCache(NullLogger<RegistryCache>.Instance);
5754

5855
// Act
59-
await cache.InitializeAsync(CancellationToken.None);
56+
await cache.InitializeAsync(hassConnectionMock.Object, CancellationToken.None);
6057
// Assert
6158
var area = cache.GetAreaById(cache.GetHassEntityById("sensor.sensor1")!.AreaId);
6259
Assert.NotNull(area);
63-
Assert.Equal("Area Name", area!.Name);
60+
Assert.Equal("Area Name", area.Name);
6461
}
6562

6663
[Fact]
6764
public async Task EntityIdWithOutArea_ButDeviceArea_Returns_HassArea()
6865
{
6966
// Arrange
7067
using var testSubject = new Subject<HassEvent>();
71-
var _hassConnectionMock = new Mock<IHomeAssistantConnection>();
72-
var haRunnerMock = new Mock<IHomeAssistantRunner>();
68+
var hassConnectionMock = new Mock<IHomeAssistantConnection>();
7369

74-
haRunnerMock.SetupGet(n => n.CurrentConnection).Returns(_hassConnectionMock.Object);
75-
76-
_hassConnectionMock.Setup(n =>
70+
hassConnectionMock.Setup(n =>
7771
n.SubscribeToHomeAssistantEventsAsync(It.IsAny<string>(), It.IsAny<CancellationToken>()))
7872
.ReturnsAsync(testSubject);
7973

80-
_hassConnectionMock.Setup(
74+
hassConnectionMock.Setup(
8175
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassDevice>>(
8276
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
8377
)).ReturnsAsync(
@@ -86,7 +80,7 @@ public async Task EntityIdWithOutArea_ButDeviceArea_Returns_HassArea()
8680
new() {Id = "DeviceId", AreaId = "AreaId"}
8781
});
8882

89-
_hassConnectionMock.Setup(
83+
hassConnectionMock.Setup(
9084
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassArea>>
9185
(
9286
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
@@ -96,7 +90,7 @@ public async Task EntityIdWithOutArea_ButDeviceArea_Returns_HassArea()
9690
new() {Id = "AreaId", Name = "Area Name"}
9791
});
9892

99-
_hassConnectionMock.Setup(
93+
hassConnectionMock.Setup(
10094
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassEntity>>
10195
(
10296
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
@@ -109,32 +103,32 @@ public async Task EntityIdWithOutArea_ButDeviceArea_Returns_HassArea()
109103
var serviceColletion = new ServiceCollection();
110104
_ = serviceColletion.AddTransient(_ => new Mock<IObservable<HassEvent>>().Object);
111105

112-
using var cache = new RegistryCache(haRunnerMock.Object, Mock.Of<ILogger<RegistryCache>>());
106+
using var cache = new RegistryCache(Mock.Of<ILogger<RegistryCache>>());
113107

114108
// Act
115-
await cache.InitializeAsync(CancellationToken.None);
109+
await cache.InitializeAsync(hassConnectionMock.Object, CancellationToken.None);
116110

117111
// Assert
118112
var area = cache.GetAreaById(cache.GetHassEntityById("sensor.sensor1")!.AreaId);
119113
Assert.NotNull(area);
120-
Assert.Equal("Area Name", area!.Name);
114+
Assert.Equal("Area Name", area.Name);
121115
}
122116

123117
[Fact]
124118
public async Task EntityIdWithArea_AndDeviceArea_Returns_EntityHassArea()
125119
{
126120
// Arrange
127121
using var testSubject = new Subject<HassEvent>();
128-
var _hassConnectionMock = new Mock<IHomeAssistantConnection>();
122+
var hassConnectionMock = new Mock<IHomeAssistantConnection>();
129123
var haRunnerMock = new Mock<IHomeAssistantRunner>();
130124

131-
haRunnerMock.SetupGet(n => n.CurrentConnection).Returns(_hassConnectionMock.Object);
125+
haRunnerMock.SetupGet(n => n.CurrentConnection).Returns(hassConnectionMock.Object);
132126

133-
_hassConnectionMock.Setup(n =>
127+
hassConnectionMock.Setup(n =>
134128
n.SubscribeToHomeAssistantEventsAsync(It.IsAny<string>(), It.IsAny<CancellationToken>()))
135129
.ReturnsAsync(testSubject);
136130

137-
_hassConnectionMock.Setup(
131+
hassConnectionMock.Setup(
138132
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassDevice>>(
139133
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
140134
)).ReturnsAsync(
@@ -143,7 +137,7 @@ public async Task EntityIdWithArea_AndDeviceArea_Returns_EntityHassArea()
143137
new() {Id = "DeviceId", AreaId = "AreaId"}
144138
});
145139

146-
_hassConnectionMock.Setup(
140+
hassConnectionMock.Setup(
147141
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassArea>>
148142
(
149143
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
@@ -154,7 +148,7 @@ public async Task EntityIdWithArea_AndDeviceArea_Returns_EntityHassArea()
154148
new() {Id = "AreaId2", Name = "Area2 Name"}
155149
});
156150

157-
_hassConnectionMock.Setup(
151+
hassConnectionMock.Setup(
158152
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassEntity>>
159153
(
160154
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
@@ -166,37 +160,37 @@ public async Task EntityIdWithArea_AndDeviceArea_Returns_EntityHassArea()
166160

167161
var serviceColletion = new ServiceCollection();
168162
_ = serviceColletion.AddTransient(_ => new Mock<IObservable<HassEvent>>().Object);
169-
using var cache = new RegistryCache(haRunnerMock.Object, Mock.Of<ILogger<RegistryCache>>());
163+
using var cache = new RegistryCache(Mock.Of<ILogger<RegistryCache>>());
170164

171165
// Act
172-
await cache.InitializeAsync(CancellationToken.None);
166+
await cache.InitializeAsync(hassConnectionMock.Object, CancellationToken.None);
173167

174168
// Assert
175169
var area = cache.GetAreaById(cache.GetHassEntityById("sensor.sensor1")!.AreaId);
176170
Assert.NotNull(area);
177-
Assert.Equal("Area2 Name", area!.Name);
171+
Assert.Equal("Area2 Name", area.Name);
178172
}
179173

180174
[Fact]
181175
public async Task EntityArea_Updates()
182176
{
183177
// Arrange
184178
using var testSubject = new Subject<HassEvent>();
185-
var _hassConnectionMock = new Mock<IHomeAssistantConnection>();
179+
var hassConnectionMock = new Mock<IHomeAssistantConnection>();
186180
var haRunnerMock = new Mock<IHomeAssistantRunner>();
187181

188-
haRunnerMock.SetupGet(n => n.CurrentConnection).Returns(_hassConnectionMock.Object);
182+
haRunnerMock.SetupGet(n => n.CurrentConnection).Returns(hassConnectionMock.Object);
189183

190-
_hassConnectionMock.Setup(
184+
hassConnectionMock.Setup(
191185
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassDevice>>(
192186
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
193187
)).ReturnsAsync(Array.Empty<HassDevice>());
194188

195-
_hassConnectionMock.Setup(n =>
189+
hassConnectionMock.Setup(n =>
196190
n.SubscribeToHomeAssistantEventsAsync(It.IsAny<string>(), It.IsAny<CancellationToken>()))
197191
.ReturnsAsync(testSubject);
198192

199-
_hassConnectionMock.Setup(
193+
hassConnectionMock.Setup(
200194
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassArea>>
201195
(
202196
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
@@ -207,7 +201,7 @@ public async Task EntityArea_Updates()
207201
new() {Id = "AreaId2", Name = "Area2 Name"}
208202
});
209203

210-
_hassConnectionMock.Setup(
204+
hassConnectionMock.Setup(
211205
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassEntity>>
212206
(
213207
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
@@ -217,17 +211,13 @@ public async Task EntityArea_Updates()
217211
new() {EntityId = "sensor.sensor1", AreaId = "AreaId"}
218212
});
219213

220-
var serviceColletion = new ServiceCollection();
221-
_ = serviceColletion.AddTransient<IObservable<HassEvent>>(_ => testSubject);
222-
var sp = serviceColletion.BuildServiceProvider();
223-
224-
using var cache = new RegistryCache(haRunnerMock.Object, Mock.Of<ILogger<RegistryCache>>());
214+
using var cache = new RegistryCache(Mock.Of<ILogger<RegistryCache>>());
225215

226216
// Act 1: Init
227-
await cache.InitializeAsync(CancellationToken.None);
217+
await cache.InitializeAsync(hassConnectionMock.Object, CancellationToken.None);
228218

229219
// Act/Rearrage
230-
_hassConnectionMock.Setup(
220+
hassConnectionMock.Setup(
231221
m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassEntity>>
232222
(
233223
It.IsAny<SimpleCommand>(), It.IsAny<CancellationToken>()
@@ -243,6 +233,6 @@ public async Task EntityArea_Updates()
243233
// Assert
244234
var area = cache.GetAreaById(cache.GetHassEntityById("sensor.sensor1")!.AreaId);
245235
Assert.NotNull(area);
246-
Assert.Equal("Area2 Name", area!.Name);
236+
Assert.Equal("Area2 Name", area.Name);
247237
}
248238
}

src/HassModel/NetDaemon.HassModel.Tests/Internal/EntityStateCacheTest.cs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ public async Task StateChangeEventIsFirstStoredInCacheThanForwarded()
1818
// Arrange
1919
using var testSubject = new Subject<HassEvent>();
2020
var hassConnectionMock = new Mock<IHomeAssistantConnection>();
21-
var haRunnerMock = new Mock<IHomeAssistantRunner>();
22-
23-
haRunnerMock.SetupGet(n => n.CurrentConnection).Returns(hassConnectionMock.Object);
2421

2522
hassConnectionMock
2623
.Setup(m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassState>>
@@ -31,13 +28,13 @@ public async Task StateChangeEventIsFirstStoredInCacheThanForwarded()
3128
.Setup(n => n.SubscribeToHomeAssistantEventsAsync(It.IsAny<string>(), It.IsAny<CancellationToken>()))
3229
.ReturnsAsync(testSubject);
3330

34-
using var cache = new EntityStateCache(haRunnerMock.Object);
31+
using var cache = new EntityStateCache();
3532

3633
var eventObserverMock = new Mock<IObserver<HassEvent>>();
3734
cache.AllEvents.Subscribe(eventObserverMock.Object);
3835

3936
// ACT 1: after initialization of the cache it should show the values retrieved from Hass
40-
await cache.InitializeAsync(CancellationToken.None);
37+
await cache.InitializeAsync(hassConnectionMock.Object, CancellationToken.None);
4138

4239
cache.GetState(entityId)!.State.Should().Be("InitialState", "The initial value should be available");
4340

@@ -85,9 +82,6 @@ public async Task AllEntityIds_returnsInitialPlusChangedEntities()
8582
// Arrange
8683
using var testSubject = new Subject<HassEvent>();
8784
var hassConnectionMock = new Mock<IHomeAssistantConnection>();
88-
var haRunnerMock = new Mock<IHomeAssistantRunner>();
89-
90-
haRunnerMock.SetupGet(n => n.CurrentConnection).Returns(hassConnectionMock.Object);
9185

9286
hassConnectionMock
9387
.Setup(m => m.SendCommandAndReturnResponseAsync<SimpleCommand, IReadOnlyCollection<HassState>>
@@ -103,13 +97,13 @@ public async Task AllEntityIds_returnsInitialPlusChangedEntities()
10397
n.SubscribeToHomeAssistantEventsAsync(It.IsAny<string>(), It.IsAny<CancellationToken>()))
10498
.ReturnsAsync(testSubject);
10599

106-
using var cache = new EntityStateCache(haRunnerMock.Object);
100+
using var cache = new EntityStateCache();
107101

108102
var stateChangeObserverMock = new Mock<IObserver<HassEvent>>();
109103
cache.AllEvents.Subscribe(stateChangeObserverMock.Object);
110104

111105
// ACT 1: after initialization of the cache it should show the values retieved from Hass
112-
await cache.InitializeAsync(CancellationToken.None);
106+
await cache.InitializeAsync(hassConnectionMock.Object, CancellationToken.None);
113107

114108
// initial value for sensor.sensor1 shoul be visible right away
115109
cache.GetState("sensor.sensor1")!.AttributesJson.GetValueOrDefault().GetProperty("brightness").GetInt32().Should().Be(100);

src/HassModel/NetDaemon.HassModel.Tests/Registry/RegistryNavigationTest.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,8 @@ public RegistryNavigationTest()
1919

2020
private async Task<HaRegistry> InitializeCacheAndBuildRegistry()
2121
{
22-
var runnerMock = new Mock<IHomeAssistantRunner>();
23-
runnerMock.SetupGet(m => m.CurrentConnection).Returns(_connectionMock.Object);
24-
25-
var cache = new RegistryCache(runnerMock.Object, new NullLogger<RegistryCache>());
26-
await cache.InitializeAsync(CancellationToken.None);
22+
var cache = new RegistryCache(new NullLogger<RegistryCache>());
23+
await cache.InitializeAsync(_connectionMock.Object, CancellationToken.None);
2724

2825
var haContextMock = new Mock<IHaContext> { CallBase = true };
2926
return new HaRegistry(haContextMock.Object, cache);

src/Runtime/NetDaemon.Runtime.Tests/Internal/NetDaemonRuntimeTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public async Task TestReconnect()
9191
[Fact]
9292
public async Task TestOnConnectError()
9393
{
94-
_cacheManagerMock.Setup(m => m.InitializeAsync(It.IsAny<CancellationToken>())).ThrowsAsync(new InvalidOperationException("Something wrong while initializing"));
94+
_cacheManagerMock.Setup(m => m.InitializeAsync(It.IsAny<IHomeAssistantConnection>(), It.IsAny<CancellationToken>())).ThrowsAsync(new InvalidOperationException("Something wrong while initializing"));
9595

9696
await using var runtime = SetupNetDaemonRuntime();
9797

@@ -117,7 +117,7 @@ public async Task TestOnReConnectError()
117117
_disconnectSubject.OnNext(DisconnectReason.Client);
118118

119119
// now it should err on the second connection
120-
_cacheManagerMock.Setup(m => m.InitializeAsync(It.IsAny<CancellationToken>())).ThrowsAsync(new InvalidOperationException("Something wrong while initializing"));
120+
_cacheManagerMock.Setup(m => m.InitializeAsync(It.IsAny<IHomeAssistantConnection>(), It.IsAny<CancellationToken>())).ThrowsAsync(new InvalidOperationException("Something wrong while initializing"));
121121
_connectSubject.OnNext(_homeAssistantConnectionMock.Object);
122122

123123
_loggerMock.Verify(

src/debug/ConsoleClient/ConsoleClient.csproj

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@
1818
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
1919
</Content>
2020
<None Remove="appsettings.Development.json" />
21-
<Content Include="appsettings.Development.json">
22-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
23-
</Content>
2421
</ItemGroup>
2522

2623
<ItemGroup>

0 commit comments

Comments
 (0)