use wasm_bindgen_test::*;
use crate::hash::Hash;
use crate::operation::OperationFields;
use crate::test_utils::fixtures::{operation_with_schema, random_document_view_id};
use crate::wasm::{decode_entry, sign_and_encode_entry, KeyPair};
wasm_bindgen_test_configure!(run_in_browser);
#[wasm_bindgen_test]
fn encodes_decodes_entries() {
let key_pair = KeyPair::new();
let mut fields = OperationFields::new();
fields.insert("username", "dolphin".into()).unwrap();
let operation = operation_with_schema(Some(fields), Some(random_document_view_id()));
let operation_encoded = crate::operation::encode::encode_operation(&operation).unwrap();
let encoded_entry =
sign_and_encode_entry(0, 1, None, None, operation_encoded.to_string(), &key_pair);
assert!(encoded_entry.is_ok());
let decode_result = decode_entry(encoded_entry.unwrap());
assert!(decode_result.is_ok());
let result = sign_and_encode_entry(
0,
7,
Some(Hash::new_from_bytes(&[0, 1, 2]).to_string()),
Some(Hash::new_from_bytes(&[1, 2, 3]).to_string()),
operation_encoded.to_string(),
&key_pair,
);
assert!(result.is_ok());
let result = sign_and_encode_entry(0, 3, None, None, operation_encoded.to_string(), &key_pair);
assert!(result.is_err());
}