122 lines
2.0 KiB
Go
122 lines
2.0 KiB
Go
|
|
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'")
|
||
|
|
}
|
||
|
|
}
|