use crate::core::entity::{Organization, UserId};
use crate::core::store::Store;
#[derive(Debug, Clone, PartialEq)]
pub enum Request {
Viewer,
}
pub fn load() -> Request {
Request::Viewer
}
pub fn take_viewer(store: &mut Store, id: UserId, organization: Option<Organization>) {
store.viewer_id = Some(id);
store.organization = organization;
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn the_answer_says_who_i_am_and_where() {
let mut store = Store::default();
assert_eq!(load(), Request::Viewer);
let acme: Organization =
serde_json::from_str(r#"{"id":"o1","name":"Acme","urlKey":"acme"}"#).unwrap();
take_viewer(&mut store, UserId::from("me"), Some(acme));
assert_eq!(store.viewer_id, Some(UserId::from("me")));
assert_eq!(store.organization.unwrap().url_key, "acme");
}
}