| 85 | def test_as_of_required(self): |
| 86 | with self.assertRaises(ValidationError): |
| 87 | _ConcreteKnowledge(source=_src()) # type: ignore[call-arg] |
| 88 | |
| 89 | def test_source_required(self): |
| 90 | with self.assertRaises(ValidationError): |
| 91 | _ConcreteKnowledge(as_of=_now()) # type: ignore[call-arg] |
| 92 | |
| 93 | def test_default_id_unique(self): |
| 94 | a = _ConcreteKnowledge(as_of=_now(), source=_src()) |
| 95 | b = _ConcreteKnowledge(as_of=_now(), source=_src()) |
| 96 | self.assertNotEqual(a.id, b.id) |
| 97 | |
| 98 | def test_default_confidence_is_medium(self): |
| 99 | item = _ConcreteKnowledge(as_of=_now(), source=_src()) |
| 100 | self.assertEqual(item.confidence, "medium") |
| 101 | |
| 102 | def test_available_at_is_optional_and_round_trips(self): |
| 103 | item = _ConcreteKnowledge( |
| 104 | as_of=_now(), |
| 105 | available_at=_now() + timedelta(hours=2), |
| 106 | source=_src(), |
| 107 | ) |
| 108 | revived = _ConcreteKnowledge.model_validate_json(item.model_dump_json()) |
| 109 | self.assertEqual(revived.available_at, _now() + timedelta(hours=2)) |
| 110 | |
| 111 | def test_available_at_defaults_to_unknown(self): |
| 112 | item = _ConcreteKnowledge(as_of=_now(), source=_src()) |
| 113 | self.assertIsNone(item.available_at) |
| 114 | |
| 115 | def test_default_schema_version(self): |
| 116 | item = _ConcreteKnowledge(as_of=_now(), source=_src()) |
| 117 | self.assertEqual(item.schema_version, "1.0") |
| 118 | |
| 119 | def test_created_at_auto(self): |
| 120 | before = datetime.now(timezone.utc) |
| 121 | item = _ConcreteKnowledge(as_of=_now(), source=_src()) |
| 122 | after = datetime.now(timezone.utc) |
| 123 | self.assertGreaterEqual(item.created_at, before) |
| 124 | self.assertLessEqual(item.created_at, after) |
| 125 | |
| 126 | def test_frozen(self): |
| 127 | item = _ConcreteKnowledge(as_of=_now(), source=_src()) |
| 128 | with self.assertRaises(ValidationError): |
| 129 | item.tags = ["new"] # type: ignore[misc] |
| 130 | |
| 131 | def test_extra_forbidden(self): |
| 132 | with self.assertRaises(ValidationError): |
| 133 | _ConcreteKnowledge( |
| 134 | as_of=_now(), |
| 135 | source=_src(), |
| 136 | unexpected_field=1, # type: ignore[call-arg] |
| 137 | ) |
| 138 | |
| 139 | def test_embedding_selection_is_not_canonical_domain_behavior(self): |
| 140 | item = _ConcreteKnowledge(as_of=_now(), source=_src(), payload="hello") |
| 141 | self.assertFalse(hasattr(item, "embedding_text")) |
| 142 | |
| 143 | def test_extraction_optional(self): |
| 144 | item = _ConcreteKnowledge(as_of=_now(), source=_src()) |
nothing calls this directly
no outgoing calls
no test coverage detected