alef 0.63.0

Opinionated polyglot binding generator for Rust libraries
Documentation
use crate::e2e::fixture::Fixture;

pub(super) fn extension_owned_recipe_kind(
    fixture: &Fixture,
    _resolved_args: &[crate::core::config::e2e::ArgMapping],
) -> Option<&'static str> {
    if fixture.http.is_some() {
        return Some("HTTP");
    }
    if fixture.asyncapi.is_some() {
        return Some("AsyncAPI");
    }
    if fixture.websocket.is_some() {
        return Some("WebSocket");
    }
    None
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::core::config::e2e::ArgMapping;

    #[test]
    fn test_backend_fixture_uses_builtin_declarative_recipe() {
        let fixture = Fixture {
            id: "register_processor".into(),
            description: "Register a processor".into(),
            args: vec![ArgMapping {
                name: "processor".into(),
                field: "processor".into(),
                arg_type: "test_backend".into(),
                optional: false,
                owned: false,
                element_type: None,
                go_type: None,
                vec_inner_is_ref: false,
                trait_name: Some("Processor".into()),
            }],
            ..Fixture::default()
        };

        assert_eq!(extension_owned_recipe_kind(&fixture, &fixture.args), None);
    }

    #[test]
    fn ordinary_call_uses_builtin_recipe() {
        let fixture = Fixture {
            id: "process_document".into(),
            description: "Process a document".into(),
            ..Fixture::default()
        };

        assert_eq!(extension_owned_recipe_kind(&fixture, &[]), None);
    }

    #[test]
    fn call_level_test_backend_uses_builtin_declarative_recipe() {
        let fixture = Fixture {
            id: "register_processor".into(),
            description: "Register a processor".into(),
            ..Fixture::default()
        };
        let call_args = vec![ArgMapping {
            name: "processor".into(),
            field: "processor".into(),
            arg_type: "test_backend".into(),
            optional: false,
            owned: false,
            element_type: None,
            go_type: None,
            vec_inner_is_ref: false,
            trait_name: Some("Processor".into()),
        }];

        assert_eq!(extension_owned_recipe_kind(&fixture, &call_args), None);
    }
}