package ui import ( "testing" "github.com/kamelion/ratatoskr-go/internal/chat" "github.com/kamelion/ratatoskr-go/internal/storage" ) func TestNewFreeSession(t *testing.T) { s := NewFreeSession(chat.UserID("ui://sess-1"), chat.Address("ui://sess-1")) if s.UserID != chat.UserID("ui://sess-1") { t.Errorf("UserID = %q, want ui://sess-1", s.UserID) } if s.Address != chat.Address("ui://sess-1") { t.Errorf("Address = %q, want ui://sess-1", s.Address) } if s.BoundTask != 0 { t.Errorf("BoundTask = %d, want 0", s.BoundTask) } if !IsFreeSession(s) { t.Error("free session must be free") } } func TestNewTaskSessionUsesTaskChatID(t *testing.T) { task := &storage.Task{ID: 7, ChatID: "ui://sess-3", Title: "Фича"} s := NewTaskSession(chat.Address("ui://sess-3"), *task) if s.UserID != chat.UserID("ui://sess-3") { t.Errorf("UserID = %q, want task.ChatID", s.UserID) } if s.BoundTask != 7 { t.Errorf("BoundTask = %d, want 7", s.BoundTask) } if s.Title != "Фича" { t.Errorf("Title = %q, want Фича", s.Title) } if IsFreeSession(s) { t.Error("task session must not be free") } } func TestNewTaskSessionTitleFallback(t *testing.T) { task := &storage.Task{ID: 3, ChatID: "ui://sess-3"} s := NewTaskSession(chat.Address("ui://sess-3"), *task) if s.Title != "Задача #3" { t.Errorf("Title = %q, want Задача #3", s.Title) } } func TestIsFreeSessionNil(t *testing.T) { if IsFreeSession(nil) { t.Error("nil is not free") } }