diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-08-02 20:35:32 +0200 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-08-02 20:35:32 +0200 |
| commit | 3eace1739afca33fdb0cafb58902edba51c2f0cb (patch) | |
| tree | 06cc935ed409710861169b627ab2aaecd7abf237 /cli/src | |
| parent | 3185d07cc8217ce54da3dd1b8854336830b1bcb2 (diff) | |
| download | money-3eace1739afca33fdb0cafb58902edba51c2f0cb.tar.gz | |
add test
Diffstat (limited to 'cli/src')
| -rw-r--r-- | cli/src/search.rs | 43 |
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); + } +} |
