Добавить тесты репозитория файловой системы и реализовать функциональность журналирования файлов.
- Реализовать тесты для поиска MP3-файлов и переименования/организации папок книг в репозитории файловой системы. - Создать FileLogger для записи сообщений в файл с поддержкой различных уровней журналирования и управления размером файлов. - Разработать репозиторий RuTracker для обработки поиска торрентов, получения метаданных и загрузки торрент-файлов. - Добавить тесты для нормализации URL в репозиторий RuTracker. - Реализовать адаптер логгера TUI для отображения логов в терминальном интерфейсе и, при необходимости, для записи логов в базовый логгер. - Создать менеджер TUI для управления пользовательским интерфейсом приложения, включая главное меню, экран обработки, настройки и отображение результатов.
This commit is contained in:
53
internal/infrastructure/filesystem/repository_test.go
Normal file
53
internal/infrastructure/filesystem/repository_test.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package filesystem
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestFindMP3Files(t *testing.T) {
|
||||
d := t.TempDir()
|
||||
files := []string{"a.mp3", "B.MP3", "c.txt"}
|
||||
for _, f := range files {
|
||||
if err := os.WriteFile(filepath.Join(d, f), []byte("x"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
repo := NewRepository()
|
||||
got, err := repo.findMP3Files(d)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(got) != 2 {
|
||||
t.Fatalf("ожидалось 2, получено %d", len(got))
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenameAndOrganize(t *testing.T) {
|
||||
d := t.TempDir()
|
||||
book := filepath.Join(d, "Old")
|
||||
if err := os.MkdirAll(book, 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
repo := NewRepository()
|
||||
newPath, err := repo.RenameBookFolder(book, "Автор - Книга :: RuTracker.org")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if filepath.Base(newPath) != "Автор - Книга" {
|
||||
t.Fatalf("имя папки: %s", filepath.Base(newPath))
|
||||
}
|
||||
|
||||
organized := filepath.Join(d, "organized")
|
||||
if err := os.MkdirAll(organized, 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
moved, err := repo.OrganizeBookFolder(newPath, "Автор Фамилия", organized)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := os.Stat(moved); err != nil {
|
||||
t.Fatalf("папка не перемещена: %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user