package models import ( "testing" ) func TestProyectoTicketTableName(t *testing.T) { if got := (ProyectoTicket{}).TableName(); got != "proyecto_tickets" { t.Errorf("TableName() = %q, want %q", got, "proyecto_tickets") } } func TestTicketMensajeTableName(t *testing.T) { if got := (TicketMensaje{}).TableName(); got != "ticket_mensajes" { t.Errorf("TableName() = %q, want %q", got, "ticket_mensajes") } } func TestProyectoTicketDefaults(t *testing.T) { ticket := ProyectoTicket{ Titulo: "Test ticket", Descripcion: "Descripción", AutorNombre: "Cliente", } if ticket.Estado != "" { t.Errorf("Estado debe ser vacío por defecto (GORM default), got %q", ticket.Estado) } if ticket.Prioridad != "" { t.Errorf("Prioridad debe ser vacía por defecto (GORM default), got %q", ticket.Prioridad) } if ticket.Origen != "" { t.Errorf("Origen debe ser vacío por defecto (GORM default), got %q", ticket.Origen) } if ticket.ProyectoID != nil { t.Errorf("ProyectoID debe ser nil por defecto, got %v", ticket.ProyectoID) } if ticket.PortalUserID != nil { t.Errorf("PortalUserID debe ser nil por defecto, got %v", ticket.PortalUserID) } } func TestProyectoTicketEmailFrom(t *testing.T) { ticket := ProyectoTicket{ EmailFrom: "cliente@ejemplo.com", AutorNombre: "Cliente", Titulo: "Soporte", Origen: "email", } if ticket.EmailFrom != "cliente@ejemplo.com" { t.Errorf("EmailFrom = %q, want %q", ticket.EmailFrom, "cliente@ejemplo.com") } if ticket.Origen != "email" { t.Errorf("Origen = %q, want %q", ticket.Origen, "email") } } func TestProyectoTicketAsignado(t *testing.T) { uid := uint(42) ticket := ProyectoTicket{ AsignadoA: &uid, } if ticket.AsignadoA == nil { t.Fatal("AsignadoA debe ser no nil") } if *ticket.AsignadoA != 42 { t.Errorf("AsignadoA = %d, want %d", *ticket.AsignadoA, 42) } } func TestProyectoTicketAsignadoNil(t *testing.T) { ticket := ProyectoTicket{} if ticket.AsignadoA != nil { t.Errorf("AsignadoA debe ser nil por defecto, got %v", *ticket.AsignadoA) } } func TestTicketMensajeDefaults(t *testing.T) { msg := TicketMensaje{ TicketID: 1, Contenido: "Hola", AutorNombre: "Admin", } if msg.EsAdmin { t.Error("EsAdmin debe ser false por defecto") } if msg.LeidoPortal { t.Error("LeidoPortal debe ser false por defecto") } } // CountTicketsByEstado requiere DB real — probado en integration tests