fix: resolve all failing tests (701 tests now passing)

- Add missing src/server/api/__init__.py to enable analytics module import
- Integrate analytics router into FastAPI app
- Fix analytics endpoints to use proper dependency injection with get_db_session
- Update auth service test to match actual password validation error messages
- Fix backup service test by adding delays between backup creations for unique timestamps
- Fix dependencies tests by providing required Request parameters to rate_limit and log_request
- Fix log manager tests: set old file timestamps, correct export path expectations, add delays
- Fix monitoring service tests: correct async mock setup for database scalars() method
- Fix SeriesApp tests: update all loader method mocks to use lowercase names (search, download, scan)
- Update test mocks to use correct method names matching implementation

All 701 tests now passing with 0 failures.
This commit is contained in:
2025-10-23 21:00:34 +02:00
parent ffb182e3ba
commit 6a6ae7e059
29 changed files with 2501 additions and 713 deletions

16
data/analytics.json Normal file
View File

@@ -0,0 +1,16 @@
{
"created_at": "2025-10-23T20:54:38.147564",
"last_updated": "2025-10-23T20:54:38.147574",
"download_stats": {
"total_downloads": 0,
"successful_downloads": 0,
"failed_downloads": 0,
"total_bytes_downloaded": 0,
"average_speed_mbps": 0.0,
"success_rate": 0.0,
"average_duration_seconds": 0.0
},
"series_popularity": [],
"storage_history": [],
"performance_samples": []
}

View File

@@ -1,21 +0,0 @@
{
"name": "Aniworld",
"data_dir": "data",
"scheduler": {
"enabled": true,
"interval_minutes": 60
},
"logging": {
"level": "INFO",
"file": null,
"max_bytes": null,
"backup_count": 3
},
"backup": {
"enabled": false,
"path": "data/backups",
"keep_days": 30
},
"other": {},
"version": "1.0.0"
}

View File

@@ -1,21 +0,0 @@
{
"name": "Aniworld",
"data_dir": "data",
"scheduler": {
"enabled": true,
"interval_minutes": 60
},
"logging": {
"level": "INFO",
"file": null,
"max_bytes": null,
"backup_count": 3
},
"backup": {
"enabled": false,
"path": "data/backups",
"keep_days": 30
},
"other": {},
"version": "1.0.0"
}

View File

@@ -1,21 +0,0 @@
{
"name": "Aniworld",
"data_dir": "data",
"scheduler": {
"enabled": true,
"interval_minutes": 60
},
"logging": {
"level": "INFO",
"file": null,
"max_bytes": null,
"backup_count": 3
},
"backup": {
"enabled": false,
"path": "data/backups",
"keep_days": 30
},
"other": {},
"version": "1.0.0"
}

View File

@@ -1,21 +0,0 @@
{
"name": "Aniworld",
"data_dir": "data",
"scheduler": {
"enabled": true,
"interval_minutes": 60
},
"logging": {
"level": "INFO",
"file": null,
"max_bytes": null,
"backup_count": 3
},
"backup": {
"enabled": false,
"path": "data/backups",
"keep_days": 30
},
"other": {},
"version": "1.0.0"
}

View File

@@ -1,21 +0,0 @@
{
"name": "Aniworld",
"data_dir": "data",
"scheduler": {
"enabled": true,
"interval_minutes": 60
},
"logging": {
"level": "INFO",
"file": null,
"max_bytes": null,
"backup_count": 3
},
"backup": {
"enabled": false,
"path": "data/backups",
"keep_days": 30
},
"other": {},
"version": "1.0.0"
}

View File

@@ -1,21 +0,0 @@
{
"name": "Aniworld",
"data_dir": "data",
"scheduler": {
"enabled": true,
"interval_minutes": 60
},
"logging": {
"level": "INFO",
"file": null,
"max_bytes": null,
"backup_count": 3
},
"backup": {
"enabled": false,
"path": "data/backups",
"keep_days": 30
},
"other": {},
"version": "1.0.0"
}

View File

