Commit Graph
12 Commits
Author SHA1 Message Date
john-okeefe f54508e4dd test: improve test isolation and setup management
Add Token and RegularToken fields to TestServerSetup for pre-authenticated
access. Update setupTestServer to create fresh users with valid tokens at
initialization time. Simplify createTestMediaItemID to use setup.Token.
Remove loginTestUser, loginRegularUser, loginAdminUser functions in favor
of setup.Token/setup.RegularToken. Update createTestUserOnce and
getTestUserID/getRegularUserID to be idempotent. Update all test files to
use setup.Token instead of calling login helpers.
2026-02-22 01:57:22 -05:00
john-okeefe 8e054bd149 fix: update test files for token handling and response parsing
- Update callers of createTestMediaItemID to not pass token
- Fix loginAdminUser to delete/recreate admin user for consistent state
- Fix TestListAllQueueItems_Admin to parse response as map with 'items' key
- Remove unused token variables from tests
- Update device_test.go with admin password hash constant
2026-02-14 00:12:28 -05:00
john-okeefe 3f5535aa38 Phase 1: Convert bulk test operations to struct-based assertions
collections_bulk_test.go:
- Define local BulkAddOperation and BulkAddBooksRequest structs
- Convert 3 tests (WithoutAuth, EmptyOperations, InvalidCollectionID)
- Add database verification comments for future implementation
- Impact: Pattern for 200+ remaining bulk test conversions

media_bulk_test.go:
- Add database verification to bulk delete operations
- Add imports for database, handlers, context, pgtype
- Convert BulkDeleteBooks_WithoutAuth to verify DB state
- Impact: Ensures bulk deletes actually remove records

Total conversions: 5 tests from map-based to struct-based assertions
2026-02-13 17:42:37 -05:00
john-okeefe f93d44c5d1 fix(tests): make collection names unique in bulk operations tests
- Fix TestCollectionsBulkOperations/BulkAddBooks_SingleOperation failure
- Each subtest was creating "Test Collection" with same name
- Collections table has UNIQUE(user_id, name) constraint causing 500 errors
- Made collection names unique by adding test name suffix:
  - Test Collection - InvalidBookID
  - Test Collection - SingleOperation
  - Test Collection - MultipleBooksSingleCollection
  - Test Collection 1 - MultipleCollections
  - Test Collection 2 - MultipleCollections
  - Test Collection - DuplicateBooks

This preserves test data for manual API testing with Bruno while
ensuring test isolation and preventing unique constraint violations.
2026-02-11 10:56:47 -05:00
john-okeefe 891209b4bd test(infrastructure): Configure pgxpool with max_conns=1
Fix database connection exhaustion in tests by setting max_conns=1
when creating pgxpool via pgxpool.ParseConfig().

- Update setupTestServer() in test_helpers.go
- Update setupSyncTestDB() in sync_integration_test.go

This reduces per-test connection usage from 4 to 1, keeping total
connections well under PostgreSQL's default max_connections=100.

78 tests × 1 connection = 78 connections (down from 312 potential)

Fixes test failures: "FATAL: sorry, too many clients already"

See PROJECT_GUIDELINES.md Testing section for details.
2026-02-11 10:37:38 -05:00
john-okeefe 778d611cab test: update collections bulk tests for 'added' field rename
Update test assertions in TestCollectionsBulkOperations to expect
'added' instead of 'success' in the response, matching the handler
change made in the bulk operations rename.

Fixes:
- BulkAddBooks_InvalidCollectionID: assert 'added' field exists
- BulkAddBooks_SingleOperation: assert 'added' field exists
2026-02-10 20:51:29 -05:00
john-okeefe 6c610465eb refactor(tests): Update all test files to use TestServerSetup pattern 2026-02-10 13:01:12 -05:00
john-okeefe 38acc46988 refactor(tests): update test helpers and all test file references
- Rename createTestEbookID to createTestMediaItemID in test_helpers.go
- Update test helper comments and variable names (ebookReq -> mediaItemReq, etc.)
- Update all test file references:
  - analytics_test.go
  - book_matching_test.go
  - collections_bulk_test.go
  - kobo_test.go
  - media_bulk_test.go
  - opds_test.go
- Rename ebookID variable to mediaItemID in kobo_test.go
- Update test data to use 'Test Media Item' instead of 'Test Ebook'
2026-02-08 14:32:37 -05:00
john-okeefe 98f2913eb5 refactor(tests): remove getJSONInt helper, use float64 for JSON numeric values
Remove the getJSONInt helper function and update all test assertions to
expect float64 instead of int for JSON numeric fields, as Go's JSON
decoder unmarshals all numbers to float64 by default.

This simplifies the codebase by removing an unnecessary conversion
helper and makes tests more accurate to the actual JSON format.

Changes:
- Remove getJSONInt function from book_matching_test.go
- Update 5 assertions in book_matching_test.go to use float64
- Update 2 assertions in collections_bulk_test.go to use float64
- Update 2 assertions in media_bulk_test.go to use float64
- Add nil checks for optional numeric fields to prevent panics

Affected tests:
- TestBookMatchingBulkLink
- TestBookMatchingAutoLink
- TestCollectionsBulkOperations
- TestMediaBulkOperations

Note: Some test failures remain (API returning 400 instead of 200) but
these are legitimate test issues unrelated to type assertions.
2026-02-07 21:55:48 -05:00
john-okeefe 786e809631 fix(tests): resolve type assertion and request body issues in tests
- Fix float64 type assertions for JSON numbers in conflicts bulk operations
- Create fresh HTTP request body for duplicate book tests
- Add nil checks for type assertions in device cap tests
- Properly extract user_id from JWT for existing users
- Trim trailing whitespace from response bodies
- All 3 previously failing tests now passing

Test results: 19/22 passing (86.4%)
Fixes: TestCollectionsBulkOperations, TestConflictsBulkDismiss, TestUpdateUserMaxDevices
2026-02-06 21:59:04 -05:00
john-okeefe 56efae971e test: update test signatures to match new test_helpers.go
- Remove handler parameter from test function calls
- Update test signatures to use new return values from setupTestServer
- Fix compilation errors after test helper refactoring
- Maintain test functionality while simplifying setup
2026-02-06 17:05:16 -05:00
john-okeefe 351c68b0b8 test: add comprehensive test coverage for API endpoints and services 2026-02-01 13:21:34 -05:00