3.2 KiB
3.2 KiB
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
Sessionn'est pas inclus dans les migrations automatiques car il utiliseuuid.UUIDavecgen_random_uuid()qui n'est pas supporté par SQLite.