fix(configdb): GetInstanceBy{Id,UniqueName}Async include NativeAlarmSourceOverrides (#226)

This commit is contained in:
Joseph Doherty
2026-06-19 01:32:10 -04:00
parent 78360eb6a7
commit 72e084f588
2 changed files with 36 additions and 0 deletions
@@ -198,6 +198,7 @@ public class DeploymentManagerRepository : IDeploymentManagerRepository
.Include(i => i.AttributeOverrides) .Include(i => i.AttributeOverrides)
.Include(i => i.AlarmOverrides) .Include(i => i.AlarmOverrides)
.Include(i => i.ConnectionBindings) .Include(i => i.ConnectionBindings)
.Include(i => i.NativeAlarmSourceOverrides)
.AsSplitQuery() .AsSplitQuery()
.FirstOrDefaultAsync(i => i.Id == instanceId, cancellationToken); .FirstOrDefaultAsync(i => i.Id == instanceId, cancellationToken);
} }
@@ -209,6 +210,7 @@ public class DeploymentManagerRepository : IDeploymentManagerRepository
.Include(i => i.AttributeOverrides) .Include(i => i.AttributeOverrides)
.Include(i => i.AlarmOverrides) .Include(i => i.AlarmOverrides)
.Include(i => i.ConnectionBindings) .Include(i => i.ConnectionBindings)
.Include(i => i.NativeAlarmSourceOverrides)
.AsSplitQuery() .AsSplitQuery()
.FirstOrDefaultAsync(i => i.UniqueName == uniqueName, cancellationToken); .FirstOrDefaultAsync(i => i.UniqueName == uniqueName, cancellationToken);
} }
@@ -972,6 +972,40 @@ public class DeploymentManagerRepositoryTests : IDisposable
Assert.Empty(await _repository.GetDeploymentsByInstanceIdAsync(instance.Id)); Assert.Empty(await _repository.GetDeploymentsByInstanceIdAsync(instance.Id));
} }
[Fact]
public async Task GetInstanceByIdAsync_IncludesNativeAlarmSourceOverrides()
{
// Regression for #226: NativeAlarmSourceOverrides was omitted from the Include chain.
var instance = await SeedInstanceAsync();
instance.NativeAlarmSourceOverrides.Add(
new InstanceNativeAlarmSourceOverride("src/AlarmA") { InstanceId = instance.Id });
await _context.SaveChangesAsync();
_context.ChangeTracker.Clear();
var loaded = await _repository.GetInstanceByIdAsync(instance.Id);
Assert.NotNull(loaded);
Assert.Single(loaded!.NativeAlarmSourceOverrides);
Assert.Equal("src/AlarmA", loaded.NativeAlarmSourceOverrides.First().SourceCanonicalName);
}
[Fact]
public async Task GetInstanceByUniqueNameAsync_IncludesNativeAlarmSourceOverrides()
{
// Regression for #226: NativeAlarmSourceOverrides was omitted from the Include chain.
var instance = await SeedInstanceAsync();
instance.NativeAlarmSourceOverrides.Add(
new InstanceNativeAlarmSourceOverride("src/AlarmB") { InstanceId = instance.Id });
await _context.SaveChangesAsync();
_context.ChangeTracker.Clear();
var loaded = await _repository.GetInstanceByUniqueNameAsync(instance.UniqueName);
Assert.NotNull(loaded);
Assert.Single(loaded!.NativeAlarmSourceOverrides);
Assert.Equal("src/AlarmB", loaded.NativeAlarmSourceOverrides.First().SourceCanonicalName);
}
[Fact] [Fact]
public void Constructor_NullContext_Throws() public void Constructor_NullContext_Throws()
{ {