| 37 | |
| 38 | |
| 39 | class AdminFileItemTests(SettingsOverrideMixin, unittest.TestCase): |
| 40 | def test_build_admin_file_item_serializes_required_fields(self): |
| 41 | settings.file_storage = "local" |
| 42 | service = FileService() |
| 43 | now = datetime(2026, 1, 1, 13, 0, 0) |
| 44 | |
| 45 | item = asyncio.run(service._build_admin_file_item(FakeFileCode(), now=now)) |
| 46 | |
| 47 | self.assertEqual(item["id"], 1) |
| 48 | self.assertEqual(item["name"], "report.txt") |
| 49 | self.assertEqual(item["type"], "file") |
| 50 | self.assertFalse(item["isExpired"]) |
| 51 | self.assertEqual(item["remainingDownloads"], 3) |
| 52 | self.assertEqual(item["file_path"], "share/data/2026/01/01/abc") |
| 53 | self.assertIn("never_retrieved", item["statusInsights"]["reasons"]) |
| 54 | self.assertEqual(item["statusInsights"]["metrics"]["ageSeconds"], 3600) |
| 55 | |
| 56 | def test_build_admin_file_item_marks_expiring_soon(self): |
| 57 | settings.file_storage = "local" |
| 58 | service = FileService() |
| 59 | file_code = FakeFileCode() |
| 60 | now = file_code.expired_at - timedelta(hours=2) |
| 61 | |
| 62 | item = asyncio.run(service._build_admin_file_item(file_code, now=now)) |
| 63 | |
| 64 | self.assertEqual(item["statusInsights"]["severity"], "warning") |
| 65 | self.assertIn("expires_soon", item["statusInsights"]["reasons"]) |
nothing calls this directly
no outgoing calls
no test coverage detected