summaryrefslogtreecommitdiffstats
path: root/cli
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-08-02 20:35:32 +0200
committerGustav Sörnäs <gustav@sornas.net>2021-08-02 20:35:32 +0200
commit3eace1739afca33fdb0cafb58902edba51c2f0cb (patch)
tree06cc935ed409710861169b627ab2aaecd7abf237 /cli
parent3185d07cc8217ce54da3dd1b8854336830b1bcb2 (diff)
downloadmoney-3eace1739afca33fdb0cafb58902edba51c2f0cb.tar.gz
add test
Diffstat (limited to 'cli')
-rw-r--r--cli/src/search.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/cli/src/search.rs b/cli/src/search.rs
index 476d252..4047c4b 100644
--- a/cli/src/search.rs
+++ b/cli/src/search.rs
@@ -194,3 +194,46 @@ impl<'t> Search<'t> {
self
}
}
+
+#[cfg(test)]
+mod test {
+ use chrono::NaiveDate;
+
+ use crate::{search::{Constraint, Filter, Search}, transaction::{Transaction, TransactionKind}};
+
+ fn transaction(desc_id: u32) -> Transaction {
+ Transaction {
+ description: format!("{}", desc_id),
+ date: NaiveDate::from_ymd(2021, 01, 01),
+ category: "category".to_string(),
+ amount: 100.into(),
+ kind: TransactionKind::Expense,
+ from: "from".to_string(),
+ to: "to".to_string(),
+ }
+ }
+
+ #[test]
+ fn category() {
+ let transactions = vec![
+ Transaction {
+ category: "C1".to_string(),
+ ..transaction(0)
+ },
+ Transaction {
+ category: "C1".to_string(),
+ ..transaction(1)
+ },
+ Transaction {
+ category: "C2".to_string(),
+ ..transaction(2)
+ },
+ ];
+ let mut search = Search::new(&transactions);
+
+ assert_eq!(search.get().len(), 3);
+ let category_filter = Filter::Intersect(Constraint::Category("C1".to_string()));
+ search = category_filter.apply(search);
+ assert_eq!(search.get().len(), 2);
+ }
+}