58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
package service
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/cortezaproject/corteza-server/messaging/types"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestMessageLength(t *testing.T) {
|
|
svc := message{}
|
|
e := func(out *types.Message, err error) error { return err }
|
|
|
|
require.True(t, e(svc.Create(&types.Message{})) != nil, "Should not allow to create empty message")
|
|
|
|
if settingsMessageBodyLength > 0 {
|
|
longText := strings.Repeat("X", settingsMessageBodyLength+1)
|
|
require.True(t, e(svc.Create(&types.Message{Message: longText})) != nil, "Should not allow to create message with really long text")
|
|
}
|
|
}
|
|
|
|
func TestMentionsExtraction(t *testing.T) {
|
|
var (
|
|
svc = message{}
|
|
mm types.MentionSet
|
|
cases = []struct {
|
|
text string
|
|
ids []uint64
|
|
}{
|
|
{"abcde",
|
|
[]uint64{}},
|
|
{"<@4095834095>",
|
|
[]uint64{4095834095}},
|
|
{"<@4095834095> <@4095834095>",
|
|
[]uint64{4095834095}},
|
|
{"<@4095834095> <@4095834097>",
|
|
[]uint64{4095834095, 4095834097}},
|
|
{"dfsf<@4095834095>dsfsd<@4095834097>sdfs",
|
|
[]uint64{4095834095, 4095834097}},
|
|
{"dfsf<@4095834095>dsfsd<@40958340dfsZ",
|
|
[]uint64{4095834095}},
|
|
{"<@4095834095 label> <@4095834097>",
|
|
[]uint64{4095834095, 4095834097}},
|
|
}
|
|
)
|
|
|
|
for _, c := range cases {
|
|
mm = svc.extractMentions(&types.Message{Message: c.text})
|
|
|
|
require.True(t, len(mm) == len(c.ids), "Number of extracted (%d) and expected (%d) user IDs do not match (%s)", len(mm), len(c.ids), c.text)
|
|
|
|
for _, id := range c.ids {
|
|
require.True(t, len(mm.FindByUserID(id)) == 1, "Owner ID (%d) was not extracted (%s)", id, c.text)
|
|
}
|
|
}
|
|
}
|