# Versa Rust Test Suite
This directory contains tests for the versa-rust library, focusing on serialization and deserialization of versioned schemas.
## Running Tests
### With cargo nextest (recommended)
```bash
# Run all tests
cargo nextest run --all-features
# Run with CI profile (less parallelism, more output)
cargo nextest run --all-features --profile ci
# Run specific test file
cargo nextest run basic_types --all-features
```
### With standard cargo test
```bash
cargo test --all-features
```
## Test Structure
- `basic_types.rs` - Tests for basic types like Currency, SchemaVersion, Person, and Metadatum
- Verifies type conversions and serialization
- Tests differences between schema versions (e.g., Person type in v2.0.0)
## Schema Versions
The tests cover multiple schema versions:
- **v1.11.0** - Uses string passenger field in flights
- **v2.0.0** - Uses Person object for passenger field with metadata support
## Key Differences Between Versions
### Passenger Field Evolution
- v1.11.0: `passenger: Option<String>`
- v2.0.0: `passenger: Option<Person>` where Person includes:
- `first_name`, `last_name`, `preferred_first_name`
- `email`, `phone`
- `metadata: Vec<Metadatum>`
### Schema Structure
Both versions use the same top-level structure:
```json
{
"schema_version": "x.x.x",
"header": { ... },
"itemization": { ... },
"payments": [ ... ],
"footer": { ... }
}
```
## Configuration
Nextest configuration is in `.config/nextest.toml` with profiles for:
- `default` - Standard development testing
- `ci` - Conservative settings for CI environments