mirror of
https://github.com/larksuite/cli.git
synced 2026-08-03 08:32:46 +08:00
Compare commits
1 Commits
sun/tempv2
...
features/F
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5689a2638d |
@@ -365,10 +365,10 @@ func meetingEventsIdentityFromParticipant(participant map[string]interface{}, se
|
||||
}
|
||||
}
|
||||
if identity.ParticipantType == "" {
|
||||
identity.ParticipantType = "human"
|
||||
identity.ParticipantType = "unknown"
|
||||
}
|
||||
if identity.Role == "" {
|
||||
identity.Role = "participant"
|
||||
identity.Role = "unknown"
|
||||
}
|
||||
identity.Label = identityLabel(identity)
|
||||
return identity
|
||||
@@ -407,8 +407,32 @@ func meetingEventsParticipantTypeFromUserType(raw string) string {
|
||||
switch raw {
|
||||
case "1", "user", "human":
|
||||
return "human"
|
||||
case "2", "10", "bot", "app":
|
||||
case "2", "room":
|
||||
return "room"
|
||||
case "3", "doc_user":
|
||||
return "doc_user"
|
||||
case "4", "neo_user":
|
||||
return "neo_user"
|
||||
case "5", "neo_guest_user":
|
||||
return "neo_guest_user"
|
||||
case "6", "pstn":
|
||||
return "pstn"
|
||||
case "7", "sip":
|
||||
return "sip"
|
||||
case "8", "share_box_user":
|
||||
return "share_box_user"
|
||||
case "9", "open_platform_app":
|
||||
return "app"
|
||||
case "10", "bot", "app":
|
||||
return "bot"
|
||||
case "100", "auto_detect":
|
||||
return "auto_detect"
|
||||
case "101", "room_detect":
|
||||
return "room_detect"
|
||||
case "102", "sid_detect":
|
||||
return "human"
|
||||
case "103", "webinar_attendee":
|
||||
return "webinar_attendee"
|
||||
case "":
|
||||
return ""
|
||||
default:
|
||||
@@ -441,12 +465,14 @@ func meetingEventsRoleFromEventUserRole(raw string) string {
|
||||
return "participant"
|
||||
case "2", "host":
|
||||
return "host"
|
||||
case "3", "co_host", "cohost":
|
||||
return "co_host"
|
||||
case "4", "bot", "app":
|
||||
return "bot"
|
||||
case "", "0":
|
||||
return ""
|
||||
default:
|
||||
return raw
|
||||
return "unknown"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1139,12 +1165,14 @@ func needsColon(description string) bool {
|
||||
|
||||
func leaveAction(item map[string]interface{}) string {
|
||||
switch int(common.GetFloat(item, "leave_reason")) {
|
||||
case leaveReasonUserLeft:
|
||||
return "离开了会议"
|
||||
case leaveReasonMeetingEnded:
|
||||
return "因会议结束离开了会议"
|
||||
case leaveReasonKicked:
|
||||
return "被移出了会议"
|
||||
default:
|
||||
return "离开了会议"
|
||||
return "因未知原因离开了会议"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1327,9 +1327,11 @@ func TestLeaveAction(t *testing.T) {
|
||||
item map[string]interface{}
|
||||
want string
|
||||
}{
|
||||
{name: "user left", item: map[string]interface{}{"leave_reason": leaveReasonUserLeft}, want: "离开了会议"},
|
||||
{name: "meeting ended", item: map[string]interface{}{"leave_reason": leaveReasonMeetingEnded}, want: "因会议结束离开了会议"},
|
||||
{name: "kicked", item: map[string]interface{}{"leave_reason": leaveReasonKicked}, want: "被移出了会议"},
|
||||
{name: "default", item: map[string]interface{}{"leave_reason": leaveReasonUserLeft}, want: "离开了会议"},
|
||||
{name: "unknown", item: map[string]interface{}{"leave_reason": 0}, want: "因未知原因离开了会议"},
|
||||
{name: "future", item: map[string]interface{}{"leave_reason": 99}, want: "因未知原因离开了会议"},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
@@ -1340,6 +1342,27 @@ func TestLeaveAction(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestMeetingEventsEndSignalOnlyAcceptsMeetingEndedReason(t *testing.T) {
|
||||
for _, tt := range []struct {
|
||||
name string
|
||||
leaveReason int
|
||||
wantEnded bool
|
||||
}{
|
||||
{name: "unknown", leaveReason: 0, wantEnded: false},
|
||||
{name: "user left", leaveReason: leaveReasonUserLeft, wantEnded: false},
|
||||
{name: "meeting ended", leaveReason: leaveReasonMeetingEnded, wantEnded: true},
|
||||
{name: "kicked", leaveReason: leaveReasonKicked, wantEnded: false},
|
||||
{name: "future", leaveReason: 99, wantEnded: false},
|
||||
} {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := meetingEventsEndSignalFromEvents([]interface{}{participantLeftEventWithReason(tt.leaveReason)})
|
||||
if got.Ended != tt.wantEnded {
|
||||
t.Fatalf("meetingEventsEndSignalFromEvents().Ended = %t, want %t", got.Ended, tt.wantEnded)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestMeetingEventUserWithID(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
@@ -1387,6 +1410,27 @@ func TestMeetingEventsIdentityFromParticipant_UserRoleParticipant(t *testing.T)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMeetingEventsIdentityFromParticipant_CoHostAndUnknownRole(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
role interface{}
|
||||
want string
|
||||
}{
|
||||
{name: "co host", role: 3, want: "co_host"},
|
||||
{name: "future", role: 99, want: "unknown"},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := meetingEventsIdentityFromParticipant(map[string]interface{}{
|
||||
"id": "u1", "user_name": "Alice", "user_type": 1, "user_role": tt.role,
|
||||
}, meetingEventsIdentity{})
|
||||
if got.Role != tt.want {
|
||||
t.Fatalf("identity = %#v, want role=%q", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestMeetingEventsIdentityFromParticipant_UserTypeApp(t *testing.T) {
|
||||
got := meetingEventsIdentityFromParticipant(map[string]interface{}{
|
||||
"id": "ou_app",
|
||||
@@ -1400,6 +1444,40 @@ func TestMeetingEventsIdentityFromParticipant_UserTypeApp(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestMeetingEventsIdentityFromParticipant_KnownUserTypes(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
userType int
|
||||
want string
|
||||
}{
|
||||
{name: "human", userType: 1, want: "human"},
|
||||
{name: "room", userType: 2, want: "room"},
|
||||
{name: "doc user", userType: 3, want: "doc_user"},
|
||||
{name: "neo user", userType: 4, want: "neo_user"},
|
||||
{name: "neo guest", userType: 5, want: "neo_guest_user"},
|
||||
{name: "pstn", userType: 6, want: "pstn"},
|
||||
{name: "sip", userType: 7, want: "sip"},
|
||||
{name: "share box", userType: 8, want: "share_box_user"},
|
||||
{name: "open platform app", userType: 9, want: "app"},
|
||||
{name: "meeting bot", userType: 10, want: "bot"},
|
||||
{name: "auto detect", userType: 100, want: "auto_detect"},
|
||||
{name: "room detect", userType: 101, want: "room_detect"},
|
||||
{name: "sid detect", userType: 102, want: "human"},
|
||||
{name: "webinar attendee", userType: 103, want: "webinar_attendee"},
|
||||
{name: "future", userType: 999, want: "unknown"},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := meetingEventsIdentityFromParticipant(map[string]interface{}{
|
||||
"id": "u1", "user_name": "Alice", "user_type": tt.userType, "user_role": 1,
|
||||
}, meetingEventsIdentity{})
|
||||
if got.ParticipantType != tt.want {
|
||||
t.Fatalf("identity = %#v, want participant_type=%q", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestMeetingEventsIdentityFromParticipant_UnknownUserType(t *testing.T) {
|
||||
got := meetingEventsIdentityFromParticipant(map[string]interface{}{
|
||||
"id": "u_unknown",
|
||||
@@ -1420,7 +1498,7 @@ func TestMeetingEventsIdentityFromParticipant_IgnoresGenericTypeField(t *testing
|
||||
"type": "bot",
|
||||
}, meetingEventsIdentity{})
|
||||
|
||||
if got.ParticipantType != "human" {
|
||||
if got.ParticipantType != "unknown" {
|
||||
t.Fatalf("identity = %#v, generic type field should not drive participant_type", got)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user