mattermost-community-enterp.../channels/app/command_test.go
Claude ec1f89217a Merge: Complete Mattermost Server with Community Enterprise
Full Mattermost server source with integrated Community Enterprise features.
Includes vendor directory for offline/air-gapped builds.

Structure:
- enterprise-impl/: Enterprise feature implementations
- enterprise-community/: Init files that register implementations
- enterprise/: Bridge imports (community_imports.go)
- vendor/: All dependencies for offline builds

Build (online):
  go build ./cmd/mattermost

Build (offline/air-gapped):
  go build -mod=vendor ./cmd/mattermost

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 23:59:07 +09:00

87 lines
1.7 KiB
Go

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package app
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestPossibleAtMentions(t *testing.T) {
mainHelper.Parallel(t)
fixture := []struct {
message string
expected []string
}{
{
"",
[]string{},
},
{
"@user",
[]string{"user"},
},
{
"@user-with_special.chars @multiple.-_chars",
[]string{"user-with_special.chars", "multiple.-_chars"},
},
{
"@repeated @user @repeated",
[]string{"repeated", "user"},
},
{
"@user1 @user2 @user3",
[]string{"user1", "user2", "user3"},
},
{
"@李",
[]string{},
},
{
"@withfinaldot. @withfinaldash- @withfinalunderscore_",
[]string{
"withfinaldot.",
"withfinaldash-",
"withfinalunderscore_",
},
},
}
for _, data := range fixture {
actual := possibleAtMentions(data.message)
require.ElementsMatch(t, actual, data.expected)
}
}
func TestTrimUsernameSpecialChar(t *testing.T) {
mainHelper.Parallel(t)
fixture := []struct {
word string
expectedString string
expectedBool bool
}{
{"user...", "user..", true},
{"user..", "user.", true},
{"user.", "user", true},
{"user--", "user-", true},
{"user-", "user", true},
{"user_.-", "user_.", true},
{"user_.", "user_", true},
{"user_", "user", true},
{"user", "user", false},
{"user.with-inner_chars", "user.with.inner.chars", false},
}
for _, data := range fixture {
actualString, actualBool := trimUsernameSpecialChar(data.word)
require.Equal(t, actualBool, data.expectedBool)
if actualBool {
require.Equal(t, actualString, data.expectedString)
} else {
require.Equal(t, actualString, data.word)
}
}
}