Files
aethera/backend/internal/store/memory_test.go

177 lines
3.8 KiB
Go

package store
import (
"testing"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestInMemoryStore_SaveChat(t *testing.T) {
store := NewInMemoryStore()
chat := &Chat{
Title: "Test Chat",
}
err := store.SaveChat(chat)
require.NoError(t, err)
assert.NotEqual(t, uuid.Nil, chat.ID)
assert.False(t, chat.CreatedAt.IsZero())
}
func TestInMemoryStore_GetChat(t *testing.T) {
store := NewInMemoryStore()
// Create and save a chat
chat := &Chat{
Title: "Test Chat",
}
err := store.SaveChat(chat)
require.NoError(t, err)
// Retrieve the chat
retrievedChat, err := store.GetChat(chat.ID)
require.NoError(t, err)
assert.Equal(t, chat.ID, retrievedChat.ID)
assert.Equal(t, chat.Title, retrievedChat.Title)
}
func TestInMemoryStore_GetChat_NotFound(t *testing.T) {
store := NewInMemoryStore()
_, err := store.GetChat(uuid.New())
assert.ErrorIs(t, err, ErrChatNotFound)
}
func TestInMemoryStore_DeleteChat(t *testing.T) {
store := NewInMemoryStore()
// Create and save a chat
chat := &Chat{
Title: "Test Chat",
}
err := store.SaveChat(chat)
require.NoError(t, err)
// Delete the chat
err = store.DeleteChat(chat.ID)
require.NoError(t, err)
// Try to retrieve the deleted chat
_, err = store.GetChat(chat.ID)
assert.ErrorIs(t, err, ErrChatNotFound)
}
func TestInMemoryStore_DeleteChat_NotFound(t *testing.T) {
store := NewInMemoryStore()
err := store.DeleteChat(uuid.New())
assert.ErrorIs(t, err, ErrChatNotFound)
}
func TestInMemoryStore_ListChats(t *testing.T) {
store := NewInMemoryStore()
// Create and save multiple chats
chat1 := &Chat{Title: "Chat 1"}
chat2 := &Chat{Title: "Chat 2"}
err := store.SaveChat(chat1)
require.NoError(t, err)
err = store.SaveChat(chat2)
require.NoError(t, err)
// List all chats
chats, err := store.ListChats()
require.NoError(t, err)
assert.Len(t, chats, 2)
}
func TestInMemoryStore_SaveChatMessage(t *testing.T) {
store := NewInMemoryStore()
// Create and save a chat
chat := &Chat{Title: "Test Chat"}
err := store.SaveChat(chat)
require.NoError(t, err)
// Create and save a message
message := &Message{
ChatID: chat.ID,
Role: "user",
Content: "Hello",
}
err = store.SaveChatMessage(message)
require.NoError(t, err)
assert.NotEqual(t, uuid.Nil, message.ID)
assert.False(t, message.CreatedAt.IsZero())
}
func TestInMemoryStore_SaveChatMessage_InvalidChatID(t *testing.T) {
store := NewInMemoryStore()
message := &Message{
ChatID: uuid.Nil,
Role: "user",
Content: "Hello",
}
err := store.SaveChatMessage(message)
assert.ErrorIs(t, err, ErrNilChatID)
}
func TestInMemoryStore_SaveChatMessage_ChatNotFound(t *testing.T) {
store := NewInMemoryStore()
message := &Message{
ChatID: uuid.New(),
Role: "user",
Content: "Hello",
}
err := store.SaveChatMessage(message)
assert.ErrorIs(t, err, ErrChatNotFound)
}
func TestInMemoryStore_SaveSettings(t *testing.T) {
store := NewInMemoryStore()
settings := &Settings{
APIEndpoint: "http://example.com",
ImageEditSelector: ".image-edit",
ImageGenerationSelector: ".image-gen",
TextGenerationSelector: ".text-gen",
}
err := store.SaveSettings(settings)
require.NoError(t, err)
}
func TestInMemoryStore_GetSettings(t *testing.T) {
store := NewInMemoryStore()
// Get settings when none exist
settings, err := store.GetSettings()
require.NoError(t, err)
assert.NotNil(t, settings)
// Set some settings
settings = &Settings{
APIEndpoint: "http://example.com",
ImageEditSelector: ".image-edit",
ImageGenerationSelector: ".image-gen",
TextGenerationSelector: ".text-gen",
}
err = store.SaveSettings(settings)
require.NoError(t, err)
// Get the settings
settings, err = store.GetSettings()
require.NoError(t, err)
assert.Equal(t, "http://example.com", settings.APIEndpoint)
}