// Copyright 2026 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT package middleware import ( "net/http" "net/http/httptest" "testing" "gitea.dev/modules/translation" "gitea.com/go-chi/binding" "github.com/stretchr/testify/assert" ) type testRangeForm struct { Hours int `binding:"Range(0,1000)"` } func (f *testRangeForm) Validate(_ *http.Request, errs binding.Errors) binding.Errors { return errs } func TestBuildValidationErrorForUser(t *testing.T) { // an out-of-range value must reach its own message instead of the panicking "default" branch form := &testRangeForm{Hours: 2000} errs := binding.Validate(httptest.NewRequest(http.MethodPost, "/", nil), form) errorMessage, errorFieldName, fieldNames := BuildValidationErrorForUser(form, translation.MockLocale{}, errs) assert.Equal(t, "form.range_error:Hours,0,1000", errorMessage) assert.Equal(t, "Hours", errorFieldName) assert.Equal(t, []string{"Hours"}, fieldNames) }