refactor: address code review findings across all projects

Apply comprehensive fixes from code reviews including:
- Extract shared utilities (SqlFormatHelper, CellValueConverter, DbDestinationBase)
- Add interface abstractions (IAuthenticationService, IDatabaseMigrator, IMisQueryBuilder)
- Implement SecureStore for encrypted secrets storage
- Fix error handling with proper HTTP status codes and logging
- Optimize double enumeration in DevEtlRegistry
- Add DataSync.Dev README for developer onboarding
- Extract filter panel base classes to reduce duplication
- Update code review docs to mark all issues as fixed
This commit is contained in:
Joseph Doherty
2026-01-19 11:05:36 -05:00
parent 08f5aa1447
commit 604bfe919c
148 changed files with 8696 additions and 1538 deletions
@@ -148,7 +148,7 @@ public class SearchExecutionServiceTests
_searchProcessor.ExecuteSearchToModelAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(model);
_excelExportService.GenerateAsync(Arg.Any<object>(), Arg.Any<CancellationToken>())
_excelExportService.GenerateAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(excelBytes);
var sut = CreateService();
@@ -170,7 +170,7 @@ public class SearchExecutionServiceTests
_searchProcessor.ExecuteSearchToModelAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(model);
_excelExportService.GenerateAsync(Arg.Any<object>(), Arg.Any<CancellationToken>())
_excelExportService.GenerateAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(excelBytes);
var sut = CreateService();
@@ -194,7 +194,7 @@ public class SearchExecutionServiceTests
_searchProcessor.ExecuteSearchToModelAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(model);
_excelExportService.GenerateAsync(Arg.Any<object>(), Arg.Any<CancellationToken>())
_excelExportService.GenerateAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(excelBytes);
var sut = CreateService();
@@ -204,7 +204,7 @@ public class SearchExecutionServiceTests
// Assert
await _excelExportService.Received(1).GenerateAsync(
Arg.Any<object>(),
Arg.Any<SearchModel>(),
Arg.Any<CancellationToken>());
}
@@ -218,7 +218,7 @@ public class SearchExecutionServiceTests
_searchProcessor.ExecuteSearchToModelAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(model);
_excelExportService.GenerateAsync(Arg.Any<object>(), Arg.Any<CancellationToken>())
_excelExportService.GenerateAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(excelBytes);
var sut = CreateService();
@@ -240,7 +240,7 @@ public class SearchExecutionServiceTests
_searchProcessor.ExecuteSearchToModelAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(model);
_excelExportService.GenerateAsync(Arg.Any<object>(), Arg.Any<CancellationToken>())
_excelExportService.GenerateAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(excelBytes);
var sut = CreateService();
@@ -262,7 +262,7 @@ public class SearchExecutionServiceTests
_searchProcessor.ExecuteSearchToModelAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(model);
_excelExportService.GenerateAsync(Arg.Any<object>(), Arg.Any<CancellationToken>())
_excelExportService.GenerateAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(excelBytes);
var sut = CreateService();
@@ -305,7 +305,7 @@ public class SearchExecutionServiceTests
_searchProcessor.ExecuteSearchToModelAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(model);
_excelExportService.GenerateAsync(Arg.Any<object>(), Arg.Any<CancellationToken>())
_excelExportService.GenerateAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.ThrowsAsync(new InvalidOperationException("Excel generation failed"));
var sut = CreateService();
@@ -517,7 +517,7 @@ public class SearchExecutionServiceTests
_searchProcessor.ExecuteSearchToModelAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(model);
_excelExportService.GenerateAsync(Arg.Any<object>(), Arg.Any<CancellationToken>())
_excelExportService.GenerateAsync(Arg.Any<SearchModel>(), Arg.Any<CancellationToken>())
.Returns(excelBytes);
_notificationService.NotifySearchUpdateAsync(Arg.Any<Search>(), Arg.Any<CancellationToken>())
.ThrowsAsync(new InvalidOperationException("SignalR error"));