some changes

This commit is contained in:
fabio
2026-10-06 09:55:38 +02:00
parent 664db8f7a0
commit ff6c30d205
14 changed files with 1856 additions and 47 deletions

View File

@@ -0,0 +1,241 @@
package broadcasters
import (
"context"
"testing"
"encore.app/config"
)
func TestCreateBroadcasterParamsValidate(t *testing.T) {
tests := []struct {
name string
params *CreateBroadcasterParams
wantErr bool
}{
{
name: "nil params",
params: nil,
wantErr: true,
},
{
name: "empty display name",
params: &CreateBroadcasterParams{
DisplayName: "",
},
wantErr: true,
},
{
name: "whitespace display name",
params: &CreateBroadcasterParams{
DisplayName: " ",
},
wantErr: true,
},
{
name: "valid broadcaster params with defaults applied",
params: &CreateBroadcasterParams{
DisplayName: "DJ Rossi",
},
wantErr: false,
},
{
name: "valid full broadcaster params",
params: &CreateBroadcasterParams{
DisplayName: "Live Streamer Alpha",
Category: "Music",
CategoryColor: "#ec4899",
Bio: "Official channel for live stream sets.",
Certified: true,
Availability: "live",
Phone: "+39 02 1234567",
Services: []string{"Live DJ", "Video chat"},
Languages: []string{"IT", "EN"},
},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := tt.params.Validate()
if (err != nil) != tt.wantErr {
t.Errorf("Validate() error = %v, wantErr %v", err, tt.wantErr)
}
if err == nil {
if tt.params.Category == "" {
t.Errorf("expected default Category, got empty string")
}
if tt.params.CategoryColor == "" {
t.Errorf("expected default CategoryColor, got empty string")
}
if tt.params.Availability == "" {
t.Errorf("expected default Availability, got empty string")
}
}
})
}
}
func TestUpdateBroadcasterParamsValidate(t *testing.T) {
tests := []struct {
name string
params *UpdateBroadcasterParams
wantErr bool
}{
{
name: "nil update params",
params: nil,
wantErr: true,
},
{
name: "empty display name in update",
params: &UpdateBroadcasterParams{
DisplayName: "",
},
wantErr: true,
},
{
name: "valid update params",
params: &UpdateBroadcasterParams{
DisplayName: "New Artist Name",
},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := tt.params.Validate()
if (err != nil) != tt.wantErr {
t.Errorf("Validate() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}
func TestBroadcasterImageConfig(t *testing.T) {
if BroadcasterImageSize.Width != 600 {
t.Errorf("expected default image width 600, got %d", BroadcasterImageSize.Width)
}
if BroadcasterImageSize.Proportion != "2:3" {
t.Errorf("expected default image proportion 2:3, got %s", BroadcasterImageSize.Proportion)
}
}
func TestGetCategoriesFromSiteConfig(t *testing.T) {
resp, err := GetCategories(context.Background())
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(resp.Categories) == 0 {
t.Errorf("expected at least 1 category from SiteConfig, got 0")
}
foundGeneral := false
for _, c := range resp.Categories {
if c.Name == "General" {
foundGeneral = true
break
}
}
if !foundGeneral {
t.Errorf("expected to find General category in SiteConfig")
}
}
func TestValidateHours(t *testing.T) {
// Valid slots
valid := []BroadcasterHours{
{
Day: "Lunedì",
Hours: []BroadcasterTimeSlot{
{From: "09:00", To: "12:00"},
{From: "14:00", To: "18:00"},
},
},
}
if err := ValidateHours(valid); err != nil {
t.Errorf("expected valid hours, got error: %v", err)
}
// Invalid: From >= To
invalidRange := []BroadcasterHours{
{
Day: "Martedì",
Hours: []BroadcasterTimeSlot{
{From: "18:00", To: "12:00"},
},
},
}
if err := ValidateHours(invalidRange); err == nil {
t.Errorf("expected error for from >= to, got nil")
}
// Invalid: overlapping slots
overlapping := []BroadcasterHours{
{
Day: "Mercoledì",
Hours: []BroadcasterTimeSlot{
{From: "10:00", To: "13:00"},
{From: "12:00", To: "15:00"},
},
},
}
if err := ValidateHours(overlapping); err == nil {
t.Errorf("expected error for overlapping hours, got nil")
}
}
func TestGetBroadcasterAttributePresetsFromSiteConfig(t *testing.T) {
resp, err := GetBroadcasterAttributePresets(context.Background())
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(resp.Presets) == 0 {
t.Errorf("expected at least 1 attribute preset from SiteConfig, got 0")
}
foundGenre := false
for _, p := range resp.Presets {
if p == "Genere Musicale" {
foundGenre = true
break
}
}
if !foundGenre {
t.Errorf("expected to find 'Genere Musicale' in attribute presets")
}
}
func TestGetAvailabilityOptionsFromSiteConfig(t *testing.T) {
resp, err := GetAvailabilityOptions(context.Background())
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
expected := config.GetAvailabilityOptions()
if len(resp.Options) != len(expected) {
t.Fatalf("expected %d availability options from SiteConfig, got %d", len(expected), len(resp.Options))
}
for i, opt := range resp.Options {
if opt != expected[i] {
t.Errorf("expected option %d to be '%s', got '%s'", i, expected[i], opt)
}
}
}
func TestGetBroadcasterServicesPresetsFromSiteConfig(t *testing.T) {
resp, err := GetBroadcasterServicesPresets(context.Background())
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
expected := config.GetBroadcasterServices()
if len(resp.Services) != len(expected) {
t.Fatalf("expected %d services presets from SiteConfig, got %d", len(expected), len(resp.Services))
}
for i, svc := range resp.Services {
if svc != expected[i] {
t.Errorf("expected service %d to be '%s', got '%s'", i, expected[i], svc)
}
}
}