veza/veza-backend-api/internal/testutils/fixtures_factory_test.go.disabled
2025-12-03 20:29:37 +01:00

196 lines
No EOL
5 KiB
Text

package testutils
import (
"fmt"
"testing"
"veza-backend-api/internal/models"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestUserFactory(t *testing.T) {
factory := NewUserFactory().
WithUsername("admin").
WithEmail("admin@example.com").
WithRole("admin")
user := factory.Build()
assert.Equal(t, "admin", user.Username)
assert.Equal(t, "admin@example.com", user.Email)
assert.Equal(t, "admin", user.Role)
assert.True(t, user.IsAdmin)
}
func TestUserFactory_WithCustomFields(t *testing.T) {
factory := NewUserFactory().
WithUsername("testuser").
WithEmail("test@example.com").
WithFirstName("John").
WithLastName("Doe").
WithIsActive(false).
WithIsVerified(true)
user := factory.Build()
assert.Equal(t, "testuser", user.Username)
assert.Equal(t, "test@example.com", user.Email)
assert.Equal(t, "John", user.FirstName)
assert.Equal(t, "Doe", user.LastName)
assert.False(t, user.IsActive)
assert.True(t, user.IsVerified)
}
func TestUserFactory_MustBuild(t *testing.T) {
db := SetupTestDB()
factory := NewUserFactory().
WithUsername("mustbuild").
WithEmail("mustbuild@example.com")
user := factory.MustBuild(db)
assert.NotEqual(t, uuid.Nil, user.ID)
assert.Equal(t, "mustbuild", user.Username)
assert.Equal(t, "mustbuild@example.com", user.Email)
// Vérifier que l'utilisateur existe en DB
var found models.User
err := db.First(&found, "id = ?", user.ID).Error
require.NoError(t, err)
assert.Equal(t, user.Username, found.Username)
}
func TestTrackFactory(t *testing.T) {
userID := uuid.New()
factory := NewTrackFactory(userID).
WithTitle("My Track").
WithArtist("My Artist").
WithDescription("A great track").
WithDuration(240)
track := factory.Build()
assert.Equal(t, userID, track.UserID)
assert.Equal(t, "My Track", track.Title)
assert.Equal(t, "My Artist", track.Artist)
assert.Equal(t, "A great track", track.Description)
assert.Equal(t, 240, track.Duration)
}
func TestTrackFactory_MustBuild(t *testing.T) {
db := SetupTestDB()
// Créer un utilisateur créateur d'abord
userFactory := NewUserFactory().WithUsername("creator")
creator := userFactory.MustBuild(db)
trackFactory := NewTrackFactory(creator.ID).
WithTitle("Test Track").
WithArtist("Test Artist")
track := trackFactory.MustBuild(db)
assert.NotZero(t, track.ID)
assert.Equal(t, creator.ID, track.UserID)
assert.Equal(t, "Test Track", track.Title)
}
func TestPlaylistFactory(t *testing.T) {
userID := uuid.New()
factory := NewPlaylistFactory(userID).
WithName("My Playlist").
WithDescription("A great playlist")
playlist := factory.Build()
assert.Equal(t, userID, playlist.UserID)
assert.Equal(t, "My Playlist", playlist.Title)
assert.Equal(t, "A great playlist", playlist.Description)
}
func TestPlaylistFactory_MustBuild(t *testing.T) {
db := SetupTestDB()
// Créer un utilisateur d'abord
userFactory := NewUserFactory().WithUsername("playlist_owner")
owner := userFactory.MustBuild(db)
playlistFactory := NewPlaylistFactory(owner.ID).
WithName("Test Playlist").
WithDescription("Test Description")
playlist := playlistFactory.MustBuild(db)
assert.NotZero(t, playlist.ID)
assert.Equal(t, owner.ID, playlist.UserID)
assert.Equal(t, "Test Playlist", playlist.Title)
}
func TestCreateUsers(t *testing.T) {
db := SetupTestDB()
users := CreateUsers(db, 5)
require.Len(t, users, 5)
for i, user := range users {
assert.NotEqual(t, uuid.Nil, user.ID)
assert.Equal(t, fmt.Sprintf("user%d", i), user.Username)
assert.Equal(t, fmt.Sprintf("user%d@example.com", i), user.Email)
}
}
func TestCreateTracks(t *testing.T) {
db := SetupTestDB()
// Créer un utilisateur créateur d'abord
userFactory := NewUserFactory().WithUsername("track_creator")
creator := userFactory.MustBuild(db)
tracks := CreateTracks(db, creator.ID, 3)
require.Len(t, tracks, 3)
for i, track := range tracks {
assert.NotZero(t, track.ID)
assert.Equal(t, creator.ID, track.UserID)
assert.Equal(t, fmt.Sprintf("Test Track %d", i+1), track.Title)
assert.Equal(t, fmt.Sprintf("Test Artist %d", i+1), track.Artist)
}
}
func TestUserFactory_Defaults(t *testing.T) {
factory := NewUserFactory()
user := factory.Build()
assert.Equal(t, "testuser", user.Username)
assert.Equal(t, "test@example.com", user.Email)
assert.Equal(t, "user", user.Role)
assert.True(t, user.IsActive)
assert.True(t, user.IsVerified)
assert.False(t, user.IsAdmin)
}
func TestTrackFactory_Defaults(t *testing.T) {
userID := uuid.New()
factory := NewTrackFactory(userID)
track := factory.Build()
assert.Equal(t, userID, track.UserID)
assert.Equal(t, "Test Track", track.Title)
assert.Equal(t, "Test Artist", track.Artist)
assert.Equal(t, "A test track", track.Description)
assert.Equal(t, 180, track.Duration)
}
func TestPlaylistFactory_Defaults(t *testing.T) {
userID := uuid.New()
factory := NewPlaylistFactory(userID)
playlist := factory.Build()
assert.Equal(t, userID, playlist.UserID)
assert.Equal(t, "Test Playlist", playlist.Title)
assert.Equal(t, "A test playlist", playlist.Description)
}