lenso-contract-codegen 0.3.0

Code generator for portable Lenso Capability contracts.
Documentation
use std::path::Path;

use lenso_contract_codegen::generate;

#[test]
fn request_providers_preserve_domain_and_runtime_failures() {
    let artifacts = generate(Path::new("tests/fixtures/profile/capability.json"))
        .expect("profile Descriptor should generate");

    assert!(
        artifacts
            .rust
            .contains("Result<RoundTripResponse, ProfileRoundTripInvocationError>")
    );
    assert!(
        artifacts.rust.contains(
            "Err(ProfileRoundTripInvocationError::Domain(error)) => Ok(Err(Box::new(error)"
        )
    );
    assert!(
        artifacts
            .rust
            .contains("Err(ProfileRoundTripInvocationError::Runtime(error)) => Err(error)")
    );
    assert!(artifacts.typescript.contains(
        "round_trip(context: InvocationContext, request: RoundTripRequest): Promise<RoundTripResult>;"
    ));
}

#[test]
fn stream_providers_preserve_domain_and_runtime_failures() {
    let artifacts = generate(Path::new("tests/fixtures/stream/capability.json"))
        .expect("stream Descriptor should generate");

    assert!(
        artifacts
            .rust
            .contains("Result<Box<dyn NativeStreamSession>, ConversationInvocationError>")
    );
    assert!(
        artifacts
            .rust
            .contains("Err(ConversationInvocationError::Runtime(error)) => Err(error)")
    );
    assert!(
        artifacts.typescript.contains(
            "chat(context: InvocationContext, request: ChatRequest): Promise<ChatResult>;"
        )
    );
}