Skip to content

refactor: introduce DI interfaces for StackDeleter/CdkDeleter with unit tests#616

Merged
go-to-k merged 10 commits intomainfrom
test/stack-deleter-unit-tests
Mar 30, 2026
Merged

refactor: introduce DI interfaces for StackDeleter/CdkDeleter with unit tests#616
go-to-k merged 10 commits intomainfrom
test/stack-deleter-unit-tests

Conversation

@go-to-k
Copy link
Copy Markdown
Owner

@go-to-k go-to-k commented Mar 30, 2026

Summary

Replace func-type DI fields in StackDeleter and CdkDeleter with proper interfaces, and add comprehensive unit tests.

Changes

Interfaces (new files)

File Interface Implementation
config_loader.go IConfigLoader ConfigLoader (wraps client.LoadAWSConfig)
dependency_analyzer.go IDependencyAnalyzer DependencyAnalyzer (wraps BuildDependencyGraph)
stack_executor.go IStackExecutor StackExecutor (RemoveDeletionPolicy + Preprocess + Delete)

Refactored structs

  • StackDeleter: uses IDependencyAnalyzer + IStackExecutor interfaces
  • CdkDeleter: uses IConfigLoader + IDependencyAnalyzer + IStackExecutor interfaces

Tests

StackDeleter (7 tests):

  • Independent stacks (all parallel)
  • Dependency order (B before A)
  • Complex deps (6 stacks)
  • Build graph error
  • Circular dependency detection
  • Deletion error propagation
  • Concurrency limit verification

CdkDeleter (12 tests):

  • Single region, multi-region no deps, cross-region deps with order verification
  • LoadConfig error, deletion error
  • groupByRegion (3 cases), hasCrossRegionDependencies (4 cases)

- Add buildDependencyGraph and deleteSingleStackFunc fields to StackDeleter for DI
- Add NewStackDependencyGraphForTest helper in operation package
- Add 7 flow tests: independent stacks, dependency order, complex deps
  (6 stacks), build graph error, circular dependency, deletion error,
  concurrency limit verification
@go-to-k
Copy link
Copy Markdown
Owner Author

go-to-k commented Mar 30, 2026

del-cdk

go-to-k added 4 commits March 30, 2026 17:09
Replace stackDeleterIface with direct func fields (deleteStacksFunc,
deleteSingleStackFunc) on both StackDeleter and CdkDeleter.
Remove the thin deleteSingleStack wrapper method from StackDeleter.
Fix gofmt formatting.
- Extract ConfigLoader, DependencyAnalyzer, StackExecutor interfaces
  with default implementations in separate files
- StackDeleter and CdkDeleter use interfaces instead of func fields
- All default implementations are public structs
- Update tests to use mock implementations of interfaces
@go-to-k go-to-k changed the title test: add DI for StackDeleter and DeleteStacksConcurrently flow tests refactor: introduce DI interfaces for StackDeleter/CdkDeleter with unit tests Mar 30, 2026
go-to-k added 3 commits March 30, 2026 17:35
- ConfigLoader interface -> IConfigLoader, DefaultConfigLoader -> ConfigLoader
- DependencyAnalyzer interface -> IDependencyAnalyzer, DefaultDependencyAnalyzer -> DependencyAnalyzer
- StackExecutor interface -> IStackExecutor, DefaultStackExecutor -> StackExecutor
@go-to-k go-to-k merged commit 8172722 into main Mar 30, 2026
2 checks passed
@go-to-k go-to-k deleted the test/stack-deleter-unit-tests branch March 30, 2026 10:29
This was referenced Mar 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant