]> git.giacomolli.uk - onechat/blobdiff - tools_test.go
Retry the first WhatsApp connection
[onechat] / tools_test.go
index 8960b8f06ad9b2cfbac27c455f1b14388cbf094e..3ab784551cc56b76f7071a9372279078c8eea14d 100644 (file)
@@ -113,7 +113,7 @@ func TestFileTools(t *testing.T) {
 }
 
 func TestZoomAndDateReadTheChat(t *testing.T) {
 }
 
 func TestZoomAndDateReadTheChat(t *testing.T) {
-       memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now, newFakeSummarizer())
+       memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now, newFakeSummarizer(), discardLog())
        require.NoError(t, err)
 
        defer func() {
        require.NoError(t, err)
 
        defer func() {
@@ -126,9 +126,10 @@ func TestZoomAndDateReadTheChat(t *testing.T) {
        }
 
        box := &Toolbox{
        }
 
        box := &Toolbox{
-               log:     memory,
-               chat:    memory,
-               workdir: t.TempDir(),
+               log:       memory,
+               chat:      memory,
+               subagents: newTestSubagents(t),
+               workdir:   t.TempDir(),
        }
 
        testCases := []struct {
        }
 
        testCases := []struct {
@@ -169,6 +170,23 @@ func TestZoomAndDateReadTheChat(t *testing.T) {
        require.Equal(t, "error: message 4 does not exist", box.run(t.Context(), "date", `{"id":4}`))
 }
 
        require.Equal(t, "error: message 4 does not exist", box.run(t.Context(), "date", `{"id":4}`))
 }
 
+func TestZoomWithANameGivesTheWholeChatOfTheAgent(t *testing.T) {
+       box := newTestToolbox(t, &ToolRecordingLog{}, t.TempDir())
+       subagent, err := box.subagents.Create(t.Context())
+       require.NoError(t, err)
+
+       for _, message := range [][2]string{{"note", "subagent"}, {"user", "Count the files."}} {
+               _, err = subagent.Append(message[0], message[1])
+               require.NoError(t, err)
+       }
+
+       output := box.run(t.Context(), "zoom", `{"id":0,"n":1,"name":"`+subagent.name+`"}`)
+       require.Equal(t, "0|note: subagent\n\n1|user: Count the files.", output)
+
+       require.Equal(t, "error: no agent BlueFox", box.run(t.Context(), "zoom", `{"id":0,"n":1,"name":"BlueFox"}`))
+       require.Equal(t, "error: line 0+1 goes past the last message, -1", box.run(t.Context(), "zoom", `{"id":0,"n":1,"name":null}`))
+}
+
 func TestClipKeepsTheHeadAndTheTail(t *testing.T) {
        short := strings.Repeat("a", toolClipCharacters)
        require.Equal(t, short, toolClip(short))
 func TestClipKeepsTheHeadAndTheTail(t *testing.T) {
        short := strings.Repeat("a", toolClipCharacters)
        require.Equal(t, short, toolClip(short))
@@ -240,7 +258,7 @@ func (r *ToolRecordingLog) Events() []string {
 func newTestToolbox(t *testing.T, log ToolLog, dir string) *Toolbox {
        t.Helper()
 
 func newTestToolbox(t *testing.T, log ToolLog, dir string) *Toolbox {
        t.Helper()
 
-       memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now, newFakeSummarizer())
+       memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now, newFakeSummarizer(), discardLog())
        require.NoError(t, err)
 
        t.Cleanup(func() {
        require.NoError(t, err)
 
        t.Cleanup(func() {
@@ -248,8 +266,9 @@ func newTestToolbox(t *testing.T, log ToolLog, dir string) *Toolbox {
        })
 
        return &Toolbox{
        })
 
        return &Toolbox{
-               log:     log,
-               chat:    memory,
-               workdir: dir,
+               log:       log,
+               chat:      memory,
+               subagents: newTestSubagents(t),
+               workdir:   dir,
        }
 }
        }
 }