Decompose: Break down #30 into implementable work units #31
Labels
No labels
blocked:gate-fetch
blocked:gate-fetch
blocked:gate-fetch
blocked:gate-fetch
blocked:lint-failed
blocked:needs-decision
blocked:no-changes
blocked:no-procedure
blocked:verify-failed
bug
feature-request
in-progress
needs-decompose
needs-triage
ops-task
quickfix
security/high
security/low
security/medium
test-coverage
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/docker_backup#31
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decomposition of #30: [smoke-test] Test coverage review: 268 source files, 21 test files (7.8%)
This issue decomposes the parent feature into independently implementable phases.
P1: Frontend pure-logic tests: write vitest tests for lib/utils.ts (already partially tested), lib/client.ts (API client), lib/mockData.ts, types/index.ts, hooks/useAuth.ts, hooks/use-mobile.ts — zero rendering setup needed, pure function assertions
Files: src/lib/client.ts, src/lib/mockData.ts, src/types/index.ts, src/hooks/useAuth.ts, src/hooks/use-mobile.ts, src/lib/utils.ts
P2: Frontend Zustand store tests: write isolated store tests for all 12 stores (volumes, targets, jobs, schedules, notifications, anomalies, users, apiKeys, agents, settings, dashboard, auth) — mock fetch/api layer, verify state transitions and action dispatch
Files: src/store/authStore.ts, src/store/volumesStore.ts, src/store/targetsStore.ts, src/store/jobsStore.ts, src/store/schedulesStore.ts, src/store/notificationsStore.ts, src/store/anomaliesStore.ts, src/store/usersStore.ts, src/store/apiKeysStore.ts, src/store/agentsStore.ts, src/store/settingsStore.ts, src/store/dashboardStore.ts, src/store/index.ts
Depends on: P1
P3: Frontend page & component tests: render tests for Layout, ProtectedRoute, App, and key pages (Dashboard, Volumes, Targets, Jobs, Schedules, Settings, Notifications, Users, ApiKeys, Agents, Anomalies, Webhooks, ApiDocs, Login) — mock stores with Zustand test utils
Files: src/components/Layout.tsx, src/components/ProtectedRoute.tsx, src/App.tsx, src/pages/Dashboard.tsx, src/pages/Volumes.tsx, src/pages/Targets.tsx, src/pages/Jobs.tsx, src/pages/Schedules.tsx, src/pages/Settings.tsx, src/pages/Notifications.tsx, src/pages/Users.tsx, src/pages/ApiKeys.tsx, src/pages/Agents.tsx, src/pages/Anomalies.tsx, src/pages/Webhooks.tsx, src/pages/ApiDocs.tsx, src/pages/Login.tsx
Depends on: P2
P4: Backend storage provider coverage: write tests for storage providers missing test coverage (webdav, sftp, rsync, gdrive, dropbox, box, azure) following existing interface.test.ts and factory.ts patterns, plus lifecycle tests
Files: backend/src/core/storage/webdav.ts, backend/src/core/storage/sftp.ts, backend/src/core/storage/rsync.ts, backend/src/core/storage/gdrive.ts, backend/src/core/storage/dropbox.ts, backend/src/core/storage/box.ts, backend/src/core/storage/azure.ts, backend/src/core/storage/lifecycle.ts
P5: Backend core module tests: write tests for uncovered backup modules (delta, verification, result-builder, checksum, incremental/*), anomaly detection (detector, rule-engine, rules, notification, persistence, scheduler, config), queue (backup-queue, memory-queue, connection), and scheduler (schedule-runner, retention)
Files: backend/src/core/backup/delta.ts, backend/src/core/backup/verification.ts, backend/src/core/backup/result-builder.ts, backend/src/core/backup/checksum.ts, backend/src/core/backup/incremental/execute.ts, backend/src/core/backup/incremental/restore.ts, backend/src/core/backup/incremental/manifest.ts, backend/src/core/backup/incremental/snapshot.ts, backend/src/core/backup/incremental/archive-utils.ts, backend/src/core/anomaly/detector.ts, backend/src/core/anomaly/rule-engine.ts, backend/src/core/anomaly/rules.ts, backend/src/core/anomaly/config.ts, backend/src/core/anomaly/notification.ts, backend/src/core/anomaly/persistence.ts, backend/src/core/anomaly/scheduler.ts, backend/src/core/queue/backup-queue.ts, backend/src/core/queue/memory-queue.ts, backend/src/core/queue/connection.ts, backend/src/core/scheduler/schedule-runner.ts, backend/src/core/scheduler/retention.ts
P6: Backend API route + service coverage: write tests for uncovered API routes (jobs, schedules, notifications, settings, dashboard, agents, agent-api, webhooks, anomalies, websocket) and remaining services (webhook/service, agent/manager, agent/heartbeat, agent/jobs, notifications/email, docker/client, docker/volumes). Final PR sets coverage threshold in vitest configs.
Files: backend/src/api/routes/jobs.ts, backend/src/api/routes/schedules.ts, backend/src/api/routes/notifications.ts, backend/src/api/routes/settings.ts, backend/src/api/routes/dashboard.ts, backend/src/api/routes/agents.ts, backend/src/api/routes/agent-api.ts, backend/src/api/routes/webhooks.ts, backend/src/api/routes/anomalies.ts, backend/src/api/routes/websocket.ts, backend/src/core/webhook/service.ts, backend/src/core/agent/manager.ts, backend/src/core/agent/heartbeat.ts, backend/src/core/agent/jobs.ts, backend/src/core/notifications/email.ts, backend/src/docker/client.ts, backend/src/docker/volumes.ts, backend/vitest.config.ts
Depends on: P5
Post-completion: When each phase is complete, comment on #30 with a summary of what was implemented.
Lint errors could not be fully resolved. A new lint-fix tracking issue has been opened: #37
blocked:lint-failed — pre-existing lint errors. Lint-fix issue filed: docker_backup#37. Will be picked up when that's resolved.