2025-03-13 12:36:46 +05:30
|
|
|
package historystore
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
2025-03-24 05:16:34 +11:00
|
|
|
"time"
|
2025-03-13 12:36:46 +05:30
|
|
|
|
|
|
|
"github.com/mariocandela/beelzebub/v3/plugins"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestNewHistoryStore(t *testing.T) {
|
|
|
|
hs := NewHistoryStore()
|
|
|
|
assert.NotNil(t, hs)
|
|
|
|
assert.NotNil(t, hs.sessions)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHasKey(t *testing.T) {
|
|
|
|
hs := NewHistoryStore()
|
2025-03-24 05:16:34 +11:00
|
|
|
hs.sessions["testKey"] = HistoryEvent{Messages: []plugins.Message{}}
|
2025-03-13 12:36:46 +05:30
|
|
|
assert.True(t, hs.HasKey("testKey"))
|
|
|
|
assert.False(t, hs.HasKey("nonExistentKey"))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestQuery(t *testing.T) {
|
|
|
|
hs := NewHistoryStore()
|
|
|
|
expectedMessages := []plugins.Message{{Role: "user", Content: "Hello"}}
|
2025-03-24 05:16:34 +11:00
|
|
|
hs.sessions["testKey"] = HistoryEvent{Messages: expectedMessages}
|
2025-03-13 12:36:46 +05:30
|
|
|
actualMessages := hs.Query("testKey")
|
|
|
|
assert.Equal(t, expectedMessages, actualMessages)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestAppend(t *testing.T) {
|
|
|
|
hs := NewHistoryStore()
|
|
|
|
message1 := plugins.Message{Role: "user", Content: "Hello"}
|
|
|
|
message2 := plugins.Message{Role: "assistant", Content: "Hi"}
|
|
|
|
hs.Append("testKey", message1)
|
2025-03-24 05:16:34 +11:00
|
|
|
assert.Equal(t, []plugins.Message{message1}, hs.sessions["testKey"].Messages)
|
2025-03-13 12:36:46 +05:30
|
|
|
hs.Append("testKey", message2)
|
2025-03-24 05:16:34 +11:00
|
|
|
assert.Equal(t, []plugins.Message{message1, message2}, hs.sessions["testKey"].Messages)
|
2025-03-13 12:36:46 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
func TestAppendNilSessions(t *testing.T) {
|
|
|
|
hs := &HistoryStore{}
|
|
|
|
message1 := plugins.Message{Role: "user", Content: "Hello"}
|
|
|
|
hs.Append("testKey", message1)
|
|
|
|
assert.NotNil(t, hs.sessions)
|
2025-03-24 05:16:34 +11:00
|
|
|
assert.Equal(t, []plugins.Message{message1}, hs.sessions["testKey"].Messages)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHistoryCleaner(t *testing.T) {
|
|
|
|
hs := NewHistoryStore()
|
|
|
|
hs.Append("testKey", plugins.Message{Role: "user", Content: "Hello"})
|
|
|
|
hs.Append("testKey2", plugins.Message{Role: "user", Content: "Hello"})
|
|
|
|
|
|
|
|
// Make key older than MaxHistoryAge
|
|
|
|
e := hs.sessions["testKey"]
|
|
|
|
e.LastSeen = time.Now().Add(-MaxHistoryAge * 2)
|
|
|
|
hs.sessions["testKey"] = e
|
|
|
|
|
|
|
|
CleanerInterval = 5 * time.Second // Override for the test.
|
|
|
|
hs.HistoryCleaner()
|
|
|
|
time.Sleep(CleanerInterval + (1 * time.Second))
|
|
|
|
|
|
|
|
assert.False(t, hs.HasKey("testKey"))
|
|
|
|
assert.True(t, hs.HasKey("testKey2"))
|
2025-03-13 12:36:46 +05:30
|
|
|
}
|