Fix body to JsValue conversion (#1354)
* fix body to JsValue conversion * add tests
This commit is contained in:
@@ -40,8 +40,7 @@ impl Body {
|
||||
Inner::Bytes(body_bytes) => {
|
||||
let body_bytes: &[u8] = body_bytes.as_ref();
|
||||
let body_uint8_array: Uint8Array = body_bytes.into();
|
||||
let body_array = Array::new();
|
||||
body_array.push(&body_uint8_array);
|
||||
let body_array = Array::from(&body_uint8_array);
|
||||
let js_value: &JsValue = body_array.as_ref();
|
||||
Ok(js_value.to_owned())
|
||||
}
|
||||
@@ -129,3 +128,49 @@ impl fmt::Debug for Body {
|
||||
f.debug_struct("Body").finish()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use js_sys::{Array, Uint8Array};
|
||||
use wasm_bindgen::{prelude::*, JsValue};
|
||||
use wasm_bindgen_test::*;
|
||||
|
||||
wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser);
|
||||
|
||||
#[wasm_bindgen]
|
||||
extern "C" {
|
||||
// Use `js_namespace` here to bind `console.log(..)` instead of just
|
||||
// `log(..)`
|
||||
#[wasm_bindgen(js_namespace = console)]
|
||||
fn log(s: String);
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
async fn test_body() {
|
||||
use crate::Body;
|
||||
|
||||
let body = Body::from("TEST");
|
||||
assert_eq!([84, 69, 83, 84], body.as_bytes().unwrap());
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
async fn test_body_js() {
|
||||
use crate::Body;
|
||||
|
||||
let body = Body::from("TEST");
|
||||
|
||||
let arr = [84u8, 69, 83, 84];
|
||||
let u8_arr: Uint8Array = arr.as_ref().into();
|
||||
let expected = JsValue::from(Array::from(&u8_arr));
|
||||
|
||||
// ty JS -.-
|
||||
assert_eq!(
|
||||
format!("{:#?}", expected),
|
||||
format!(
|
||||
"{:#?}",
|
||||
body.to_js_value()
|
||||
.expect("could not convert body to JsValue")
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user