view render method

This commit is contained in:
veeso
2021-03-10 14:22:00 +01:00
parent e9d3684f87
commit cdbfb3977b

View File

@@ -24,7 +24,7 @@
*/ */
// imports // imports
use super::{Component, InputEvent, Msg, Payload, Props, PropsBuilder}; use super::{Component, InputEvent, Msg, Payload, Props, PropsBuilder, Render};
// ext // ext
use std::collections::HashMap; use std::collections::HashMap;
@@ -69,6 +69,18 @@ impl View {
self.components.remove(id); self.components.remove(id);
} }
// -- render
/// ### render
///
/// Render component with the provided id
pub fn render(&self, id: &str) -> Option<Render> {
match self.components.get(id) {
None => None,
Some(component) => component.render(),
}
}
// -- props // -- props
/// ### get_props /// ### get_props
@@ -224,6 +236,16 @@ mod tests {
assert!(view.components.get(text).is_none()); assert!(view.components.get(text).is_none());
} }
#[test]
fn test_ui_layout_view_mount_render() {
let mut view: View = View::init();
// Mount component
let input: &str = "INPUT";
view.mount(input, make_component_input());
assert!(view.render(input).is_some());
assert!(view.render("unexisting").is_none());
}
#[test] #[test]
fn test_ui_layout_view_focus() { fn test_ui_layout_view_focus() {
let mut view: View = View::init(); let mut view: View = View::init();
@@ -352,7 +374,10 @@ mod tests {
assert_eq!( assert_eq!(
view.on(InputEvent::Key(KeyEvent::from(KeyCode::Enter))) view.on(InputEvent::Key(KeyEvent::from(KeyCode::Enter)))
.unwrap(), .unwrap(),
(input.to_string(), Msg::OnSubmit(Payload::Text(String::from("text1")))) (
input.to_string(),
Msg::OnSubmit(Payload::Text(String::from("text1")))
)
); );
} }