use faucet_core::capabilities::config::is_set;
use faucet_core::{Capabilities, ConnectorDescriptor, Value};
pub const DESCRIPTOR: ConnectorDescriptor = ConnectorDescriptor::new("oracle", capabilities)
.with_host_identity(faucet_common_oracle::host_identity);
fn capabilities(config: &Value) -> Capabilities {
Capabilities::builder()
.discover(true)
.shardable(config.is_null() || is_set(config, "shard"))
.build()
}
#[cfg(test)]
mod tests {
use super::*;
use faucet_core::json;
#[test]
fn shardable_follows_the_shard_block() {
let plain = DESCRIPTOR.capabilities(&json!({"connection_url": "u", "query": "q"}));
assert!(plain.discover() && !plain.range_read() && !plain.range_digest());
assert!(!plain.shardable() && !plain.exactly_once() && !plain.reports_lag());
let sharded = DESCRIPTOR.capabilities(&json!({"shard": {"key": "id"}}));
assert!(sharded.shardable() && !sharded.range_read());
assert!(!DESCRIPTOR.capabilities(&json!({"shard": null})).shardable());
let kind = DESCRIPTOR.capabilities(&Value::Null);
assert!(kind.shardable() && kind.discover() && !kind.range_read());
assert_eq!(DESCRIPTOR.kind(), "oracle");
}
}