From 4e31b25854e015e089c0abd4e5c61ee3de4bfc8a Mon Sep 17 00:00:00 2001 From: rtkay123 Date: Fri, 15 Aug 2025 23:25:45 +0200 Subject: test(exec): extract id and ver --- crates/rule-executor/src/processor/rule.rs | 63 ++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 3 deletions(-) (limited to 'crates/rule-executor/src') diff --git a/crates/rule-executor/src/processor/rule.rs b/crates/rule-executor/src/processor/rule.rs index 8168c5a..8c23e0f 100644 --- a/crates/rule-executor/src/processor/rule.rs +++ b/crates/rule-executor/src/processor/rule.rs @@ -9,13 +9,70 @@ use warden_core::configuration::rule::RuleConfigurationRequest; use crate::state::AppHandle; pub async fn process_rule(message: Message, state: AppHandle) -> Result<()> { - let req = create_configuration_request(&message); + let req = create_configuration_request(message.subject.as_str()); let rule_configuration = configuration::get_configuration(req, Arc::clone(&state)).await?; Ok(()) } -fn create_configuration_request(message: &Message) -> RuleConfigurationRequest { - todo!() +fn create_configuration_request(subject: &str) -> RuleConfigurationRequest { + // rule.901.v1.0.0 + let mut tokens = subject.split("rule."); + // rule. + tokens.next(); + // 901.v1.0.0 + let rem = tokens.next().expect("router guarantees subject"); + + let mut tokens = rem.split(".v"); + let rule_id = tokens.next().expect("router guarantees subject"); + let version = tokens.next().expect("router guarantees subject"); + + RuleConfigurationRequest { + id: rule_id.to_owned(), + version: version.to_owned() + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_valid_subject() { + let subject = "rule.901.v1.0.0"; + let req = create_configuration_request(subject); + assert_eq!(req.id, "901"); + assert_eq!(req.version, "1.0.0"); + } + + #[test] + fn test_valid_subject_with_longer_id() { + let subject = "rule.12345.v2.3.4"; + let req = create_configuration_request(subject); + assert_eq!(req.id, "12345"); + assert_eq!(req.version, "2.3.4"); + } + + #[test] + #[should_panic(expected = "router guarantees subject")] + fn test_missing_rule_prefix() { + let subject = "901.v1.0.0"; // Missing "rule." + create_configuration_request(subject); + } + + #[test] + #[should_panic(expected = "router guarantees subject")] + fn test_missing_version() { + let subject = "rule.901"; + create_configuration_request(subject); + } + + #[test] + fn test_different_version_format() { + let subject = "rule.abc.v999"; + let req = create_configuration_request(subject); + assert_eq!(req.id, "abc"); + assert_eq!(req.version, "999"); + } } -- cgit v1.2.3