-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathlive_refresh_test.go
More file actions
102 lines (90 loc) · 2.93 KB
/
live_refresh_test.go
File metadata and controls
102 lines (90 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package main
import (
api "github.com/fossteams/teams-api/pkg"
"github.com/fossteams/teams-api/pkg/csa"
"github.com/rivo/tview"
"strings"
"testing"
"time"
)
func TestConversationPaneTitleIncludesLiveStatus(t *testing.T) {
target := ConversationTarget{ID: "chat-1", Title: "General"}
syncedAt := time.Date(2026, time.March, 27, 12, 34, 56, 0, time.UTC)
got := conversationPaneTitle(target, syncedAt, "")
if !strings.Contains(got, "General") {
t.Fatalf("expected title to include conversation title, got %q", got)
}
if !strings.Contains(got, "live 12:34:56") {
t.Fatalf("expected live timestamp in title, got %q", got)
}
}
func TestMessagesSignatureChangesWhenMessagesChange(t *testing.T) {
base := []csa.ChatMessage{
{
Id: "msg-1",
Version: "1",
ImDisplayName: "Alice",
Content: "hello",
ComposeTime: api.RFC3339Time(time.Date(2026, time.March, 27, 10, 0, 0, 0, time.UTC)),
},
}
changed := []csa.ChatMessage{
{
Id: "msg-1",
Version: "2",
ImDisplayName: "Alice",
Content: "hello again",
ComposeTime: api.RFC3339Time(time.Date(2026, time.March, 27, 10, 0, 0, 0, time.UTC)),
},
}
if messagesSignature(base) == messagesSignature(changed) {
t.Fatal("expected message signature to change when content changes")
}
}
func TestCaptureTreeViewStateTracksSelectionAndExpansion(t *testing.T) {
root := tview.NewTreeNode("Conversations").SetExpanded(true)
teams := tview.NewTreeNode("Teams").SetExpanded(true)
team := tview.NewTreeNode("Engineering").SetExpanded(true)
channel := tview.NewTreeNode("General").SetReference(ConversationTarget{ID: "channel-1", Title: "Engineering / General"})
root.AddChild(teams)
teams.AddChild(team)
team.AddChild(channel)
state := captureTreeViewState(root, channel)
if state.selectedTargetID != "channel-1" {
t.Fatalf("expected selected target ID to be tracked, got %q", state.selectedTargetID)
}
teamPath := joinTreePath(joinTreePath(joinTreePath("", "Conversations"), "Teams"), "Engineering")
if _, ok := state.expandedPaths[teamPath]; !ok {
t.Fatalf("expected expanded team path %q to be captured", teamPath)
}
}
func TestBuildConversationTreeRestoresSelectedConversation(t *testing.T) {
state := AppState{
TeamsState: TeamsState{
conversations: &csa.ConversationResponse{
Teams: []csa.Team{
{
DisplayName: "Engineering",
Channels: []csa.Channel{
{Id: "channel-1", DisplayName: "General"},
},
},
},
},
},
}
_, selectedNode, _ := state.buildConversationTree(treeViewState{
expandedPaths: map[string]struct{}{},
selectedTargetID: "channel-1",
})
if selectedNode == nil {
t.Fatal("expected a selected node")
}
target, ok := selectedNode.GetReference().(ConversationTarget)
if !ok {
t.Fatal("expected selected node to reference a conversation target")
}
if target.ID != "channel-1" {
t.Fatalf("expected selected conversation ID channel-1, got %q", target.ID)
}
}