mod commons; #[cfg(test)] mod test { use growthbook_rust_sdk::model_public::GrowthBookAttribute; use rstest::rstest; use serde_json::json; use test_context::test_context; use crate::commons::TestContext; #[test_context(TestContext)] #[rstest] #[tokio::test] async fn should_return_enabled_default_when_fail_to_call_growthbook(ctx: &mut TestContext) -> Result<(), Box> { let on = ctx.growthbook.is_on("not-exist-flag", None); assert!(!on); Ok(()) } #[test_context(TestContext)] #[rstest] #[tokio::test] async fn should_return_enabled_false_flag_id_is_disabled(ctx: &mut TestContext) -> Result<(), Box> { let on = ctx.growthbook.is_on("simple-flag-disabled", None); assert!(!on); Ok(()) } #[test_context(TestContext)] #[rstest] #[tokio::test] async fn should_return_enabled_true_flag_id_is_enabled(ctx: &mut TestContext) -> Result<(), Box> { let on = ctx.growthbook.is_on("simple-flag", None); assert!(on); Ok(()) } #[test_context(TestContext)] #[rstest] #[tokio::test] async fn should_return_enabled_false_when_rule_not_match(ctx: &mut TestContext) -> Result<(), Box> { let vec = GrowthBookAttribute::from(json!({ "any-id": "018fcf12-0c45-7811-9c71-d6264ba729b1", })) .expect("Failed to create attributes"); let on = ctx.growthbook.is_on("simple-rule-conditio", Some(vec)); assert!(!on); Ok(()) } #[test_context(TestContext)] #[rstest] #[tokio::test] async fn should_return_enabled_true_when_rule_match(ctx: &mut TestContext) -> Result<(), Box> { let vec = GrowthBookAttribute::from(json!({ "any-id": "018fcf11-bb67-7789-8d10-fcbb7de4ff7b", })) .expect("Failed to create attributes"); let on = ctx.growthbook.is_on("simple-rule-conditio", Some(vec)); assert!(on); Ok(()) } #[test_context(TestContext)] #[rstest] #[tokio::test] async fn should_return_enabled_false_when_user_has_not_required_attribute(ctx: &mut TestContext) -> Result<(), Box> { let vec = GrowthBookAttribute::from(json!({ "any-other-id": "018fcf12-0c45-7811-9c71-d6264ba729b1", })) .expect("Failed to create attributes"); let on = ctx.growthbook.is_on("simple-rule-conditio", Some(vec)); assert!(!on); Ok(()) } }