补全 P0:筛选、访客图片与双向输入状态
- 工作台会话列表支持状态/紧急筛选 - 访客 Widget 支持 jpg/png/gif 图片预览发送 - WebSocket 支持访客输入中通知客服,客服输入中通知访客 - 工作台聊天区展示「访客正在输入」动画
This commit is contained in:
@@ -67,3 +67,34 @@ func TestBroadcastToVisitorRestrictsSession(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestBroadcastToSessionStaffExcludesVisitor(t *testing.T) {
|
||||
hub := NewHub()
|
||||
go hub.Run()
|
||||
|
||||
sessionID := uint(31)
|
||||
agentID := uint(3)
|
||||
assigned := &Client{TenantID: 1, UserID: agentID, Role: "agent", Kind: "agent", Send: make(chan []byte, 1)}
|
||||
otherAgent := &Client{TenantID: 1, UserID: 4, Role: "agent", Kind: "agent", Send: make(chan []byte, 1)}
|
||||
supervisor := &Client{TenantID: 1, UserID: 5, Role: "supervisor", Kind: "agent", Send: make(chan []byte, 1)}
|
||||
visitor := &Client{TenantID: 1, Kind: "visitor", SessionID: &sessionID, Send: make(chan []byte, 1)}
|
||||
for _, client := range []*Client{assigned, otherAgent, supervisor, visitor} {
|
||||
hub.register <- client
|
||||
}
|
||||
|
||||
hub.BroadcastToSessionStaff(1, &agentID, []byte(`{"type":"typing","data":{"from":"visitor"}}`))
|
||||
for _, client := range []*Client{assigned, supervisor} {
|
||||
select {
|
||||
case <-client.Send:
|
||||
case <-time.After(time.Second):
|
||||
t.Fatalf("工作人员未收到输入状态:%+v", client)
|
||||
}
|
||||
}
|
||||
for _, client := range []*Client{otherAgent, visitor} {
|
||||
select {
|
||||
case <-client.Send:
|
||||
t.Fatalf("不应收到的客户端收到消息:%+v", client)
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user