package main import ( "net/http" "testing" "codeberg.org/vlbeaudoin/voki/v3" "github.com/spf13/viper" ) func init() { initConfig() } func TestAPI(t *testing.T) { var cfg Config if err := viper.Unmarshal(&cfg); err != nil { t.Error(err) return } httpClient := http.DefaultClient defer httpClient.CloseIdleConnections() vokiClient := voki.New(httpClient, "localhost", cfg.API.Key, cfg.API.Port, "http") apiClient := APIClient{vokiClient} t.Run("get API health", func(t *testing.T) { health, err := apiClient.GetHealth() if err != nil { t.Error(err) } want := "ok" got := health if want != got { t.Errorf("want=%s got=%s", want, got) } }) t.Run("insert programmes", func(t *testing.T) { programmes := []Programme{ {"404.42", "Cool programme"}, {"200.10", "Autre programme"}, } t.Log("programmes:", programmes) _, err := apiClient.InsertProgrammes(programmes...) if err != nil { t.Error(err) } }) testMembres := []Membre{ { ID: "0000000", FirstName: "Test", LastName: "User", ProgrammeID: "404.42", }, { ID: "1234567", FirstName: "Deadname", LastName: "User", PreferedName: "User, Test-Name", ProgrammeID: "200.10", }, } t.Run("get programmes, max 50", func(t *testing.T) { programmes, err := apiClient.GetProgrammes(50) if err != nil { t.Error(err) } t.Log(programmes) }) t.Run("insert membres", func(t *testing.T) { _, err := apiClient.InsertMembres(testMembres...) if err != nil { t.Error(err) } }) t.Run("get membre", func(t *testing.T) { membre, err := apiClient.GetMembre(testMembres[0].ID) if err != nil { t.Error(err) } want := testMembres[0].LastName got := membre.LastName if want != got { t.Errorf("want=%s got=%s", want, got) } }) t.Run("get invalid membre", func(t *testing.T) { _, err := apiClient.GetMembre("invalid") if err == nil { t.Error("`invalid` should not have been accepted as value to GetMembre, but did") } }) t.Run("update membre prefered name", func(t *testing.T) { if err := apiClient.UpdateMembrePreferedName(testMembres[0].ID, "User, Galaxy"); err != nil { t.Error(err) } }) t.Run("get membres, max 50", func(t *testing.T) { membres, err := apiClient.GetMembres(50) if err != nil { t.Error(err) } t.Log(membres) }) t.Run("get membre for display", func(t *testing.T) { membre, err := apiClient.GetMembreForDisplay(testMembres[0].ID) if err != nil { t.Error(err) } t.Log(membre) }) t.Run("get membres for display, max 5", func(t *testing.T) { membres, err := apiClient.GetMembresForDisplay(5) if err != nil { t.Error(err) } t.Log(membres) }) }