use std::ops::Deref;
use super::builder::{LocalRelayBuilder, LocalRelayTestOptions};
use super::local::LocalRelay;
use crate::error::Error;
#[derive(Debug, Clone)]
pub struct MockRelay {
local: LocalRelay,
}
impl Deref for MockRelay {
type Target = LocalRelay;
fn deref(&self) -> &Self::Target {
&self.local
}
}
impl MockRelay {
async fn new(builder: LocalRelayBuilder) -> Result<Self, Error> {
let relay: LocalRelay = builder.build();
relay.run().await?;
Ok(Self { local: relay })
}
#[inline]
pub async fn run() -> Result<Self, Error> {
let builder = LocalRelayBuilder::default();
Self::new(builder).await
}
#[inline]
pub async fn run_with_opts(opts: LocalRelayTestOptions) -> Result<Self, Error> {
let builder = LocalRelayBuilder::default().test(opts);
Self::new(builder).await
}
}