veza/veza-backend-api/internal/testutils
senke 7cfd48a82a
Some checks failed
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
Stream Server CI / test (push) Failing after 0s
fix(release): v1.0.1 — Conformité complète ROADMAP checklist
- Sécurité: npm 0 CRITICAL, cargo audit 0 vulnérabilités
- OpenAPI: @Param id corrigé pour /tracks/quota/{id}
- Tests: Payment E2E passe, OAuth DATABASE_URL fallback
- Migrations: 000_mark_consolidated.sql
- veza-stream-server: prometheus 0.14, validator 0.19
- docs: SECURITY_SCAN_RC1, V1_SIGNOFF, PROJECT_STATE
2026-03-03 20:17:54 +01:00
..
integration STABILISATION: phase 3–5 – API contract, tests & chat-server hardening 2025-12-06 17:21:59 +01:00
servicemocks stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
benchmark.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
db.go fix(backend): add table name whitelist in testutils/db.go 2026-02-11 22:57:40 +01:00
db_cleanup_test.go chore(v0.102): consolidate remaining changes — docs, frontend, backend 2026-02-20 13:02:12 +01:00
db_test.go chore(v0.102): consolidate remaining changes — docs, frontend, backend 2026-02-20 13:02:12 +01:00
db_utils.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
fixtures.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
fixtures_factory_test.go.disabled adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
fixtures_test.go chore(v0.102): consolidate remaining changes — docs, frontend, backend 2026-02-20 13:02:12 +01:00
golden.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
golden_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
parallel.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
parallel_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
performance.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
performance_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
README.md adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
setup.go fix(release): v1.0.1 — Conformité complète ROADMAP checklist 2026-03-03 20:17:54 +01:00
setup_redis.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
setup_test_helper.go chore(v0.102): consolidate remaining changes — docs, frontend, backend 2026-02-20 13:02:12 +01:00
table_test.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
table_test_test.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00

Test Utilities Package

Ce package fournit des utilitaires pour faciliter l'écriture de tests dans le projet Veza.

Fonctions disponibles

Gestion de la base de données de test

SetupTestDB() *gorm.DB

Crée une base de données de test en mémoire avec toutes les tables nécessaires. Utilise SQLite en mémoire pour des tests rapides sans dépendance externe.

Exemple d'utilisation:

func TestMyFeature(t *testing.T) {
    db := testutils.SetupTestDB()
    defer testutils.CleanupTestDB(db)
    
    // Votre code de test ici
}

CleanupTestDB(db *gorm.DB) error

Ferme proprement la base de données de test.

ResetTestDB(db *gorm.DB) error

Supprime toutes les données de la base de données de test. Utile pour réinitialiser l'état entre les tests.

GetDBStats(db *gorm.DB) (*sql.DBStats, error)

Retourne les statistiques de la base de données de test.

Fixtures de données

Utilisateurs

  • CreateTestUser(db *gorm.DB) (*models.User, error): Crée un utilisateur de test avec des valeurs par défaut.
  • CreateTestUserWithCustomData(db *gorm.DB, username, email string) (*models.User, error): Crée un utilisateur de test avec des données personnalisées.
  • CreateTestAdmin(db *gorm.DB) (*models.User, error): Crée un utilisateur administrateur de test.
  • CreateMultipleTestUsers(db *gorm.DB, count int) ([]*models.User, error): Crée plusieurs utilisateurs de test.

Tracks

  • CreateTestTrack(db *gorm.DB, creatorID int64) (*models.Track, error): Crée un track de test.
  • CreateTestTrackWithCustomData(db *gorm.DB, creatorID int64, title, artist string) (*models.Track, error): Crée un track de test avec des données personnalisées.
  • CreateMultipleTestTracks(db *gorm.DB, creatorID int64, count int) ([]*models.Track, error): Crée plusieurs tracks de test.

Autres

  • CreateTestPlaylist(db *gorm.DB, userID int64) (*models.Playlist, error): Crée une playlist de test.
  • CreateTestRoom(db *gorm.DB, createdBy int64) (*models.Room, error): Crée une room de test.
  • CreateTestMessage(db *gorm.DB, roomID, userID int64, content string) (*models.Message, error): Crée un message de test.

Exemple complet

package mypackage_test

import (
    "testing"
    "veza-backend-api/internal/testutils"
    "github.com/stretchr/testify/assert"
)

func TestMyFeature(t *testing.T) {
    // Setup
    db := testutils.SetupTestDB()
    defer testutils.CleanupTestDB(db)
    
    // Créer des données de test
    user, err := testutils.CreateTestUser(db)
    assert.NoError(t, err)
    
    track, err := testutils.CreateTestTrack(db, user.ID)
    assert.NoError(t, err)
    
    // Votre test ici
    assert.Equal(t, user.ID, track.CreatorID)
    
    // Cleanup (optionnel si on utilise defer)
    // testutils.ResetTestDB(db)
}

Notes importantes

  • La base de données de test utilise SQLite en mémoire, donc les données sont perdues après la fermeture.
  • Les contraintes de clés étrangères sont respectées.
  • Le modèle Session n'est pas inclus dans les migrations automatiques car il utilise uuid.UUID avec gen_random_uuid() qui n'est pas supporté par SQLite.