Commit Graph
3 Commits
Author SHA1 Message Date
john-okeefe 158b15c1d8 Fix comic metadata tests: UUID handling, test isolation, and defaults
This commit fixes multiple issues in the comic metadata test suite that were causing test failures:

1. UUID Byte-Order Corruption
   - Fixed byte-order corruption when converting library IDs
   - Previously used [16]byte(uuid.MustParse(libraryID)) which corrupted bytes
   - Now parse UUID once and reuse the parsed UUID variable
   - Matches pattern used successfully in calibre_integration_test.go

2. Test Isolation
   - Each sub-test now creates its own isolated library
   - Previously all sub-tests shared one library, causing cross-test pollution
   - ListMediaItemsByLibrary returns items from previous tests
   - New libraries: "RTL Manga Test Library", "Western Comic Test Library", "Minimal Metadata Test Library"

3. Query Function Selection
   - Replaced SearchMediaItems with ListMediaItemsByLibrary
   - SearchMediaItems requires search_pattern parameter which was missing
   - ListMediaItemsByLibrary is simpler and more appropriate for these tests

4. Explicit Default Values
   - MangaType and ReadingDirection now explicitly set to expected defaults
   - Database defaults not applied when pgtype fields have Valid: false
   - "Comic with minimal metadata" test now sets: MangaType="unknown", ReadingDirection="auto"

5. Library Naming for Cleanup
   - All library names now include "Test" for proper cleanup
   - Test cleanup deletes libraries with "test" in name (case-insensitive)
   - Prevents orphaned libraries from accumulating in database

All tests in TestComicMetadataExtraction now pass:
- CBZ with RTL manga ✓
- CBZ with Western comic ✓
- Comic with minimal metadata ✓
2026-03-30 21:22:39 -04:00
john-okeefe 81c7c9e5cc fix: update type handling for schema changes
- Fix pgtype.UUID usage in test files by properly converting string UUIDs to pgtype.UUID
- Update numericToFloat to use pgtype.Float8 instead of pgtype.Numeric for DOUBLE PRECISION support
- Fix field name from WebURL to WebUrl to match current schema

These changes align with the recent community_rating type change to DOUBLE PRECISION
and ensure consistent type handling across the codebase.
2026-03-30 17:51:06 -04:00
john-okeefe fd74415a4a test: add unit tests for comic metadata processing
Phase 6.1 implementation: Unit tests for metadata helper functions.

Test Coverage:
- TestNormalizeMangaType: Verify Manga field normalization to database enum values
  (unknown, no, yes, yes_and_right_to_left)
- TestDetermineReadingDirection: Test reading direction computation heuristics
  (explicit Manga field, Japanese language, webtoon/manhwa genre tags, Western default)
- TestNormalizeAgeRating: Verify age rating standardization
  (Everyone, Teen, Mature, Adult with various input formats)

These tests ensure the helper functions correctly normalize ComicInfo.xml data
before storage in the database.

Relates to: Phase 6.1 unit testing
2026-03-29 21:12:24 -04:00