71 lines
1.7 KiB
Go
71 lines
1.7 KiB
Go
package storage
|
||
|
||
import (
|
||
"context"
|
||
"errors"
|
||
"testing"
|
||
)
|
||
|
||
func TestSQLiteStorage(t *testing.T) {
|
||
ctx := context.Background()
|
||
|
||
// Используем in-memory базу данных для тестов
|
||
storage, err := NewSQLiteStorage(ctx, ":memory:")
|
||
if err != nil {
|
||
t.Fatalf("Failed to create in-memory storage: %v", err)
|
||
}
|
||
defer storage.Close()
|
||
|
||
t.Run("Set and Get", func(t *testing.T) {
|
||
yandexID := "12345"
|
||
telegramID := "file_abcde"
|
||
|
||
err := storage.Set(ctx, yandexID, telegramID)
|
||
if err != nil {
|
||
t.Fatalf("Set() error = %v", err)
|
||
}
|
||
|
||
gotID, err := storage.Get(ctx, yandexID)
|
||
if err != nil {
|
||
t.Fatalf("Get() error = %v", err)
|
||
}
|
||
|
||
if gotID != telegramID {
|
||
t.Errorf("Get() got = %v, want %v", gotID, telegramID)
|
||
}
|
||
})
|
||
|
||
t.Run("Get not found", func(t *testing.T) {
|
||
_, err := storage.Get(ctx, "non_existent_id")
|
||
if !errors.Is(err, ErrNotFound) {
|
||
t.Errorf("Expected ErrNotFound, got %v", err)
|
||
}
|
||
})
|
||
|
||
t.Run("Count", func(t *testing.T) {
|
||
// Сначала очистим (в in-memory это не нужно, но для полноты)
|
||
// или просто проверим текущее состояние
|
||
count, err := storage.Count(ctx)
|
||
if err != nil {
|
||
t.Fatalf("Count() error = %v", err)
|
||
}
|
||
if count != 1 { // У нас осталась одна запись с предыдущего теста
|
||
t.Errorf("Count() got = %d, want 1", count)
|
||
}
|
||
|
||
// Добавим еще одну запись
|
||
err = storage.Set(ctx, "67890", "file_fghij")
|
||
if err != nil {
|
||
t.Fatalf("Set() error = %v", err)
|
||
}
|
||
|
||
newCount, err := storage.Count(ctx)
|
||
if err != nil {
|
||
t.Fatalf("Count() error = %v", err)
|
||
}
|
||
if newCount != 2 {
|
||
t.Errorf("Count() got = %d, want 2", newCount)
|
||
}
|
||
})
|
||
}
|