mirror of
https://github.com/kennethreitz/kjvstudy.org.git
synced 2026-06-05 14:50:17 +00:00
51e4eeb561
New statistics added to the family tree overview: Most Siblings: - Tracks which person had the most siblings - Currently shows Nathan with 18 siblings (one of David's 19 children) Close Family Marriages: - Detects marriages between close relatives - Checks for sibling marriages and aunt/uncle-niece/nephew relationships - Shows 0 in current GEDCOM data - Provides historical context: "common in early biblical times" - Important for understanding biblical/ancient Near Eastern culture API Changes: - Add most_siblings field to FamilyTreeStatsResponse - Add close_family_marriages field with description - Calculate sibling counts from GEDCOM relationship data - Detect close family relationships through parent/sibling analysis Template Updates: - Add "Most Siblings" row with clickable link to person page - Add "Close Family Marriages" row with contextual note - Populate values via JavaScript from stats API Test Updates: - Add assertions for most_siblings structure - Add assertions for close_family_marriages value - Verify all new fields are present and correctly typed This helps provide educational context about how family structures differed in ancient biblical times compared to modern norms. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
KJV Study API Tests
Comprehensive test suite for the KJV Study API and web application.
Test Files
test_api.py
Core API endpoint tests covering:
- Health checks
- Verse endpoints (single, range, verse of the day)
- Book endpoints (list, details, chapters, full text)
- Bible endpoint (entire Bible)
- Search functionality
- Interlinear data
- Cross-references
- Topics and reading plans
- Book name normalization
test_edge_cases.py
Edge case and error handling tests:
- Invalid inputs and error responses
- Verse range edge cases
- Book abbreviations (comprehensive)
- Search functionality edge cases
- Book boundaries (shortest, longest, etc.)
- Cross-references edge cases
- Interlinear data edge cases
- Topics and reading plans edge cases
- Performance tests with large data
- Content validation
test_web_routes.py
Web page and HTML endpoint tests:
- Homepage
- Book listing and detail pages
- Chapter and verse pages
- Search pages
- Topics and reading plans pages
- Resource pages
- 404 handling
- Redirects
- HTML structure and metadata
- Navigation elements
- Accessibility features
- Content types
conftest.py
Shared pytest configuration and fixtures:
client- TestClient for API requestssample_verses- Common verse referencessample_books- Sample book namesbook_abbreviations- Abbreviation mappingsbible_facts- Known Bible facts for validation
Running Tests
Run all tests
uv run pytest tests/ -v
Run specific test file
uv run pytest tests/test_api.py -v
Run specific test class
uv run pytest tests/test_api.py::TestVerseEndpoints -v
Run specific test
uv run pytest tests/test_api.py::TestVerseEndpoints::test_get_single_verse -v
Run with coverage
uv run pytest tests/ --cov=kjvstudy_org --cov-report=html
Run tests in parallel (faster)
uv run pytest tests/ -n auto
Test Categories
Functional Tests
- API endpoints return correct data
- Web pages load correctly
- Search functionality works
- Data integrity
Edge Cases
- Invalid inputs
- Boundary conditions
- Error handling
- Performance with large datasets
Integration Tests
- Book name normalization
- Cross-references linking
- Interlinear data availability
- Content validation
Fixtures
Fixtures are defined in conftest.py and automatically available to all test files:
- client: FastAPI TestClient for making requests
- sample_verses: Dictionary of common verse references
- sample_books: Dictionary of sample book names
- book_abbreviations: Mapping of abbreviations to full names
- bible_facts: Known facts about the KJV Bible
Best Practices
- Use fixtures - Leverage shared fixtures from conftest.py
- Descriptive names - Test names should describe what they test
- Arrange-Act-Assert - Follow AAA pattern in tests
- One assertion per concept - Keep tests focused
- Test edge cases - Don't just test happy paths
- Use parametrize - For testing multiple similar cases
Adding New Tests
When adding new functionality:
- Add API tests to
test_api.py - Add edge case tests to
test_edge_cases.py - Add web route tests to
test_web_routes.py - Update fixtures in
conftest.pyif needed - Run tests to ensure they pass
- Add documentation if needed
CI/CD Integration
These tests are designed to run in CI/CD pipelines:
# Example GitHub Actions workflow
- name: Run tests
run: uv run pytest tests/ -v --cov