//! Yeni hane için örnek alt kategoriler ve ödeme türleri (DATA_MODEL.md §3.5, §3.6). use mongodb::bson::{Document, Uuid}; use crate::models::common::new_meta; /// (grup, ad, emoji) const CATEGORIES: &[(&str, &str, &str)] = &[ ("needs", "Market", "🛒"), ("needs", "Kira", "🏠"), ("needs", "Faturalar", "💡"), ("needs", "Ulaşım", "🚌"), ("wants", "Dışarıda yemek", "🍽️"), ("wants", "Giyim", "👕"), ("wants", "Eğlence", "🎉"), ("culture", "Kitap", "📖"), ("culture", "Eğitim", "🎓"), ("culture", "Sinema/Konser", "🎬"), ("unexpected", "Sağlık", "💊"), ("unexpected", "Tamir", "🔧"), ("unexpected", "Hediye", "🎁"), ]; /// (ad, emoji) const PAYMENT_METHODS: &[(&str, &str)] = &[ ("Nakit", "💵"), ("Kredi Kartı", "💳"), ("Banka Kartı", "🏧"), ("Havale/EFT", "🔁"), ]; pub fn categories(household_id: Uuid) -> Vec { CATEGORIES .iter() .enumerate() .map(|(i, (group, name, emoji))| { let mut d = new_meta(household_id); d.insert("group", *group); d.insert("name", *name); d.insert("emoji", *emoji); d.insert("sort_order", (i as i32 + 1) * 10); d.insert("is_active", true); d }) .collect() } pub fn payment_methods(household_id: Uuid) -> Vec { PAYMENT_METHODS .iter() .enumerate() .map(|(i, (name, emoji))| { let mut d = new_meta(household_id); d.insert("name", *name); d.insert("emoji", *emoji); d.insert("sort_order", (i as i32 + 1) * 10); d.insert("is_active", true); d }) .collect() } #[cfg(test)] mod tests { use super::*; use crate::models::common::new_id; #[test] fn every_group_has_categories() { let docs = categories(new_id()); for g in ["needs", "wants", "culture", "unexpected"] { assert!(docs.iter().any(|d| d.get_str("group").unwrap() == g)); } } }