Nest test gap planı
~15 dkOpsBackendTaslak
Eksik test kapsamı ve öncelik planı
Nest Test Gap Planı
Mühendislik notu
Bu sayfa entegratör yol haritasından çok ekip içi operasyon/backlog içeriği taşır. Entegrasyon için API Reference ve ilgili ürün rehberlerini kullanın.
Generated at: 2026-03-23 (Europe/Istanbul)
1) Snapshot
- Hedef: Tüm repo için Nest test boşluklarını çıkarıp eksikleri kapatmaya yönelik uygulanabilir backlog üretmek.
- Envanter doğrulama komutu:
npm run test -- --listTests - Jest tarafından görülen spec dosyası:
148 - Testlenmesi beklenen hedef class dosyası:
310 - Test referansı bulunan class dosyası:
151 - Test boşluğu olan class dosyası:
159 - Kabul hedefi: Global
statement/function >= 70%,branch >= 60%.
Yöntem
- Gap analizi,
srcaltındacontroller/service/usecase/use-case/repository/gateway/guard/strategy/validator/validatedesenine uyan dosyaları çıkarır. - Her hedef dosyadaki
export classadları, repo içindeki*.spec.tsve*.e2e-spec.tsiçeriklerinde referans araması ile eşleştirilir. - Eşleşme yoksa dosya backlog'a
uncoveredolarak eklenir.
Sınırlamalar
- Bu yöntem heuristic'tir; false positive/false negative riski vardır.
- Sınıf adı farklı import alias ile kullanılıyorsa otomatik tespit kaçırabilir.
- Bu nedenle her backlog maddesi için manuel doğrulama adımı zorunludur.
2) Önceliklendirme Matrisi
| Modül | Uncovered | Öncelik |
|---|---|---|
| live-stream | 35 | P0 |
| legal-documents | 14 | P0 |
| credit-packages | 13 | P0 |
| integrations | 13 | P0 |
| maintenance | 13 | P0 |
| live-stream-feedback | 7 | P1 |
| 6 | P1 | |
| follow | 6 | P1 |
| notifications | 6 | P1 |
| users | 6 | P1 |
| leaderboard | 5 | P1 |
| live-stream-chat | 5 | P1 |
| auth | 4 | P2 |
| faq | 3 | P2 |
| media | 3 | P2 |
| outbox | 3 | P2 |
| gift | 2 | P2 |
| search | 2 | P2 |
| version | 2 | P2 |
| app | 1 | P2 |
| block | 1 | P2 |
| chat | 1 | P2 |
| contact | 1 | P2 |
| file-upload | 1 | P2 |
| live-stream-ban | 1 | P2 |
| message | 1 | P2 |
| participant | 1 | P2 |
| queues | 1 | P2 |
| reports | 1 | P2 |
| user-settings | 1 | P2 |
- P0 toplam madde:
88 - P1 toplam madde:
41 - P2 toplam madde:
30
3) Dalga Planı (P0 / P1 / P2)
P0 (Hedef: 2026-04-15)
- Modüller:
live-stream (35),legal-documents (14),integrations (13),credit-packages (13),maintenance (13). - Amaç: Ürün riski yüksek domain akışlarında temel güvenceyi tamamlamak.
- Çıkış kriteri: P0 kapsamındaki yeni testlerin tamamı yeşil; dalga sonunda
npm run testvenpm run test:covçalıştırılmış olmalı.
P1 (Hedef: 2026-05-15)
- Modüller:
live-stream-feedback (7),email (6),notifications (6),users (6),follow (6),live-stream-chat (5),leaderboard (5). - Amaç: Kullanıcı etkisi yüksek orta riskli akışlarda kapsam boşluklarını kapatmak.
- Çıkış kriteri: P1 kapsamındaki testlerin tamamı yeşil; regresyon ve flaky kontrolü tamamlanmış olmalı.
P2 (Hedef: 2026-06-15)
- Modüller:
auth (4),media (3),faq (3)ve kalan düşük etkilicontroller/service/repositoryboşlukları. - Amaç: Kalan teknik borçları temizleyerek global kapsam hedefini tutturmak.
- Çıkış kriteri: Global
statement/function >= 70%,branch >= 60%.
Minimum Senaryo Seti
- Controller testleri: auth/guard, validation, success, hata mapping.
- Use-case/Service testleri: happy path, domain hata, dependency failure, boundary.
- Repository testleri: query filter, pagination/sort, not-found/null, write failure.
4) Dosya Bazlı Backlog
Satır formatı:
- [ ] <absolute-or-repo-path> | katman(use-case/controller/service/repository) | öncelik(P0/P1/P2) | test tipi(unit/integration) | owner | durum
Toplam backlog satırı: 159 (Gap sayısı ile eşleşmeli: 159).
- src/credit-packages/credit-packages.controller.ts | controller | P0 | integration | TBD | Todo
- src/credit-packages/repository/credit-package.repository.ts | repository | P0 | integration | TBD | Todo
- src/credit-packages/repository/credit-transaction.repository.ts | repository | P0 | integration | TBD | Todo
- src/credit-packages/services/credit-packages.service.ts | service | P0 | unit | TBD | Todo
- src/credit-packages/use-cases/add-credits-to-user.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/credit-packages/use-cases/create-credit-package.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/credit-packages/use-cases/delete-credit-package.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/credit-packages/use-cases/get-credit-package-by-id.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/credit-packages/use-cases/get-credit-packages.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/credit-packages/use-cases/get-user-transactions.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/credit-packages/use-cases/manually-add-credits-to-user.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/credit-packages/use-cases/purchase-credit-package.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/credit-packages/use-cases/update-credit-package.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/integrations/agora-api/agora-api.controller.ts | controller | P0 | integration | TBD | Todo
- src/integrations/agora-api/use-cases/get-channel-list.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/integrations/agora-api/use-cases/get-channel-user-list.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/integrations/revenuecat/revenuecat-webhook.controller.ts | controller | P0 | integration | TBD | Todo
- src/integrations/revenuecat/revenuecat.service.ts | service | P0 | unit | TBD | Todo
- src/integrations/revenuecat/services/revenuecat-webhook.service.ts | service | P0 | unit | TBD | Todo
- src/integrations/slack/slack.controller.ts | controller | P0 | integration | TBD | Todo
- src/integrations/slack/slack.service.ts | service | P0 | unit | TBD | Todo
- src/integrations/stripe/services/stripe-webhook.service.ts | service | P0 | unit | TBD | Todo
- src/integrations/stripe/stripe-webhook.controller.ts | controller | P0 | integration | TBD | Todo
- src/integrations/stripe/stripe.controller.ts | controller | P0 | integration | TBD | Todo
- src/integrations/stripe/stripe.service.ts | service | P0 | unit | TBD | Todo
- src/integrations/twilio/twilio.service.ts | service | P0 | unit | TBD | Todo
- src/legal-documents/repository/legal-document.repository.ts | repository | P0 | integration | TBD | Todo
- src/legal-documents/repository/user-consent.repository.ts | repository | P0 | integration | TBD | Todo
- src/legal-documents/services/consent-analytics.service.ts | service | P0 | unit | TBD | Todo
- src/legal-documents/services/document-template.service.ts | service | P0 | unit | TBD | Todo
- src/legal-documents/use-cases/get-active-document.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/legal-documents/use-cases/get-all-document-versions.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/legal-documents/use-cases/get-all-documents.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/legal-documents/use-cases/get-consent-analytics.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/legal-documents/use-cases/get-document-by-id.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/legal-documents/use-cases/get-document-with-template.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/legal-documents/use-cases/get-user-consents.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/legal-documents/use-cases/record-bulk-consent.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/legal-documents/use-cases/record-user-consent.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/legal-documents/use-cases/update-document.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/feedback/live-stream-feedback.controller.ts | controller | P0 | integration | TBD | Todo
- src/live-stream/feedback/use-cases/create-live-stream-feedback.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/repository/internal/live-stream-repository.mutation.service.ts | repository | P0 | integration | TBD | Todo
- src/live-stream/repository/internal/live-stream-repository.query.service.ts | repository | P0 | integration | TBD | Todo
- src/live-stream/repository/internal/live-stream-repository.ranking.service.ts | repository | P0 | integration | TBD | Todo
- src/live-stream/repository/live-stream-user-reminder.repository.ts | repository | P0 | integration | TBD | Todo
- src/live-stream/repository/stream-billing-transaction.repository.ts | repository | P0 | integration | TBD | Todo
- src/live-stream/services/billing/billing-charge.service.ts | service | P0 | unit | TBD | Todo
- src/live-stream/services/billing/billing-duocrowd-settlement.service.ts | service | P0 | unit | TBD | Todo
- src/live-stream/services/billing/billing-duoself-settlement.service.ts | service | P0 | unit | TBD | Todo
- src/live-stream/services/billing/billing-lock-cache.service.ts | service | P0 | unit | TBD | Todo
- src/live-stream/services/billing/billing-revenue-distributor.service.ts | service | P0 | unit | TBD | Todo
- src/live-stream/services/live-stream-pre-start-notification.service.ts | service | P0 | unit | TBD | Todo
- src/live-stream/services/live-stream-thumbnail.service.ts | service | P0 | unit | TBD | Todo
- src/live-stream/services/live-stream-user-reminder-notification.service.ts | service | P0 | unit | TBD | Todo
- src/live-stream/use-cases/end-all-live-streams.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/get-active-live-streams.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/get-active-streams-viewer-counts.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/get-all-live-streams.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/get-catch-streamers.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/get-featured-streams.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/get-funded-scheduled-streams.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/get-live-stream-by-id.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/get-live-stream-recap.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/get-live-stream-transactions.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/get-user-active-stream.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/get-viewer-count.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/join-live-stream-as-creator.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/mark-guest-invite-accepted.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/most-watched-creators.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/ready-to-fund.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/search-live-streams.use-case.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/soft-delete-live-stream.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/update-live-stream-replay-settings.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/live-stream/use-cases/whats-live-now.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/maintenance/maintenance.controller.ts | controller | P0 | integration | TBD | Todo
- src/maintenance/repository/maintenance.repository.ts | repository | P0 | integration | TBD | Todo
- src/maintenance/services/maintenance-scheduler.service.ts | service | P0 | unit | TBD | Todo
- src/maintenance/use-cases/cancel-maintenance.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/maintenance/use-cases/check-platform-maintenance.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/maintenance/use-cases/complete-maintenance.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/maintenance/use-cases/create-maintenance.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/maintenance/use-cases/delete-maintenance.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/maintenance/use-cases/get-all-maintenances.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/maintenance/use-cases/get-maintenance-by-id.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/maintenance/use-cases/get-maintenance-status.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/maintenance/use-cases/start-maintenance.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/maintenance/use-cases/update-maintenance.usecase.ts | use-case | P0 | unit | TBD | Todo
- src/email/email.controller.ts | controller | P1 | integration | TBD | Todo
- src/email/email.service.ts | service | P1 | unit | TBD | Todo
- src/email/services/email-template.service.ts | service | P1 | unit | TBD | Todo
- src/email/use-cases/send-otp-email.use-case.ts | use-case | P1 | unit | TBD | Todo
- src/email/use-cases/send-welcome-email.use-case.ts | use-case | P1 | unit | TBD | Todo
- src/email/use-cases/test-email.use-case.ts | use-case | P1 | unit | TBD | Todo
- src/follow/follow.controller.ts | controller | P1 | integration | TBD | Todo
- src/follow/use-cases/get-followers.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/follow/use-cases/get-following.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/follow/use-cases/get-mutuals.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/follow/use-cases/is-following.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/follow/use-cases/unfollow-user.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/leaderboard/leaderboard.controller.ts | controller | P1 | integration | TBD | Todo
- src/leaderboard/use-cases/get-paginated-biggest-boost-rankings.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/leaderboard/use-cases/get-paginated-watch-time-rankings.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/leaderboard/use-cases/get-user-biggest-boost-rank.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/leaderboard/use-cases/get-user-watch-time-rank.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/live-stream-chat/repository/stream-reaction.repository.ts | repository | P1 | integration | TBD | Todo
- src/live-stream-chat/repository/superlike.repository.ts | repository | P1 | integration | TBD | Todo
- src/live-stream-chat/stream-chat.controller.ts | controller | P1 | integration | TBD | Todo
- src/live-stream-chat/stream-chat.service.ts | service | P1 | unit | TBD | Todo
- src/live-stream-chat/use-cases/send-superlike.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/live-stream-feedback/live-stream-feedback.controller.ts | controller | P1 | integration | TBD | Todo
- src/live-stream-feedback/repository/live-stream-feedback.repository.ts | repository | P1 | integration | TBD | Todo
- src/live-stream-feedback/use-cases/create-live-stream-feedback.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/live-stream-feedback/use-cases/delete-feedback.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/live-stream-feedback/use-cases/get-all-feedbacks.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/live-stream-feedback/use-cases/get-feedback-by-id.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/live-stream-feedback/use-cases/get-feedback-statistics.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/notifications/repository/device-token.repository.ts | repository | P1 | integration | TBD | Todo
- src/notifications/repository/notification.repository.ts | repository | P1 | integration | TBD | Todo
- src/notifications/use-cases/create-notification.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/notifications/use-cases/delete-notification.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/notifications/use-cases/delete-notifications.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/notifications/use-cases/update-notification-status.usecase.ts | use-case | P1 | unit | TBD | Todo
- src/users/onboarding.controller.ts | controller | P1 | integration | TBD | Todo
- src/users/services/internal/users-admin-analytics.internal-service.ts | service | P1 | unit | TBD | Todo
- src/users/services/internal/users-discovery.internal-service.ts | service | P1 | unit | TBD | Todo
- src/users/services/internal/users-profile.internal-service.ts | service | P1 | unit | TBD | Todo
- src/users/services/internal/users-registration.internal-service.ts | service | P1 | unit | TBD | Todo
- src/users/use-cases/change-username.use-case.ts | use-case | P1 | unit | TBD | Todo
- src/app/app.service.ts | service | P2 | unit | TBD | Todo
- src/auth/guards/throttler-auth.guard.ts | service | P2 | unit | TBD | Todo
- src/auth/services/email-otp.service.ts | service | P2 | unit | TBD | Todo
- src/auth/services/otp.service.ts | service | P2 | unit | TBD | Todo
- src/auth/services/sms.service.ts | service | P2 | unit | TBD | Todo
- src/block/block.controller.ts | controller | P2 | integration | TBD | Todo
- src/chat/chat.controller.ts | controller | P2 | integration | TBD | Todo
- src/contact/contact.controller.ts | controller | P2 | integration | TBD | Todo
- src/faq/faq.controller.ts | controller | P2 | integration | TBD | Todo
- src/faq/repository/faq.repository.ts | repository | P2 | integration | TBD | Todo
- src/faq/use-cases/get-faq-by-id.usecase.ts | use-case | P2 | unit | TBD | Todo
- src/file-upload/file-upload.controller.ts | controller | P2 | integration | TBD | Todo
- src/gift/gift.controller.ts | controller | P2 | integration | TBD | Todo
- src/gift/use-cases/calculate-total-gift.usecase.ts | use-case | P2 | unit | TBD | Todo
- src/live-stream-ban/live-stream-ban.controller.ts | controller | P2 | integration | TBD | Todo
- src/media/media.controller.ts | controller | P2 | integration | TBD | Todo
- src/media/media.service.ts | service | P2 | unit | TBD | Todo
- src/media/repository/media.repository.ts | repository | P2 | integration | TBD | Todo
- src/message/message.gateway.ts | service | P2 | unit | TBD | Todo
- src/outbox/services/domain-event-publisher.service.ts | service | P2 | unit | TBD | Todo
- src/outbox/services/outbox-feature-flags.service.ts | service | P2 | unit | TBD | Todo
- src/outbox/services/outbox-writer.service.ts | service | P2 | unit | TBD | Todo
- src/participant/participant.controller.ts | controller | P2 | integration | TBD | Todo
- src/queues/services/domain-outbox-queue.service.ts | service | P2 | unit | TBD | Todo
- src/reports/reports.service.ts | service | P2 | unit | TBD | Todo
- src/search/search.controller.ts | controller | P2 | integration | TBD | Todo
- src/search/use-cases/unified-search.use-case.ts | use-case | P2 | unit | TBD | Todo
- src/user-settings/user-settings.controller.ts | controller | P2 | integration | TBD | Todo
- src/version/version.controller.ts | controller | P2 | integration | TBD | Todo
- src/version/version.service.ts | service | P2 | unit | TBD | Todo
5) DoD ve Kabul Kriterleri
Dalga Bazlı Kalite Kapısı
- P0 tamamlandığında hedef modüllerdeki yeni testler tamamen yeşil olmalı.
- Her dalga sonunda
npm run testvenpm run test:covçalıştırılmalı, eşik kontrolü raporlanmalı.
PR Checklist
- Yeni testler deterministic olmalı.
- Mock/stub bağımlılıkları modül sınırına uygun olmalı.
- Flaky test bulunmamalı.
- Backlog maddesi kapatılırken ilgili test dosyası ve kapsam etkisi PR açıklamasına eklenmeli.
Varsayımlar
- Gap analizi class adı + spec referansı heuristiğine dayanır; manuel doğrulama zorunludur.
- Coverage çıktıları boş/eski olabilir; birincil kaynak mevcut repo envanteri ve Jest test listesidir.
- Çalışma ağacı kirli olabilir; plan uygulaması mevcut kullanıcı değişikliklerine dokunmadan ilerlemelidir.