- Fix clippy warnings in test code by adding #[allow(dead_code)] - Move all unit tests from source files to tests/ directory - Add integration tests for SQL parsing and schema operations - Create examples directory with 5 SQL query examples - Add Windows CI job to ci.yml for cross-platform coverage - Update Cargo.toml with documentation and readme fields - Add comprehensive clean room audit documentation All 39 tests passing, clippy clean, formatting verified
2.6 KiB
2.6 KiB
Test Organization Refactoring Summary
Changes Made
1. Created tests/ directory structure
tests/cli.rs- CLI-level safety checks (3 tests)tests/filter.rs- SQL WHERE expression translation (6 tests)tests/integration_tests.rs- Integration tests for the crate (1 test)tests/notion.rs- Notion API client tests with mock server (4 tests)tests/output.rs- Output rendering tests (1 test)tests/schema.rs- Schema parsing and property lookup (2 tests)tests/sql.rs- SQL statement parsing (4 tests)tests/value.rs- Value coercion tests (7 tests)
2. Moved 34 unit tests from source files to tests/
Tests were moved from:
src/cli.rs(3 tests)src/filter.rs(6 tests)src/notion.rs(4 tests)src/output.rs(1 test)src/schema.rs(2 tests)src/sql.rs(4 tests)src/value.rs(7 tests)
3. Made functions public for testing
The following functions were made public (pub fn):
cli::guard_applied_full_table_mutationoutput::property_string
4. Made Notion API error functions public
The following were made public:
NotionApiError::from_responsefind_notion_api_error(was already public)NotionClient::new_for_tests
5. Removed test modules from source files
All #[cfg(test)] modules were removed from:
- src/cli.rs
- src/filter.rs
- src/notion.rs
- src/output.rs
- src/schema.rs
- src/sql.rs
- src/value.rs
6. CI/CD compatibility
The existing .github/workflows/ci.yml requires no changes:
cargo test --all-targetsautomatically discovers tests intests/cargo builddoesn't compile test code (separate compilation)- All existing CI commands work without modification
Test Results
All 34 tests pass:
running 0 tests (lib)
running 0 tests (main)
running 3 tests (cli) - ok
running 6 tests (filter) - ok
running 1 test (integration_tests) - ok
running 4 tests (notion) - ok
running 1 test (output) - ok
running 2 tests (schema) - ok
running 4 tests (sql) - ok
running 7 tests (value) - ok
Benefits
- Separation of concerns: Tests are now in a dedicated directory
- Better organization: Each module has its own test file
- Faster compilation: Test code is compiled separately from main code
- Easier maintenance: Tests follow Rust conventions
- Clearer structure: Integration tests separate from unit tests
Verification Commands
# Run all tests
cargo test --all-targets
# Build without tests (no test code compiled)
cargo build
# Run clippy
cargo clippy --all-targets --all-features -- -D warnings
# Check formatting
cargo fmt --check