#[cfg(test)]
mod tests {
use promotion_kit::promotion::{DiscountType, Promotion, TargetScope};
use promotion_kit::service::{increment_usage, reset_usage};
fn create_promo() -> Promotion {
Promotion {
code: "PROMO10".to_string(),
description: "10% discount".to_string(),
discount: DiscountType::Percentage(10.0),
usage_limit: Some(5),
used: 0,
valid_from: 1_700_000_000,
valid_until: 1_800_000_000,
min_transaction: Some(50.0),
target: TargetScope::Global,
currency: Some("USD".to_string()),
}
}
#[test]
fn test_increment_usage() {
let mut promo = create_promo();
increment_usage(&mut promo);
assert_eq!(promo.used, 1);
increment_usage(&mut promo);
assert_eq!(promo.used, 2);
}
#[test]
fn test_reset_usage() {
let mut promo = create_promo();
promo.used = 5;
reset_usage(&mut promo);
assert_eq!(promo.used, 0);
}
#[test]
fn test_reset_usage_when_zero() {
let mut promo = create_promo();
reset_usage(&mut promo);
assert_eq!(promo.used, 0);
}
}