Skip to content

Feature/ft categories on off domain#13

Merged
soraiayugulis merged 6 commits into
mainfrom
feature/ft-categories-on-off-domain
Jun 12, 2026
Merged

Feature/ft categories on off domain#13
soraiayugulis merged 6 commits into
mainfrom
feature/ft-categories-on-off-domain

Conversation

@soraiayugulis

Copy link
Copy Markdown
Owner

Summary

Phase 1 of the ft-categories-on-off feature — domain model extension with per-category status tracking. Adds CategoryStatus enum, extends Card entity with category status management, and creates corresponding DTOs for API layer.

Changes

Domain Model

  • CategoryStatus.java: New enum with ACTIVE and INACTIVE values
  • Card.java:
    • Added Map<Category, CategoryStatus> categoryStatuses field
    • Added getCategoryStatus(Category) method
    • Added activateCategory(Category) method
    • Added deactivateCategory(Category) method
    • Extended deactivate() to cascade all categories to INACTIVE
    • Added activate() method (card-level reactivation without restoring category statuses)

DTOs

  • CategoryStatusUpdateRequest.java: Request record with @NotNull CategoryStatus status field
  • CategoryStatusResponse.java: Response record with category and status fields, static factory from(Category, CategoryStatus)
  • BalanceResponse.java: Added CategoryStatus categoryStatus field (4th component)

API Controller

  • CardController.java: Updated BalanceResponse constructor calls in addBalance and getBalance to include card.getCategoryStatus(category)

Tests

  • CategoryStatusTest.java: 3 tests for enum values
  • CardTest.java: 6 new tests for category status behavior (default ACTIVE, activate/deactivate, cascade on card deactivation, no restore on card reactivation)
  • CategoryStatusUpdateRequestTest.java: 3 tests for deserialization
  • CategoryStatusResponseTest.java: 1 test for static factory
  • BalanceResponseTest.java: 2 tests for categoryStatus field

Notes

  • TDD Approach: All changes followed red-green-refactor cycle
  • Cascade Behavior: Card deactivation cascades all categories to INACTIVE; card reactivation does not restore category statuses (categories stay INACTIVE until explicitly activated)
  • Card-Category Independence: Deactivating a category does not change card-level status
  • All Tests Pass: 135 tests passing

Checklist

  • CategoryStatus enum implemented with ACTIVE and INACTIVE
  • Card entity extended with categoryStatuses field
  • Card methods: getCategoryStatus, activateCategory, deactivateCategory
  • Card deactivation cascades all categories to INACTIVE
  • Card reactivation does not restore category statuses
  • CategoryStatusUpdateRequest DTO implemented
  • CategoryStatusResponse DTO implemented
  • BalanceResponse extended with categoryStatus field
  • CardController updated to pass categoryStatus in BalanceResponse
  • All 135 tests passing

@soraiayugulis soraiayugulis self-assigned this Jun 12, 2026
@soraiayugulis soraiayugulis merged commit f11d1fc into main Jun 12, 2026
2 checks passed
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