diff --git a/issues/issue_1.md b/issues/issue_1.md new file mode 100644 index 00000000..b72c99dc --- /dev/null +++ b/issues/issue_1.md @@ -0,0 +1,56 @@ +## Problem Description + +7 tests in `tests/test_file_upload.py` are failing in the CI pipeline due to Celery task mocking issues. The tests expect the `delay` method to be called once, but it's being called 0 times. + +### Failing Tests +- `test_upload_valid_text_file` +- `test_upload_valid_image_jpeg` +- `test_upload_valid_png_image` +- `test_upload_office_document_docx` +- `test_upload_csv_file` +- `test_upload_executable_file` +- `test_image_by_extension` + +### Error Message +``` +AssertionError: Expected 'delay' to have been called once. Called 0 times. +``` + +### Root Cause Analysis + +The test fixture `mock_celery_tasks` is patching the Celery tasks at: +- `app.api.files.process_document.delay` +- `app.api.files.convert_to_pdf.delay` + +However, looking at the actual implementation in `app/api/files.py` (lines 656, 662, 669, 674), the tasks are invoked using `.delay()` method correctly: +- Line 656: `task = process_document.delay(target_path, original_filename=safe_filename)` +- Line 662: `task = convert_to_pdf.delay(target_path, original_filename=safe_filename)` +- Line 669: `task = convert_to_pdf.delay(target_path, original_filename=safe_filename)` +- Line 674: `task = convert_to_pdf.delay(target_path, original_filename=safe_filename)` + +The issue is that the patches are applied correctly but the mocks are not being invoked. This suggests: +1. The patch path might need adjustment +2. The tasks might be imported/accessed differently at runtime +3. There might be an issue with how the tasks are being called in the test environment + +### Files to Fix +- `tests/test_file_upload.py` - Fix the mock patching in the `mock_celery_tasks` fixture (lines 20-36) + +### Expected Behavior +All tests should pass with 100% success rate. The mocked Celery tasks should be called appropriately when files are uploaded through the `/api/ui-upload` endpoint. + +### Solution Approach +1. Verify the correct patch path for the Celery tasks +2. Ensure the patch is applied before the import of the tasks +3. Consider patching at the module level where tasks are defined rather than where they're used +4. Alternative: Patch the task objects directly: `app.tasks.process_document.process_document` and `app.tasks.convert_to_pdf.convert_to_pdf` + +### Reference +- Failing job: https://github.com/christianlouis/DocuElevate/actions/runs/21801196852/job/62896908441 +- Commit: 17795620c62c0bcf744eb7e940a3262c364f9bed + +### Acceptance Criteria +- All 7 failing tests pass +- Total test suite passes with 180/180 tests passing (currently 173/180) +- CI pipeline succeeds +- No regression in other tests \ No newline at end of file