From 3eace1739afca33fdb0cafb58902edba51c2f0cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 2 Aug 2021 20:35:32 +0200 Subject: add test --- cli/src/search.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) 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); + } +} -- cgit v1.2.1