konnektoren_core/konnektoren_js/
result.rs1use super::JsExecutor;
2use crate::challenges::CustomChallengeResult;
3use wasm_bindgen::JsValue;
4
5pub struct ResultHandler<'a> {
6 js_executor: &'a JsExecutor<'a>,
7}
8
9impl<'a> ResultHandler<'a> {
10 pub fn new(js_executor: &'a JsExecutor<'a>) -> Self {
11 Self { js_executor }
12 }
13
14 pub fn set_result_data(&self, result_data: CustomChallengeResult) {
15 let js_result_data = serde_wasm_bindgen::to_value(&result_data).unwrap();
16 let konnektoren_obj = self.js_executor.get_or_create_konnektoren_object();
17 js_sys::Reflect::set(
18 &konnektoren_obj,
19 &JsValue::from_str("result"),
20 &js_result_data,
21 )
22 .unwrap();
23 }
24}
25
26#[cfg(target_arch = "wasm32")]
27#[cfg(test)]
28mod tests {
29 use super::*;
30 use crate::challenges::{Custom, CustomChallengeResult};
31 use wasm_bindgen_test::*;
32
33 #[wasm_bindgen_test]
34 fn test_result_handler() {
35 let challenge = Custom::default();
36 let window = web_sys::window().unwrap();
37 let js_executor = JsExecutor::new(&window);
38 let result = CustomChallengeResult::default();
39 let handler = ResultHandler::new(&js_executor);
40 handler.set_result_data(result.clone());
41 }
42}