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            },
30        };
31        let out = m
32            .classify(&ClassifyInput {
33                text: "ignored".into(),
34                author_hint: "user".into(),
35                recent_tasks: vec![],
36            })
37            .unwrap();
38        assert_eq!(out.event_type, EventType::Decision);
39        assert_eq!(out.confidence, 0.95);
40    }
41}