54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package ontology
|
|
|
|
import "testing"
|
|
|
|
func TestIngestCreatesSourceBackedCandidates(t *testing.T) {
|
|
service := NewService(NewMemoryStore())
|
|
|
|
result, err := service.Ingest(IngestInput{
|
|
Title: "Backend interview notes",
|
|
SourceType: "markdown",
|
|
Body: "Idempotent API retries need transactions. Cache invalidation uses TTL tradeoffs.",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("Ingest error: %v", err)
|
|
}
|
|
if result.Material.ID == "" {
|
|
t.Fatal("expected material id")
|
|
}
|
|
if len(result.Snapshot.Concepts) == 0 {
|
|
t.Fatal("expected concept candidates")
|
|
}
|
|
for _, concept := range result.Snapshot.Concepts {
|
|
if concept.ReviewState != ReviewCandidate {
|
|
t.Fatalf("review state = %q", concept.ReviewState)
|
|
}
|
|
if len(concept.Evidence) == 0 {
|
|
t.Fatal("expected concept evidence")
|
|
}
|
|
}
|
|
if len(result.Snapshot.Edges) == 0 {
|
|
t.Fatal("expected prerequisite edge candidates")
|
|
}
|
|
}
|
|
|
|
func TestIngestMarksGapsAsCandidates(t *testing.T) {
|
|
service := NewService(NewMemoryStore())
|
|
|
|
result, err := service.Ingest(IngestInput{
|
|
Title: "Cache note",
|
|
Body: "Cache invalidation is hard.",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("Ingest error: %v", err)
|
|
}
|
|
if len(result.Snapshot.Gaps) == 0 {
|
|
t.Fatal("expected gaps")
|
|
}
|
|
for _, gap := range result.Snapshot.Gaps {
|
|
if gap.ReviewState != ReviewCandidate {
|
|
t.Fatalf("gap review state = %q", gap.ReviewState)
|
|
}
|
|
}
|
|
}
|