- 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
88 lines
2.6 KiB
Markdown
88 lines
2.6 KiB
Markdown
# 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_mutation`
|
|
- `output::property_string`
|
|
|
|
### 4. Made Notion API error functions public
|
|
The following were made public:
|
|
- `NotionApiError::from_response`
|
|
- `find_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-targets` automatically discovers tests in `tests/`
|
|
- `cargo build` doesn'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
|
|
1. **Separation of concerns**: Tests are now in a dedicated directory
|
|
2. **Better organization**: Each module has its own test file
|
|
3. **Faster compilation**: Test code is compiled separately from main code
|
|
4. **Easier maintenance**: Tests follow Rust conventions
|
|
5. **Clearer structure**: Integration tests separate from unit tests
|
|
|
|
## Verification Commands
|
|
```bash
|
|
# 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
|
|
```
|