#[allow(deprecated)]
mod deprecated {
use_prelude!();
use crate::{
prelude::DocumentId,
store::collection::document::{DittoDocument as _, DittoMutDocument as _},
test_helpers::setup_ditto,
types::rga::{DittoMutableRga, DittoRga},
utils::prelude::ErrorKind,
};
use serde_json::json;
#[test]
fn create_in_document() {
let ditto = setup_ditto().unwrap();
let store = ditto.store();
let collection = store.collection("test").unwrap();
let doc_id = DocumentId::new(&"test_rga").unwrap();
let doc = collection.find_by_id(&doc_id).exec();
assert!(doc.is_err());
let e = doc.err().unwrap();
let error_kind = e.kind();
assert_eq!(error_kind, ErrorKind::NonExtant);
let content = json!({"_id": "test_rga" ,"rga": DittoRga::new()});
let doc_id = collection.upsert(content).unwrap();
let doc = collection.find_by_id(doc_id).exec();
assert!(doc.is_ok());
}
#[test]
fn set_rga() {
let ditto = setup_ditto().unwrap();
let store = ditto.store();
let collection = store.collection("test").unwrap();
let doc_id = collection.upsert(json!({})).unwrap();
collection
.find_by_id(&doc_id)
.update(|mut_doc| {
let mut_doc = mut_doc.unwrap();
let rga = DittoRga::new();
mut_doc.set("rga", rga).unwrap();
})
.unwrap();
let doc = collection.find_by_id(&doc_id).exec().unwrap();
let _rga: DittoRga = doc.get("rga").unwrap();
}
#[test]
fn push() {
let ditto = setup_ditto().unwrap();
let store = ditto.store();
let collection = store.collection("test").unwrap();
let doc_id = collection
.upsert(json!({ "rga": DittoRga::new() }))
.unwrap();
collection
.find_by_id(&doc_id)
.update(|mut_doc| {
let mut_doc = mut_doc.unwrap();
let mut rga: DittoMutableRga = mut_doc.get_mut("rga").unwrap();
rga.push(42u32).unwrap();
rga.push("I ♥ Ditto").unwrap();
})
.unwrap();
let doc = collection.find_by_id(&doc_id).exec().unwrap();
let rga: DittoRga = doc.get("rga").unwrap();
assert_eq!(rga.get::<u32>(0).unwrap(), 42u32);
assert_eq!(rga.get::<String>(1).unwrap(), "I ♥ Ditto");
}
#[test]
fn pop() {
let ditto = setup_ditto().unwrap();
let store = ditto.store();
let collection = store.collection("test").unwrap();
let mut rga = DittoRga::new();
rga.push(64f64)
.unwrap()
.push("I ♥ Ditto")
.unwrap()
.push(vec![1, 2, 3])
.unwrap();
let doc_id = collection.upsert(json!({ "rga": rga })).unwrap();
collection
.find_by_id(&doc_id)
.update(|mut_doc| {
let mut_doc = mut_doc.unwrap();
let mut rga: DittoMutableRga = mut_doc.get_mut("rga").unwrap();
rga.pop().unwrap();
rga.pop().unwrap();
})
.unwrap();
let doc = collection.find_by_id(&doc_id).exec().unwrap();
let rga: DittoRga = doc.get("rga").unwrap();
assert_eq!(rga.len(), 1);
assert_eq!(rga.get::<f64>(0).unwrap(), 64f64);
}
#[test]
fn remove() {
let ditto = setup_ditto().unwrap();
let store = ditto.store();
let collection = store.collection("test").unwrap();
let mut rga = DittoRga::new();
rga.push(64f64)
.unwrap()
.push("I ♥ Ditto")
.unwrap()
.push(vec![1, 2, 3])
.unwrap();
let doc_id = collection.upsert(json!({ "rga": rga })).unwrap();
collection
.find_by_id(&doc_id)
.update(|mut_doc| {
let mut_doc = mut_doc.unwrap();
let mut rga: DittoMutableRga = mut_doc.get_mut("rga").unwrap();
rga.remove(1).unwrap();
})
.unwrap();
let doc = collection.find_by_id(&doc_id).exec().unwrap();
let rga: DittoRga = doc.get("rga").unwrap();
assert_eq!(rga.len(), 2);
}
#[test]
fn insert() {
let ditto = setup_ditto().unwrap();
let store = ditto.store();
let collection = store.collection("test").unwrap();
let mut rga = DittoRga::new();
rga.push(64f64)
.unwrap()
.push("I ♥ Ditto")
.unwrap()
.push(vec![1, 2, 3])
.unwrap();
let doc_id = collection.upsert(json!({ "rga": rga })).unwrap();
collection
.find_by_id(&doc_id)
.update(|mut_doc| {
let mut_doc = mut_doc.unwrap();
let mut rga: DittoMutableRga = mut_doc.get_mut("rga").unwrap();
rga.insert("It's a Pikachu!", 1).unwrap();
rga.insert(12f32, 1).unwrap();
})
.unwrap();
let doc = collection.find_by_id(&doc_id).exec().unwrap();
let rga: DittoRga = doc.get("rga").unwrap();
assert_eq!(rga.len(), 5);
assert_eq!(rga.get::<f32>(1).unwrap(), 12f32);
assert_eq!(rga.get::<String>(2).unwrap(), "It's a Pikachu!");
}
#[test]
fn wrong_index() {
let ditto = setup_ditto().unwrap();
let store = ditto.store();
let collection = store.collection("test").unwrap();
let mut rga = DittoRga::new();
rga.push(64f64)
.unwrap()
.push("I ♥ Ditto")
.unwrap()
.push(vec![1, 2, 3])
.unwrap();
let doc_id = collection.upsert(json!({ "rga": rga })).unwrap();
collection
.find_by_id(&doc_id)
.update(|mut_doc| {
let mut_doc = mut_doc.unwrap();
let mut rga: DittoMutableRga = mut_doc.get_mut("rga").unwrap();
assert!(rga.insert("Won't work", 10).is_err());
assert!(rga.remove(10).is_err());
assert!(rga.set("Won't work too", 10).is_err());
rga.insert("It's a Pikachu!", 1).unwrap();
rga.insert(12f32, 1).unwrap();
})
.unwrap();
let doc = collection.find_by_id(&doc_id).exec().unwrap();
let rga: DittoRga = doc.get("rga").unwrap();
assert_eq!(rga.len(), 5);
assert_eq!(rga.get::<f32>(1).unwrap(), 12f32);
assert_eq!(rga.get::<String>(2).unwrap(), "It's a Pikachu!");
}
}