Skip to main content

tj_core/classifier/
mock.rs

1//! Mock classifier: returns a pre-set output regardless of input.
2
3use super::*;
4
5pub struct MockClassifier {
6    pub canned: ClassifyOutput,
7}
8
9impl Classifier for MockClassifier {
10    fn classify(&self, _input: &ClassifyInput) -> anyhow::Result<ClassifyOutput> {
11        Ok(self.canned.clone())
12    }
13}
14
15#[cfg(test)]
16mod tests {
17    use super::*;
18    use crate::event::EventType;
19
20    #[test]
21    fn mock_returns_canned_output() {
22        let m = MockClassifier {
23            canned: ClassifyOutput {
24                event_type: EventType::Decision,
25                task_id_guess: Some("tj-x".into()),
26                confidence: 0.95,
27                evidence_strength: None,
28                suggested_text: "...".into(),
29                artifacts: None,
30            },
31        };
32        let out = m
33            .classify(&ClassifyInput {
34                text: "ignored".into(),
35                author_hint: "user".into(),
36                recent_tasks: vec![],
37            })
38            .unwrap();
39        assert_eq!(out.event_type, EventType::Decision);
40        assert_eq!(out.confidence, 0.95);
41    }
42}