3
0
corteza/messaging/service/message_test.go
2019-10-01 17:42:26 +02:00

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)
}
}
}