sp2-verify-1770324794/.sdlc/features/async-jobs/qa-plan.md
rdev-worker 154c535204
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
build: /implement-feature async-jobs --requirements 'API: POST /jobs pushes ...
2026-02-05 21:04:47 +00:00

82 lines
1.8 KiB
Markdown

# QA Plan: Async Jobs
**Feature:** async-jobs
**Status:** approved
**Author:** Claude
**Created:** 2026-02-05
## Test Scenarios
### API Tests
#### TC-001: Create Job - Success
**Endpoint:** POST /api/api/jobs
**Input:**
```json
{
"type": "test_job",
"payload": {"key": "value"}
}
```
**Expected:** 201 Created with job ID and status "pending"
#### TC-002: Create Job - Missing Type
**Endpoint:** POST /api/api/jobs
**Input:**
```json
{
"payload": {"key": "value"}
}
```
**Expected:** 400 Bad Request with validation error
#### TC-003: Get Job - Success
**Endpoint:** GET /api/api/jobs/{id}
**Precondition:** Job exists
**Expected:** 200 OK with job details
#### TC-004: Get Job - Not Found
**Endpoint:** GET /api/api/jobs/{unknown-id}
**Expected:** 404 Not Found
#### TC-005: Get Job - Invalid ID Format
**Endpoint:** GET /api/api/jobs/invalid-uuid
**Expected:** 400 Bad Request
### Worker Tests
#### TC-006: Job Processing - Success
**Steps:**
1. Create job via POST /api/api/jobs
2. Wait for worker to process
3. GET /api/api/jobs/{id}
**Expected:** Status changes: pending -> running -> completed
#### TC-007: Job Processing - Failure Handling
**Steps:**
1. Create job designed to fail
2. Wait for worker to process
3. GET /api/api/jobs/{id}
**Expected:** Status is "failed" with error message
### Integration Tests
#### TC-008: End-to-End Flow
**Steps:**
1. Start API and Worker with Redis
2. POST /api/api/jobs
3. Poll GET /api/api/jobs/{id} until completed
**Expected:** Job completes within expected time
## Test Environment
- Redis running locally or in CI
- API service running on port 8001
- Worker running and connected to same Redis
## Success Criteria
- All test cases pass
- No race conditions in concurrent job processing
- Proper error handling and status codes