1// SPDX-License-Identifier: AGPL-3.0-or-later
2
3package domain
4
5import (
6 "errors"
7 "fmt"
8 "testing"
9
10 "github.com/stretchr/testify/assert"
11)
12
13func TestIsInvalid(t *testing.T) {
14 t.Parallel()
15 var named *InvalidNameError
16 _, parseErr := ParseRepoName("Bad Name")
17 assert.ErrorAs(t, parseErr, &named)
18
19 tests := []struct {
20 name string
21 err error
22 want bool
23 }{
24 {"nil", nil, false},
25 {"invalid", ErrInvalid, true},
26 {"wrapped invalid", fmt.Errorf("x: %w", ErrInvalidRevision), true},
27 {"invalid name from the parser", parseErr, true},
28 {"invalid fields", &InvalidFieldsError{Fields: []FieldViolation{{Field: "title", Reason: "is empty"}}}, true},
29 {"page token", ErrInvalidPageToken, true},
30 {"not a file", ErrNotFile, true},
31 {"invalid text", ErrInvalidText, true},
32 {"not found is not invalid", ErrNotFound, false},
33 {"forbidden is not invalid", ErrForbidden, false},
34 {"other", errors.New("boom"), false},
35 }
36 for _, tt := range tests {
37 t.Run(tt.name, func(t *testing.T) {
38 t.Parallel()
39 assert.Equal(t, tt.want, IsInvalid(tt.err))
40 })
41 }
42}