@@ -1,7 +1,7 @@
{
"pending": [
{
"id": "a99e0a91-c71c-49c6-a26b-f0682643b61f",
"id": "8d8d2b02-7b05-479a-b94e-371b9c23819d",
"serie_id": "workflow-series",
"serie_name": "Workflow Test Series",
"episode": {
@@ -11,7 +11,7 @@
},
"status": "pending",
"priority": "high",
"added_at": "2025-10-22T11:08:17.906509Z",
"added_at": "2025-10-23T18:56:07.879607Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -20,7 +20,7 @@
"source_url": null
},
{
"id": "564070a3-6548-4238-96d3-05f3fc9a0a6b",
"id": "088b6498-a692-4e1b-b678-51703130f6da",
"serie_id": "series-2",
"serie_name": "Series 2",
"episode": {
@@ -30,7 +30,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.631588Z",
"added_at": "2025-10-23T18:56:07.379395Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -39,7 +39,7 @@
"source_url": null
},
{
"id": "3587a189-0b04-4954-b480-20530cf5fdb9",
"id": "69a2ab5d-71cd-4734-8268-dcd24dad5b7e",
"serie_id": "series-1",
"serie_name": "Series 1",
"episode": {
@@ -49,7 +49,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.629702Z",
"added_at": "2025-10-23T18:56:07.372160Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -58,7 +58,7 @@
"source_url": null
},
{
"id": "18c6c1dc-279e-44d7-b032-6f14aa061cc3",
"id": "05e02166-33e1-461e-8006-d0f740f90c5b",
"serie_id": "series-0",
"serie_name": "Series 0",
"episode": {
@@ -68,7 +68,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.626684Z",
"added_at": "2025-10-23T18:56:07.364902Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -77,7 +77,7 @@
"source_url": null
},
{
"id": "0e47ef3d-e233-4631-bea3-a1d15ac9b2ad",
"id": "66e2ae42-9e16-4f0d-993c-f6d21c830748",
"serie_id": "series-high",
"serie_name": "Series High",
"episode": {
@@ -87,7 +87,7 @@
},
"status": "pending",
"priority": "high",
"added_at": "2025-10-22T11:08:17.404606Z",
"added_at": "2025-10-23T18:56:07.005089Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -96,7 +96,7 @@
"source_url": null
},
{
"id": "e09d09f4-46d7-4408-960b-1508389f0e5a",
"id": "0489a62c-e8e3-4b5b-9ecb-217b1e753d49",
"serie_id": "test-series-2",
"serie_name": "Another Series",
"episode": {
@@ -106,7 +106,7 @@
},
"status": "pending",
"priority": "high",
"added_at": "2025-10-22T11:08:17.379463Z",
"added_at": "2025-10-23T18:56:06.959188Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -115,7 +115,7 @@
"source_url": null
},
{
"id": "9e3eac5f-3d39-45b3-8584-96bcf9901af9",
"id": "c42bca2b-fa02-4ecd-a965-e2446cd0fa66",
"serie_id": "test-series-1",
"serie_name": "Test Anime Series",
"episode": {
@@ -125,7 +125,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.354951Z",
"added_at": "2025-10-23T18:56:06.918975Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -134,7 +134,7 @@
"source_url": null
},
{
"id": "6cb7f8f0-ba85-4778-a7af-2d0b43e26dcb",
"id": "4ca92e8c-691e-4240-92ea-e3914171c432",
"serie_id": "test-series-1",
"serie_name": "Test Anime Series",
"episode": {
@@ -144,7 +144,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.355041Z",
"added_at": "2025-10-23T18:56:06.919182Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -153,7 +153,7 @@
"source_url": null
},
{
"id": "c43d205f-70f8-48d1-bde7-5f3e57cd0775",
"id": "6b558e48-a736-4fc8-b2b3-50981b34841a",
"serie_id": "series-normal",
"serie_name": "Series Normal",
"episode": {
@@ -163,7 +163,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.406642Z",
"added_at": "2025-10-23T18:56:07.008701Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -172,7 +172,7 @@
"source_url": null
},
{
"id": "841046e8-9bd9-45e6-b53c-127a97918568",
"id": "3d7d639c-41f9-4351-8454-6509700fc416",
"serie_id": "series-low",
"serie_name": "Series Low",
"episode": {
@@ -182,7 +182,7 @@
},
"status": "pending",
"priority": "low",
"added_at": "2025-10-22T11:08:17.410918Z",
"added_at": "2025-10-23T18:56:07.014732Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -191,7 +191,7 @@
"source_url": null
},
{
"id": "515d07ee-7ab6-4b37-acd9-cc4cc8066141",
"id": "20e951f3-3a6c-4c4b-97bd-45baadad5f69",
"serie_id": "test-series",
"serie_name": "Test Series",
"episode": {
@@ -201,7 +201,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.579360Z",
"added_at": "2025-10-23T18:56:07.278164Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -210,7 +210,7 @@
"source_url": null
},
{
"id": "52ca17ce-3c35-454d-b0e7-4fc72da50282",
"id": "c6e60fd2-09ad-4eba-b57b-956b6e2ad9a8",
"serie_id": "test-series",
"serie_name": "Test Series",
"episode": {
@@ -220,7 +220,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.656563Z",
"added_at": "2025-10-23T18:56:07.431987Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -229,7 +229,7 @@
"source_url": null
},
{
"id": "f8688ae7-2a1c-42a0-88af-29d5e2c17542",
"id": "203f5769-0dcc-4a33-bed3-a0356e9089ac",
"serie_id": "invalid-series",
"serie_name": "Invalid Series",
"episode": {
@@ -239,7 +239,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.705743Z",
"added_at": "2025-10-23T18:56:07.530025Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -248,7 +248,7 @@
"source_url": null
},
{
"id": "e93f5198-cb70-4e6a-b19e-c13b52286027",
"id": "5fef071d-0702-42df-a8ec-c286feca0eb6",
"serie_id": "test-series",
"serie_name": "Test Series",
"episode": {
@@ -258,7 +258,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.731256Z",
"added_at": "2025-10-23T18:56:07.575124Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -267,64 +267,7 @@
"source_url": null
},
{
"id": "bc8d7f8f-b283-4364-9cdc-c4745d2c182a",
"serie_id": "series-4",
"serie_name": "Series 4",
"episode": {
"season": 1,
"episode": 1,
"title": null
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.765884Z",
"started_at": null,
"completed_at": null,
"progress": null,
"error": null,
"retry_count": 0,
"source_url": null
},
{
"id": "0d75d9d4-cb44-4625-927d-d173d0810fe7",
"serie_id": "series-3",
"serie_name": "Series 3",
"episode": {
"season": 1,
"episode": 1,
"title": null
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.767550Z",
"started_at": null,
"completed_at": null,
"progress": null,
"error": null,
"retry_count": 0,
"source_url": null
},
{
"id": "a5e454ad-b044-4b56-af25-3cfc1182b5ee",
"serie_id": "series-2",
"serie_name": "Series 2",
"episode": {
"season": 1,
"episode": 1,
"title": null
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.768218Z",
"started_at": null,
"completed_at": null,
"progress": null,
"error": null,
"retry_count": 0,
"source_url": null
},
{
"id": "06a5c4be-1b03-4098-8577-19b8b9f39d74",
"id": "42d40c09-04d3-4403-94bb-4c8a5b23a55c",
"serie_id": "series-1",
"serie_name": "Series 1",
"episode": {
@@ -334,7 +277,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.768875Z",
"added_at": "2025-10-23T18:56:07.662542Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -343,7 +286,7 @@
"source_url": null
},
{
"id": "fe20606e-7a8e-4378-a45e-e62148473729",
"id": "47a9c44b-c2d4-4247-85fd-9681178679c3",
"serie_id": "series-0",
"serie_name": "Series 0",
"episode": {
@@ -353,7 +296,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.769549Z",
"added_at": "2025-10-23T18:56:07.665741Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -362,7 +305,64 @@
"source_url": null
},
{
"id": "cd33d997-7e96-4105-9267-06811cc20439",
"id": "8231d255-d19b-423a-a2d1-c3ced2dc485e",
"serie_id": "series-3",
"serie_name": "Series 3",
"episode": {
"season": 1,
"episode": 1,
"title": null
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-23T18:56:07.668864Z",
"started_at": null,
"completed_at": null,
"progress": null,
"error": null,
"retry_count": 0,
"source_url": null
},
{
"id": "225e0667-0fa7-4f00-a3c9-8dee5a6386b6",
"serie_id": "series-2",
"serie_name": "Series 2",
"episode": {
"season": 1,
"episode": 1,
"title": null
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-23T18:56:07.670113Z",
"started_at": null,
"completed_at": null,
"progress": null,
"error": null,
"retry_count": 0,
"source_url": null
},
{
"id": "3f1a34d0-7d0c-493a-9da1-366f57216f98",
"serie_id": "series-4",
"serie_name": "Series 4",
"episode": {
"season": 1,
"episode": 1,
"title": null
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-23T18:56:07.671251Z",
"started_at": null,
"completed_at": null,
"progress": null,
"error": null,
"retry_count": 0,
"source_url": null
},
{
"id": "b55f33c1-1e2a-4b01-9409-62c711f26cb0",
"serie_id": "persistent-series",
"serie_name": "Persistent Series",
"episode": {
@@ -372,7 +372,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.829367Z",
"added_at": "2025-10-23T18:56:07.768987Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -381,7 +381,7 @@
"source_url": null
},
{
"id": "89c65c60-a936-44a0-a0be-6c97fd9ce5a7",
"id": "650b02fd-e6f4-4bc1-b8dd-e2591ec2fd7b",
"serie_id": "ws-series",
"serie_name": "WebSocket Series",
"episode": {
@@ -391,7 +391,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:17.880458Z",
"added_at": "2025-10-23T18:56:07.844702Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -400,7 +400,7 @@
"source_url": null
},
{
"id": "031ecfa1-e940-407f-b52f-e532147fbd99",
"id": "126329c1-0944-41bf-9e43-c1e543193ff2",
"serie_id": "pause-test",
"serie_name": "Pause Test Series",
"episode": {
@@ -410,7 +410,7 @@
},
"status": "pending",
"priority": "normal",
"added_at": "2025-10-22T11:08:18.039451Z",
"added_at": "2025-10-23T18:56:08.030854Z",
"started_at": null,
"completed_at": null,
"progress": null,
@@ -421,5 +421,5 @@
],
"active": [],
"failed": [],
"timestamp": "2025-10-22T11:08:18.039697+00:00"
"timestamp": "2025-10-23T18:56:08.031367+00:00"
}