some changes
This commit is contained in:
114
admin/admin_test.go
Normal file
114
admin/admin_test.go
Normal file
@@ -0,0 +1,114 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
authsvc "encore.app/auth"
|
||||
profilessvc "encore.app/profiles"
|
||||
encoreauth "encore.dev/beta/auth"
|
||||
"encore.dev/et"
|
||||
"encore.dev/types/uuid"
|
||||
)
|
||||
|
||||
func TestUpdateProfileMemberTypeBroadcasterLifecycle(t *testing.T) {
|
||||
adminID, _ := uuid.NewV4()
|
||||
et.OverrideAuthInfo(encoreauth.UID(adminID.String()), &authsvc.AuthData{Role: "admin"})
|
||||
defer et.OverrideAuthInfo("", nil)
|
||||
|
||||
ctx := context.Background()
|
||||
|
||||
// 1. Create a test user profile (initially visitor)
|
||||
testUserID, err := uuid.NewV4()
|
||||
if err != nil {
|
||||
t.Fatalf("failed to generate user id: %v", err)
|
||||
}
|
||||
|
||||
_, err = profilesDB.Exec(ctx, `
|
||||
INSERT INTO user_profiles (user_id, email, display_name, member_type)
|
||||
VALUES ($1, $2, $3, 'visitor')
|
||||
`, testUserID, "test-broadcaster-lifecycle@example.com", "Lifecycle Artist")
|
||||
if err != nil {
|
||||
t.Fatalf("failed to insert test profile: %v", err)
|
||||
}
|
||||
|
||||
// 2. Change member_type to 'broadcaster' -> should create broadcaster with used=true, enabled=false
|
||||
p, err := UpdateProfileMemberType(ctx, testUserID, &UpdateProfileMemberTypeParams{
|
||||
MemberType: profilessvc.MemberTypeBroadcaster,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("UpdateProfileMemberType to broadcaster failed: %v", err)
|
||||
}
|
||||
if p.MemberType != profilessvc.MemberTypeBroadcaster {
|
||||
t.Errorf("expected member_type 'broadcaster', got '%s'", p.MemberType)
|
||||
}
|
||||
if p.Broadcaster == nil {
|
||||
t.Fatalf("expected profile.Broadcaster to be non-nil")
|
||||
}
|
||||
|
||||
createdBroadcasterID := *p.Broadcaster
|
||||
|
||||
// Verify in broadcasters DB: used=true, enabled=false
|
||||
var enabled, used bool
|
||||
err = broadcastersDB.QueryRow(ctx, `SELECT enabled, used FROM broadcasters WHERE id = $1`, createdBroadcasterID).Scan(&enabled, &used)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to query broadcaster: %v", err)
|
||||
}
|
||||
if !used {
|
||||
t.Errorf("expected broadcaster.used to be true, got false")
|
||||
}
|
||||
if enabled {
|
||||
t.Errorf("expected broadcaster.enabled to be false, got true")
|
||||
}
|
||||
|
||||
// 3. Change member_type from 'broadcaster' to 'visitor' -> should disable broadcaster (enabled=false, used=false) and set profile.broadcaster = nil
|
||||
p2, err := UpdateProfileMemberType(ctx, testUserID, &UpdateProfileMemberTypeParams{
|
||||
MemberType: profilessvc.MemberTypeVisitor,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("UpdateProfileMemberType to visitor failed: %v", err)
|
||||
}
|
||||
if p2.MemberType != profilessvc.MemberTypeVisitor {
|
||||
t.Errorf("expected member_type 'visitor', got '%s'", p2.MemberType)
|
||||
}
|
||||
if p2.Broadcaster != nil {
|
||||
t.Errorf("expected profile.Broadcaster to be nil, got %v", p2.Broadcaster)
|
||||
}
|
||||
|
||||
// Verify in broadcasters DB: used=false, enabled=false
|
||||
err = broadcastersDB.QueryRow(ctx, `SELECT enabled, used FROM broadcasters WHERE id = $1`, createdBroadcasterID).Scan(&enabled, &used)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to query broadcaster: %v", err)
|
||||
}
|
||||
if used {
|
||||
t.Errorf("expected broadcaster.used to be false after type change, got true")
|
||||
}
|
||||
if enabled {
|
||||
t.Errorf("expected broadcaster.enabled to be false after type change, got true")
|
||||
}
|
||||
|
||||
// 4. Change back to 'broadcaster' -> should reuse existing broadcaster and set used=true, enabled=false
|
||||
p3, err := UpdateProfileMemberType(ctx, testUserID, &UpdateProfileMemberTypeParams{
|
||||
MemberType: profilessvc.MemberTypeBroadcaster,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("UpdateProfileMemberType back to broadcaster failed: %v", err)
|
||||
}
|
||||
if p3.MemberType != profilessvc.MemberTypeBroadcaster {
|
||||
t.Errorf("expected member_type 'broadcaster', got '%s'", p3.MemberType)
|
||||
}
|
||||
if p3.Broadcaster == nil || *p3.Broadcaster != createdBroadcasterID {
|
||||
t.Errorf("expected existing broadcaster ID %v, got %v", createdBroadcasterID, p3.Broadcaster)
|
||||
}
|
||||
|
||||
err = broadcastersDB.QueryRow(ctx, `SELECT enabled, used FROM broadcasters WHERE id = $1`, createdBroadcasterID).Scan(&enabled, &used)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to query broadcaster: %v", err)
|
||||
}
|
||||
if !used {
|
||||
t.Errorf("expected broadcaster.used to be true on reactivation, got false")
|
||||
}
|
||||
if enabled {
|
||||
t.Errorf("expected broadcaster.enabled to be false on reactivation, got true")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user