Skip to content

test: integration tests for useCloudSave — issue #371 - #384

Merged
thomasgermain93 merged 1 commit into
mainfrom
test/issue-371-cloud-save
Mar 22, 2026
Merged

thomasgermain93 merged 1 commit into
mainfrom
test/issue-371-cloud-save

Conversation

@thomasgermain93

Copy link
Copy Markdown
Owner

Summary

  • Crée src/test/useCloudSave.test.ts avec 23 tests couvrant tous les scénarios demandés dans l'issue
  • Mock Supabase via vi.mock('@/integrations/supabase/client') — aucune dépendance réseau
  • 246 tests passent (23 nouveaux)

Scénarios couverts

  • Utilisateur non authentifié : loadFromCloud retourne null sans appeler Supabase ; saveStatsToCloud n'envoie rien
  • Flow nominal load : données cloud retournées correctement, storyProgress/dailyQuests inclus, null pour nouveau joueur, valeurs par défaut pour champs manquants
  • Migration universalShards : absent → initialisé à 0 via getDefaultPlayerData() ; présent → conservé
  • Résolution de conflit : données cloud prioritaires quand l'utilisateur est authentifié ; tutorialStep présent → conservé ; absent (tutoriel terminé) → undefined
  • Erreurs Supabase : player_saves en erreur → exception player_saves_load_failed ; player_heroes en erreur → exception player_heroes_load_failed
  • Debounce : 3 appels rapides à saveStatsToCloud → 1 seul upsert après 3 s ; canWriteCloud=false → aucun appel
  • saveHeroesToCloud : liste vide → pas d'appel ; canWriteCloud=false → pas d'appel ; cas nominal → upsert déclenché
  • removeHeroesFromCloud : liste vide → pas d'appel ; cas nominal → delete().eq().in() appelé
  • Fallback migration JSONB : save_data.heroes migré dans player_heroes si table vide
  • isSyncing : false par défaut ; retourne à false après load

Test plan

  • npm run test → 246 passed, 0 failed
  • Branche test/issue-371-cloud-save
  • Aucun over-engineering — tests pragmatiques avec mocks agressifs

Closes #371

🤖 Generated with Claude Code

Cover 10 scenarios: unauthenticated fallback, nominal load flow,
universalShards migration, conflict resolution, Supabase error handling,
saveStatsToCloud debounce (3 rapid calls → 1 upsert), saveHeroesToCloud,
removeHeroesFromCloud, legacy JSONB heroes migration, and isSyncing state.

246 tests passing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@thomasgermain93
thomasgermain93 merged commit 77b3abd into main Mar 22, 2026
1 of 2 checks passed
github-actions Bot added a commit that referenced this pull request Mar 22, 2026
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.

[TEST] Ajouter tests d'intégration pour useCloudSave / cloud sync Supabase

1 participant