| 64 | self.assertEqual(original.chunk_set.id, new_summary.chunk_set.id) |
| 65 | self.assertNotEqual( |
| 66 | original.global_summary.id, new_summary.global_summary.id |
| 67 | ) |
| 68 | |
| 69 | def test_canonical_models_have_no_embedding_vectors_or_text_method( |
| 70 | self, |
| 71 | ) -> None: |
| 72 | result = build_paper_result() |
| 73 | |
| 74 | for value in ( |
| 75 | result.source_revision, |
| 76 | result.chunk_set, |
| 77 | result.global_summary, |
| 78 | *result.chunk_set.chunks, |
| 79 | ): |
| 80 | self.assertNotIn("embedding", value.model_dump()) |
| 81 | self.assertFalse(hasattr(value, "embedding_text")) |
| 82 | |
| 83 | def test_source_json_excludes_blobs_but_preserves_manifest(self) -> None: |
| 84 | source = build_paper_result().source_revision |
| 85 | revived = PaperSourceRevision.model_validate_json( |
| 86 | source.model_dump_json() |
| 87 | ) |
| 88 | |
| 89 | self.assertEqual(revived.id, source.id) |
| 90 | self.assertEqual(revived.parsed, source.parsed) |
| 91 | self.assertEqual(revived.blobs, {}) |
| 92 | with self.assertRaisesRegex(RuntimeError, "bytes are not loaded"): |
| 93 | revived.blob_for(revived.raw_asset_id) |
| 94 | |
| 95 | def test_result_rejects_unknown_model_owned_citation_identity(self) -> None: |
| 96 | result = build_paper_result() |
| 97 | citation = result.global_summary.citations[0] |
| 98 | invalid = PaperCitation( |
| 99 | chunk_set_id=result.chunk_set.id, |
| 100 | chunk_id=uuid4(), |
| 101 | page_number=citation.page_number, |
| 102 | ) |
| 103 | invalid_citations = ( |
| 104 | invalid, |
| 105 | *result.global_summary.citations[1:], |
| 106 | ) |
| 107 | summary = result.global_summary.model_copy( |
| 108 | update={ |
nothing calls this directly
no outgoing calls
no test coverage detected