1
1

Добавить тесты репозитория файловой системы и реализовать функциональность журналирования файлов.

- Реализовать тесты для поиска MP3-файлов и переименования/организации папок книг в репозитории файловой системы.
- Создать FileLogger для записи сообщений в файл с поддержкой различных уровней журналирования и управления размером файлов.
- Разработать репозиторий RuTracker для обработки поиска торрентов, получения метаданных и загрузки торрент-файлов.
- Добавить тесты для нормализации URL в репозиторий RuTracker.
- Реализовать адаптер логгера TUI для отображения логов в терминальном интерфейсе и, при необходимости, для записи логов в базовый логгер.
- Создать менеджер TUI для управления пользовательским интерфейсом приложения, включая главное меню, экран обработки, настройки и отображение результатов.
This commit is contained in:
Dmitriy Fofanov
2025-09-29 20:40:05 +03:00
parent 49bea780aa
commit 72a66f1664
32 changed files with 4073 additions and 22 deletions

View File

@@ -0,0 +1,42 @@
package services
import (
"testing"
"audio-catalyst/internal/domain/entities"
)
func TestExtractHTMLTitleAndSubtitle(t *testing.T) {
s := NewMetadataService()
html := `<html><head><title>Автор - Полный тайтл :: RuTracker.org</title></head>
<div class="post_body"><span style="font-size: 24px; line-height: normal;">Наследник. Книга 03</span></div></html>`
m, err := s.ParseTopicMetadata(html, entities.Torrent{Title: "Папка"})
if err != nil {
t.Fatal(err)
}
if m.Title != "Наследник. Книга 03" {
t.Errorf("title=%q", m.Title)
}
if m.Subtitle != "Автор - Полный тайтл" {
t.Errorf("subtitle=%q", m.Subtitle)
}
}
func TestExtractSeriesAndTags(t *testing.T) {
s := NewMetadataService()
h := `<div class="post_body">
<a href="viewforum.php?f=2387">[Аудио] Российская фантастика, фэнтези, мистика, ужасы, фанфики</a>
<a href="tracker.php?f=2387" class="postLink">Цикл «Наследник»</a>
<span class="post-b">Описание</span>: Текст
</div>`
m, err := s.ParseTopicMetadata(h, entities.Torrent{Title: "X"})
if err != nil {
t.Fatal(err)
}
if len(m.Series) == 0 || m.Series[0] != "Наследник" {
t.Errorf("series=%v", m.Series)
}
if len(m.Tags) == 0 || m.Tags[0] != "Российская фантастика, фэнтези, мистика, ужасы, фанфики" {
t.Errorf("tags=%v", m.Tags)
}
}