Files
cv-site/internal/lang/lang_test.go
T

122 lines
2.0 KiB
Go
Raw Normal View History

package lang_test
import (
"testing"
"github.com/juanatsap/cv-site/internal/lang"
)
func TestIsValid(t *testing.T) {
tests := []struct {
name string
language string
want bool
}{
{
name: "Valid - English",
language: "en",
want: true,
},
{
name: "Valid - Spanish",
language: "es",
want: true,
},
{
name: "Invalid - French",
language: "fr",
want: false,
},
{
name: "Invalid - Empty",
language: "",
want: false,
},
{
name: "Invalid - Uppercase",
language: "EN",
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := lang.IsValid(tt.language); got != tt.want {
t.Errorf("IsValid() = %v, want %v", got, tt.want)
}
})
}
}
func TestValidate(t *testing.T) {
tests := []struct {
name string
language string
wantErr bool
}{
{
name: "Valid - English",
language: "en",
wantErr: false,
},
{
name: "Valid - Spanish",
language: "es",
wantErr: false,
},
{
name: "Invalid - French",
language: "fr",
wantErr: true,
},
{
name: "Invalid - Empty",
language: "",
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := lang.Validate(tt.language)
if (err != nil) != tt.wantErr {
t.Errorf("Validate() error = %v, wantErr %v", err, tt.wantErr)
}
if err != nil && tt.wantErr {
// Check that error message includes supported languages
errMsg := err.Error()
if errMsg == "" {
t.Error("Validate() error message is empty")
}
}
})
}
}
func TestAll(t *testing.T) {
all := lang.All()
if len(all) != 2 {
t.Errorf("All() returned %d languages, want 2", len(all))
}
// Check that it contains en and es
hasEN := false
hasES := false
for _, l := range all {
if l == "en" {
hasEN = true
}
if l == "es" {
hasES = true
}
}
if !hasEN {
t.Error("All() missing 'en'")
}
if !hasES {
t.Error("All() missing 'es'")
}
}