Files
goyomi/internal/source/interfaces_test.go
T
achmad 85d2ea6143 feat: initial Phase 1 implementation — core framework + Docker
- Data types (SManga, SChapter, Page, MangasPage, all Filter variants)
- Source interfaces (Source, CatalogueSource) with MD5-based ID generation matching Tachiyomi/Suwayomi
- HTTP client with per-host rate limiting, cookie jar, and 429 retry
- FlareSolverr v1 client (FLARESOLVERR_URL env)
- Generic GraphQL POST helper
- goquery HTML parser wrappers
- Source registry (panics on duplicate ID)
- Multi-stage Dockerfile (golang:1.26-alpine + distroless) and compose.yml (postgres, flaresolverr, app)
2026-05-10 21:24:38 +07:00

29 lines
689 B
Go

package source_test
import (
"testing"
"goyomi/internal/source"
)
func TestGenerateSourceID(t *testing.T) {
// IDs computed from the same MD5 formula as Tachiyomi/Suwayomi HttpSource.generateId:
// key = "${name.lowercase()}/$lang/1", MD5 → first 8 bytes big-endian, sign bit cleared.
cases := []struct {
name string
lang string
want int64
}{
{"MangaDex", "en", 2499283573021220255},
{"MangaDex", "all", 6404943692147160087},
{"HeanCms", "en", 6473152836656709188},
}
for _, tc := range cases {
got := source.GenerateSourceID(tc.name, tc.lang)
if got != tc.want {
t.Errorf("GenerateSourceID(%q, %q) = %d, want %d", tc.name, tc.lang, got, tc.want)
}
}
}