-
Notifications
You must be signed in to change notification settings - Fork 0
/
profanity_filter_test.go
90 lines (73 loc) · 2.52 KB
/
profanity_filter_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package txtproc
import (
"context"
"fmt"
"testing"
"github.com/stretchr/testify/mock"
)
const textProfanityFilterTest = "this is a sentence"
func TestProfanityFilter(t *testing.T) {
_, err := ProfanityFilter(context.Background(), "", ProfanityFilterConfig{})
if err != ErrEmptyText {
t.Errorf("want %v got %v", ErrEmptyText, err)
t.Fail()
}
}
// TestProfanityFilter2 test good word processing, repo Get return error
func TestProfanityFilter2(t *testing.T) {
goodWordData := RepoMocker()
// Total and PerBatch is return 1
goodWordData.On("Total", mock.Anything).Return(int64(1)).Once()
goodWordData.On("PerBatch", mock.Anything).Return(int64(1)).Once()
// repo Get is error
wantGoodWordDataErr := fmt.Errorf("error getting data")
goodWordData.On("Get", mock.Anything, int64(1)).Return([]ReplacerData{}, wantGoodWordDataErr).Once()
_, err := ProfanityFilter(context.Background(), textWordReplacerTest, ProfanityFilterConfig{
GoodWordsReplacerConfig: WordReplacerConfig{
WordToCompare: WordNormalized,
CaseSensitive: true,
ReplacerDataSeeder: goodWordData,
SimilarityFunc: nil,
ReplacerMinimumScore: 0,
},
BadWordsReplacerConfig: WordReplacerConfig{},
})
if err != wantGoodWordDataErr {
t.Errorf("want %v got %v", wantGoodWordDataErr, err)
t.Fail()
return
}
}
// TestProfanityFilter3 test bad word processing, repo Get return error
func TestProfanityFilter3(t *testing.T) {
badWordData := RepoMocker()
// Total and PerBatch is return 1
badWordData.On("Total", mock.Anything).Return(int64(1)).Once()
badWordData.On("PerBatch", mock.Anything).Return(int64(1)).Once()
// repo Get is error
wantBadWordDataErr := fmt.Errorf("error getting data")
badWordData.On("Get", mock.Anything, int64(1)).Return([]ReplacerData{}, wantBadWordDataErr).Once()
_, err := ProfanityFilter(context.Background(), textWordReplacerTest, ProfanityFilterConfig{
GoodWordsReplacerConfig: WordReplacerConfig{},
BadWordsReplacerConfig: WordReplacerConfig{
WordToCompare: WordNormalized,
CaseSensitive: true,
ReplacerDataSeeder: badWordData,
SimilarityFunc: nil,
ReplacerMinimumScore: 0,
},
})
if err != wantBadWordDataErr {
t.Errorf("want %v got %v", wantBadWordDataErr, err)
t.Fail()
return
}
}
// TestProfanityFilter4 success, without any mock
func TestProfanityFilter4(t *testing.T) {
_, err := ProfanityFilter(context.Background(), textProfanityFilterTest, ProfanityFilterConfig{})
if err != nil {
t.Errorf("want nil error got '%v'", err)
t.Fail()
}
}