alien-macros 3.3.43

Procedural macros for the Alien framework
Documentation
use super::HandlerAttr;

#[test]
fn accepts_optional_static_progress() {
    let plain: HandlerAttr = syn::parse_quote! {
        state = Waiting, on_failure = Failed, status = ResourceStatus::Provisioning,
    };
    assert!(plain.progress.is_none());
    let annotated: HandlerAttr = syn::parse_quote! {
        state = Waiting, on_failure = Failed, status = ResourceStatus::Provisioning,
        progress = "Waiting for readiness.",
    };
    assert_eq!(
        annotated.progress.unwrap().value(),
        "Waiting for readiness."
    );
}

#[test]
fn rejects_unknown_and_nonliteral_progress_attributes() {
    for input in [
        "state = Waiting, on_failure = Failed, status = ResourceStatus::Provisioning, progres = ready",
        "state = Waiting, on_failure = Failed, status = ResourceStatus::Provisioning, progress = message",
        "state = Waiting, on_failure = Failed, status = ResourceStatus::Provisioning, progress = 42",
        "state = Waiting, on_failure = Failed, status = ResourceStatus::Provisioning, progress = \"one\", progress = \"two\"",
    ] {
        assert!(syn::parse_str::<HandlerAttr>(input).is_err(), "{input}");
    }
}