use std::future; use faker_rand::{ en_us::{addresses::CityName, names::FullName}, faker_impl_from_templates, }; use rand; use crate::{ app::App, channel::{self, Channel}, clock::RequestedAt, event::Event, }; pub async fn create(app: &App, created_at: &RequestedAt) -> Channel { let name = propose(); app.channels() .create(&name, created_at) .await .expect("should always succeed if the channel is actually new") } pub fn propose() -> String { rand::random::().to_string() } struct Name(String); faker_impl_from_templates! { Name; "{} {}", CityName, FullName; } pub fn events(event: Event) -> future::Ready> { future::ready(match event { Event::Channel(channel) => Some(channel), _ => None, }) } pub fn created(event: channel::Event) -> future::Ready> { future::ready(match event { channel::Event::Created(event) => Some(event), channel::Event::Deleted(_) => None, }) }