1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-09-13 09:26:23 -07:00
gochan/pkg/gcsql/filters_test.go
2024-09-07 23:42:22 -07:00

85 lines
2.1 KiB
Go

package gcsql
import (
"net/http"
"testing"
"github.com/rs/zerolog"
"github.com/stretchr/testify/assert"
)
var (
testingPost = &Post{
MessageRaw: "this search should match",
}
checkIfMatchTestCases = []filterTestCases{
{
name: "basic message AND check",
filter: &Filter{
StaffNote: "basic message AND check",
MatchAction: "log",
conditions: []FilterCondition{
{FilterID: 1, Field: "body", MatchMode: SubstrMatch, Search: "search"},
{FilterID: 1, Field: "body", MatchMode: SubstrMatch, Search: "match"},
{FilterID: 1, Field: "body", MatchMode: SubstrMatch, Search: "should"},
{FilterID: 1, Field: "body", MatchMode: SubstrMatch, Search: "this"},
},
},
args: checkIfMatchArgs{
request: &http.Request{},
},
wantMatch: true,
},
{
name: "basic message OR check",
filter: &Filter{
StaffNote: "basic message OR check",
MatchAction: "log",
HandleIfAny: true,
conditions: []FilterCondition{
{FilterID: 1, Field: "body", MatchMode: SubstrMatch, Search: "aaa"},
{FilterID: 1, Field: "body", MatchMode: SubstrMatch, Search: "bbb"},
{FilterID: 1, Field: "body", MatchMode: SubstrMatch, Search: "search"},
{FilterID: 1, Field: "body", MatchMode: SubstrMatch, Search: "ssss"},
},
},
args: checkIfMatchArgs{
request: &http.Request{},
},
wantMatch: true,
},
}
)
type checkIfMatchArgs struct {
post *Post
upload *Upload
request *http.Request
}
type filterTestCases struct {
name string
filter *Filter
args checkIfMatchArgs
wantMatch bool
wantErr bool
}
func TestFilterCheckIfMatch(t *testing.T) {
testLog := zerolog.New(zerolog.NewTestWriter(t))
for _, tc := range checkIfMatchTestCases {
t.Run(tc.name, func(t *testing.T) {
errEv := testLog.WithLevel(zerolog.ErrorLevel)
defer errEv.Discard()
tc.args.post = testingPost
gotMatch, err := tc.filter.checkIfMatch(tc.args.post, tc.args.upload, tc.args.request, errEv)
if tc.wantErr {
assert.Error(t, err)
} else if !assert.NoError(t, err) {
errEv.Send()
}
assert.Equal(t, tc.wantMatch, gotMatch)
})
}
}