Establishes testing infrastructure for reliable development. tests/fixtures/ - GitLab API response samples: - gitlab_issue.json: Single issue with full metadata - gitlab_issues_page.json: Paginated issue list response - gitlab_discussion.json: Discussion thread with notes - gitlab_discussions_page.json: Paginated discussions response All fixtures captured from real GitLab API responses with sensitive data redacted, ensuring tests match actual behavior. tests/gitlab_types_tests.rs - Type deserialization tests: - Validates serde parsing of all GitLab API types - Tests edge cases: null fields, empty arrays, nested objects - Ensures GitLabIssue, GitLabDiscussion, GitLabNote parse correctly - Verifies optional fields handle missing data gracefully - Tests author/assignee extraction from various formats tests/fixture_tests.rs - Integration with fixtures: - Loads fixture files and validates parsing - Tests transformer functions produce correct database rows - Verifies IssueWithMetadata extracts labels and assignees - Tests NormalizedDiscussion/NormalizedNote structure - Validates raw payload preservation logic tests/migration_tests.rs - Database schema tests: - Creates in-memory SQLite for isolation - Runs all migrations and verifies schema - Tests table creation with expected columns - Validates foreign key constraints - Tests index creation for query performance - Verifies idempotent migration behavior Test infrastructure uses: - tempfile for isolated database instances - wiremock for HTTP mocking (available for future API tests) - Standard Rust #[test] attributes Run with: cargo test Run single: cargo test test_name Run with output: cargo test -- --nocapture Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
35 lines
765 B
JSON
35 lines
765 B
JSON
{
|
|
"id": 12345,
|
|
"iid": 42,
|
|
"project_id": 100,
|
|
"title": "Test issue title",
|
|
"description": "Test issue description with some details about the bug.",
|
|
"state": "opened",
|
|
"created_at": "2024-01-15T10:00:00.000Z",
|
|
"updated_at": "2024-01-20T15:30:00.000Z",
|
|
"closed_at": null,
|
|
"author": {
|
|
"id": 1,
|
|
"username": "testuser",
|
|
"name": "Test User"
|
|
},
|
|
"assignees": [
|
|
{
|
|
"id": 2,
|
|
"username": "assignee1",
|
|
"name": "Assignee One"
|
|
}
|
|
],
|
|
"labels": ["bug", "priority::high"],
|
|
"milestone": {
|
|
"id": 500,
|
|
"iid": 5,
|
|
"project_id": 100,
|
|
"title": "v1.0",
|
|
"state": "active",
|
|
"due_date": "2024-02-01"
|
|
},
|
|
"due_date": "2024-01-31",
|
|
"web_url": "https://gitlab.example.com/group/project/-/issues/42"
|
|
}
|