// file: ks-config/tests/external_composition_api.rs // version: 2 //! External API coverage for binary composition and shared configuration documents. #[test] fn external_consumer_resolves_composition_through_crate_root_exports() { let composition = match ks_config::parse_composition_json(include_str!( "../../config/example.kb-app-demo-desktop.default.config.json" )) { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => panic!("composition must parse: {error}"), }; let transport = match ks_config::parse_transport_json(include_str!( "../../config/example.transport.config.json" )) { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => panic!("transport must parse: {error}"), }; let listeners = match ks_config::parse_listeners_json(include_str!( "../../config/example.listeners.config.json" )) { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => panic!("listeners must parse: {error}"), }; let store = match ks_config::parse_store_json(include_str!("../../config/example.store.config.json")) { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => panic!("store must parse: {error}"), }; let wallet = match ks_config::parse_wallet_json(include_str!("../../config/example.wallet.config.json")) { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => panic!("wallet must parse: {error}"), }; let execution = match ks_config::parse_execution_json(include_str!( "../../config/example.execution.config.json" )) { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => panic!("execution must parse: {error}"), }; let resolved = match ks_config::compose_app_config( &composition, &transport, &listeners, &store, &wallet, &execution, ) { std::result::Result::Ok(value) => value, std::result::Result::Err(error) => panic!("composition must resolve: {error}"), }; assert_eq!(resolved.active_profile, composition.active_profile); assert_eq!(resolved.profiles.len(), composition.profiles.len()); }