From 3827b984842d992be58072551ea900b4c82a22c7 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Fri, 19 Jun 2026 10:06:44 -0400 Subject: [PATCH] =?UTF-8?q?fix(sms):=20S2=20review=20=E2=80=94=20add=20Del?= =?UTF-8?q?eteSmsConfigurationAsync=20+=20schema/repo=20tests=20+=20doc=20?= =?UTF-8?q?nit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Repositories/INotificationRepository.cs | 6 ++++ .../NotificationConfiguration.cs | 3 +- .../Repositories/NotificationRepository.cs | 7 +++++ .../SiteNotificationRepository.cs | 4 +++ .../RepositoryCoverageTests.cs | 28 +++++++++++++++++++ .../UnitTest1.cs | 1 + 6 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/ZB.MOM.WW.ScadaBridge.Commons/Interfaces/Repositories/INotificationRepository.cs b/src/ZB.MOM.WW.ScadaBridge.Commons/Interfaces/Repositories/INotificationRepository.cs index 88c3aa0c..ae822a21 100644 --- a/src/ZB.MOM.WW.ScadaBridge.Commons/Interfaces/Repositories/INotificationRepository.cs +++ b/src/ZB.MOM.WW.ScadaBridge.Commons/Interfaces/Repositories/INotificationRepository.cs @@ -124,6 +124,12 @@ public interface INotificationRepository /// A task representing the asynchronous operation. Task UpdateSmsConfigurationAsync(SmsConfiguration smsConfiguration, CancellationToken cancellationToken = default); + /// Deletes an SMS configuration by ID. + /// The SMS configuration ID. + /// Cancellation token. + /// A task representing the asynchronous operation. + Task DeleteSmsConfigurationAsync(int id, CancellationToken cancellationToken = default); + /// Saves pending changes to the repository. /// Cancellation token. /// The number of entities saved. diff --git a/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/Configurations/NotificationConfiguration.cs b/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/Configurations/NotificationConfiguration.cs index 7343be1e..a6171829 100644 --- a/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/Configurations/NotificationConfiguration.cs +++ b/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/Configurations/NotificationConfiguration.cs @@ -57,8 +57,7 @@ public class NotificationRecipientConfiguration : IEntityTypeConfiguration { - /// Configures the EF Core mapping for . - /// The entity type builder. + /// public void Configure(EntityTypeBuilder builder) { builder.HasKey(s => s.Id); diff --git a/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/Repositories/NotificationRepository.cs b/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/Repositories/NotificationRepository.cs index 6bbeebd8..96ab8843 100644 --- a/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/Repositories/NotificationRepository.cs +++ b/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/Repositories/NotificationRepository.cs @@ -104,6 +104,13 @@ public class NotificationRepository : INotificationRepository public Task UpdateSmsConfigurationAsync(SmsConfiguration smsConfiguration, CancellationToken cancellationToken = default) { _context.Set().Update(smsConfiguration); return Task.CompletedTask; } + /// + public async Task DeleteSmsConfigurationAsync(int id, CancellationToken cancellationToken = default) + { + var entity = await _context.Set().FindAsync(new object[] { id }, cancellationToken); + if (entity != null) _context.Set().Remove(entity); + } + /// public async Task SaveChangesAsync(CancellationToken cancellationToken = default) => await _context.SaveChangesAsync(cancellationToken); diff --git a/src/ZB.MOM.WW.ScadaBridge.SiteRuntime/Repositories/SiteNotificationRepository.cs b/src/ZB.MOM.WW.ScadaBridge.SiteRuntime/Repositories/SiteNotificationRepository.cs index e3fb966a..f40ae81e 100644 --- a/src/ZB.MOM.WW.ScadaBridge.SiteRuntime/Repositories/SiteNotificationRepository.cs +++ b/src/ZB.MOM.WW.ScadaBridge.SiteRuntime/Repositories/SiteNotificationRepository.cs @@ -211,6 +211,10 @@ public class SiteNotificationRepository : INotificationRepository public Task UpdateSmsConfigurationAsync(SmsConfiguration smsConfiguration, CancellationToken cancellationToken = default) => throw new NotSupportedException("Managed via artifact deployment from Central"); + /// + public Task DeleteSmsConfigurationAsync(int id, CancellationToken cancellationToken = default) + => throw new NotSupportedException("Managed via artifact deployment from Central"); + /// public Task SaveChangesAsync(CancellationToken cancellationToken = default) => throw new NotSupportedException("Managed via artifact deployment from Central"); diff --git a/tests/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Tests/RepositoryCoverageTests.cs b/tests/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Tests/RepositoryCoverageTests.cs index c532b71f..0ce7297d 100644 --- a/tests/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Tests/RepositoryCoverageTests.cs +++ b/tests/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Tests/RepositoryCoverageTests.cs @@ -226,6 +226,34 @@ public class NotificationRepositoryTests : IDisposable Assert.Null(await _repository.GetNotificationListByIdAsync(list.Id)); } + [Fact] + public async Task AddSmsConfiguration_RoundTrips() + { + var sms = new SmsConfiguration("ACtest123", "+14155550100"); + await _repository.AddSmsConfigurationAsync(sms); + await _repository.SaveChangesAsync(); + + var loaded = await _repository.GetSmsConfigurationAsync(); + Assert.NotNull(loaded); + Assert.Equal("ACtest123", loaded!.AccountSid); + Assert.Equal("+14155550100", loaded.FromNumber); + + // Update a field and verify GetAllSmsConfigurationsAsync reflects it. + loaded.FromNumber = "+14155550199"; + await _repository.UpdateSmsConfigurationAsync(loaded); + await _repository.SaveChangesAsync(); + + var all = await _repository.GetAllSmsConfigurationsAsync(); + Assert.Single(all); + Assert.Equal("+14155550199", all[0].FromNumber); + + // Delete and verify removal. + await _repository.DeleteSmsConfigurationAsync(loaded.Id); + await _repository.SaveChangesAsync(); + + Assert.Null(await _repository.GetSmsConfigurationAsync()); + } + [Fact] public async Task NotificationList_PersistsType() { diff --git a/tests/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Tests/UnitTest1.cs b/tests/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Tests/UnitTest1.cs index e1c5b0bf..1fc5dcd0 100644 --- a/tests/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Tests/UnitTest1.cs +++ b/tests/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.Tests/UnitTest1.cs @@ -53,6 +53,7 @@ public class DbContextTests : IDisposable Assert.NotNull(_context.NotificationLists); Assert.NotNull(_context.NotificationRecipients); Assert.NotNull(_context.SmtpConfigurations); + Assert.NotNull(_context.SmsConfigurations); Assert.NotNull(_context.SharedScripts); Assert.NotNull(_context.LdapGroupMappings); Assert.NotNull(_context.SiteScopeRules);