checker/check_error_test.go
Onur Cinar bdb9c8ea9b
Version v2. (#158)
# Describe Request

Version v2.

# Change Type

New version.
2024-12-29 05:12:21 -08:00

143 lines
2.9 KiB
Go

// Copyright (c) 2023-2024 Onur Cinar.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
// https://github.com/cinar/checker
package v2_test
import (
"io/fs"
"testing"
v2 "github.com/cinar/checker/v2"
"github.com/cinar/checker/v2/locales"
)
func TestCheckErrorWithNotLocalizedCode(t *testing.T) {
code := "TEST"
err := v2.NewCheckError(code)
if err.Error() != code {
t.Fatalf("actual %s expected %s", err.Error(), code)
}
}
func TestCheckErrorWithLocalizedCode(t *testing.T) {
code := "TEST"
message := "Test message"
locales.EnUSMessages[code] = message
err := v2.NewCheckError(code)
if err.ErrorWithLocale("fr-FR") != message {
t.Fatalf("actual %s expected %s", err.Error(), message)
}
}
func TestCheckErrorWithDefaultLocalizedCode(t *testing.T) {
code := "TEST"
message := "Test message"
locales.EnUSMessages[code] = message
err := v2.NewCheckError(code)
if err.Error() != message {
t.Fatalf("actual %s expected %s", err.Error(), message)
}
}
func TestCheckErrorWithDataAndLocalizedCode(t *testing.T) {
code := "TEST"
message := "Test message {{.Name}}"
locales.EnUSMessages[code] = message
err := v2.NewCheckErrorWithData(code, map[string]interface{}{
"Name": "Onur",
})
expected := "Test message Onur"
if err.Error() != expected {
t.Fatalf("actual %s expected %s", err.Error(), expected)
}
}
func TestCheckErrorWithLocalizedCodeInvalidTemplate(t *testing.T) {
code := "TEST"
message := "Test message {{}"
locales.EnUSMessages[code] = message
err := v2.NewCheckError(code)
if err.Error() != code {
t.Fatalf("actual %s expected %s", err.Error(), code)
}
}
func TestCheckErrorWithLocalizedCodeInvalidExecute(t *testing.T) {
code := "TEST"
message := "{{ len .Name}}"
locales.EnUSMessages[code] = message
err := v2.NewCheckError(code)
if err.Error() != code {
t.Fatalf("actual %s expected %s", err.Error(), code)
}
}
func TestCheckErrorIsSuccess(t *testing.T) {
code := "TEST"
err1 := v2.NewCheckError(code)
err2 := v2.NewCheckError(code)
if !err1.Is(err2) {
t.Fatalf("actual %t expected %t", err1.Is(err2), true)
}
}
func TestCheckErrorIsFailure(t *testing.T) {
code1 := "TEST1"
code2 := "TEST2"
err1 := v2.NewCheckError(code1)
err2 := v2.NewCheckError(code2)
if err1.Is(err2) {
t.Fatalf("actual %t expected %t", err1.Is(err2), false)
}
}
func TestCheckErrorIsFailureWithDifferentType(t *testing.T) {
code := "TEST"
err1 := v2.NewCheckError(code)
err2 := fs.ErrExist
if err1.Is(err2) {
t.Fatalf("actual %t expected %t", err1.Is(err2), false)
}
}
func TestRegisterLocale(t *testing.T) {
locale := "de-DE"
code := "TEST"
message := "Testmeldung"
v2.RegisterLocale(locale, map[string]string{
code: message,
})
err := v2.NewCheckError(code)
if err.ErrorWithLocale("de-DE") != message {
t.Fatalf("actual %s expected %s", err.Error(), message)
}
}