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) } }) }