diff --git a/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/Repositories/DeploymentManagerRepository.cs b/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/Repositories/DeploymentManagerRepository.cs index b50fc5c2..add1faad 100644 --- a/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/Repositories/DeploymentManagerRepository.cs +++ b/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/Repositories/DeploymentManagerRepository.cs @@ -198,6 +198,7 @@ public class DeploymentManagerRepository : IDeploymentManagerRepository .Include(i => i.AttributeOverrides) .Include(i => i.AlarmOverrides) .Include(i => i.ConnectionBindings) + .Include(i => i.NativeAlarmSourceOverrides) .AsSplitQuery() .FirstOrDefaultAsync(i => i.Id == instanceId, cancellationToken); } @@ -209,6 +210,7 @@ public class DeploymentManagerRepository : IDeploymentManagerRepository .Include(i => i.AttributeOverrides) .Include(i => i.AlarmOverrides) .Include(i => i.ConnectionBindings) + .Include(i => i.NativeAlarmSourceOverrides) .AsSplitQuery() .FirstOrDefaultAsync(i => i.UniqueName == uniqueName, cancellationToken); } diff --git a/tests/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Tests/RepositoryCoverageTests.cs b/tests/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Tests/RepositoryCoverageTests.cs index c659afaa..c532b71f 100644 --- a/tests/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Tests/RepositoryCoverageTests.cs +++ b/tests/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Tests/RepositoryCoverageTests.cs @@ -972,6 +972,40 @@ public class DeploymentManagerRepositoryTests : IDisposable 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] public void Constructor_NullContext_Throws() {