Skip to content

♻️ refactor(FolderProcessorSRP): extraction FolderService — SRP Vague 3#140

Merged
ronan-develop merged 3 commits intomainfrom
refactor/FolderProcessorSRP
Mar 16, 2026
Merged

♻️ refactor(FolderProcessorSRP): extraction FolderService — SRP Vague 3#140
ronan-develop merged 3 commits intomainfrom
refactor/FolderProcessorSRP

Conversation

@ronan-develop
Copy link
Owner

Contexte

Vague 3 du plan SOLID/KISS/DRY : FolderProcessor violait le SRP en mélangeant dispatch HTTP, validation, ownership, persistance et logging (~260 lignes).

Changements

Nouvelles interfaces DIP

  • FilenameValidatorInterface
  • OwnershipCheckerInterface
  • AuthenticationResolverInterface

Les 3 services implémentent leurs interfaces — testabilité complète par mock.

FolderService (nouveau)

Contient toute la logique métier extraite de FolderProcessor :

  • createFolder : validation nom, unicité, persist
  • updateFolder : ownership, rename, mediaType, déplacement + détection de cycle
  • deleteFolder : ownership, suppression avec/sans migration des fichiers

FolderProcessor (simplifié)

Réduit à un pur dispatcher HTTP → domaine :

  • Résout les entités (owner, parent) depuis IDs/IRIs
  • Parse le body JSON (deleteContents, parentId)
  • Délègue à FolderService
  • Retourne le DTO
  • 6 dépendances supprimées (EntityManager, AuthResolver, Logger, DefaultFolderService, FilenameValidator, OwnershipChecker)

Tests

  • ✅ 14 nouveaux tests unitaires FolderServiceTest (TDD RED→GREEN)
  • ✅ 301/301 tests passent (dont tous les tests fonctionnels API FolderTest)

Commits

  • ✅ test(FolderServiceTest): RED → tests unitaires FolderService + interfaces DIP
  • ✨ feat(FolderService): extraction logique métier depuis FolderProcessor (SRP)
  • ♻️ refactor(FolderProcessor): simplification — pur dispatcher HTTP→FolderService

@ronan-develop ronan-develop merged commit cb67e74 into main Mar 16, 2026
3 checks passed
@ronan-develop ronan-develop deleted the refactor/FolderProcessorSRP branch March 16, 2026 10:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant