cf-chat-engine 0.2.1

Chat Engine module: multi-tenant conversational infrastructure with plugin-driven backends
Documentation
use super::*;

#[test]
fn parse_format_defaults_to_json() {
    assert_eq!(parse_format(None).unwrap(), ExportFormat::Json);
}

#[test]
fn parse_format_accepts_known_values() {
    assert_eq!(parse_format(Some("json")).unwrap(), ExportFormat::Json);
    assert_eq!(
        parse_format(Some("markdown")).unwrap(),
        ExportFormat::Markdown
    );
    assert_eq!(parse_format(Some("md")).unwrap(), ExportFormat::Markdown);
}

#[test]
fn parse_format_rejects_unknown_value() {
    let err = parse_format(Some("yaml")).unwrap_err();
    assert!(matches!(err, ChatEngineError::BadRequest { .. }));
}

#[test]
fn map_share_error_emits_410_for_expired_conflict() {
    let err = ChatEngineError::Conflict {
        reason: "share token expired".into(),
    };
    let response = map_share_error(err);
    assert_eq!(response.status(), StatusCode::GONE);
}

#[test]
fn map_share_error_passes_through_unrelated_conflicts() {
    let err = ChatEngineError::Conflict {
        reason: "invalid lifecycle transition".into(),
    };
    let response = map_share_error(err);
    assert_eq!(response.status(), StatusCode::CONFLICT);
}

#[test]
fn revoke_share_response_serializes_as_empty_object() {
    let body = serde_json::to_string(&RevokeShareResponse {}).unwrap();
    assert_eq!(body, "{}");
}

#[test]
fn create_share_body_anti_spoof_fields_default_none() {
    let body: CreateShareBody = serde_json::from_str("{}").unwrap();
    assert!(body.expires_in_hours.is_none());
    assert!(body.tenant_id.is_none());
    assert!(body.user_id.is_none());
}

#[test]
fn create_share_body_rejects_spoofed_identity() {
    let body: CreateShareBody = serde_json::from_str(r#"{"tenant_id": "x"}"#).unwrap();
    let result = reject_body_identity(&body.tenant_id, &body.user_id);
    assert!(matches!(result, Err(ChatEngineError::BadRequest { .. })));
}

#[test]
fn export_session_query_defaults() {
    let q: ExportSessionQuery = serde_json::from_str("{}").unwrap();
    assert!(q.format.is_none());
    assert!(q.include_plugin_metadata.is_none());
}