Skip to content

Commit 33772e2

Browse files
RUST-2065 Test that driver-generated _id fields are prepended (#1350)
1 parent 8ea7a0f commit 33772e2

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

src/test/spec/crud.rs

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
1-
use crate::test::{spec::unified_runner::run_unified_tests, SERVERLESS};
1+
use crate::{
2+
bson::doc,
3+
test::{
4+
log_uncaptured,
5+
server_version_lt,
6+
spec::unified_runner::run_unified_tests,
7+
SERVERLESS,
8+
},
9+
Client,
10+
};
211

312
#[tokio::test(flavor = "multi_thread")]
413
async fn run_unified() {
@@ -52,3 +61,44 @@ async fn run_unified() {
5261
.skip_tests(&skipped_tests)
5362
.await;
5463
}
64+
65+
#[tokio::test]
66+
async fn generated_id_first_field() {
67+
let client = Client::for_test().monitor_events().await;
68+
let events = &client.events;
69+
let collection = client.database("db").collection("coll");
70+
71+
collection.insert_one(doc! { "x": 1 }).await.unwrap();
72+
let insert_events = events.get_command_started_events(&["insert"]);
73+
let insert_document = insert_events[0]
74+
.command
75+
.get_array("documents")
76+
.unwrap()
77+
.first()
78+
.unwrap()
79+
.as_document()
80+
.unwrap();
81+
let (key, _) = insert_document.iter().next().unwrap();
82+
assert_eq!(key, "_id");
83+
84+
if server_version_lt(8, 0).await || *SERVERLESS {
85+
log_uncaptured("skipping bulk write test in generated_id_first_field");
86+
return;
87+
}
88+
89+
let insert_one_model = collection.insert_one_model(doc! { "y": 2 }).unwrap();
90+
client.bulk_write(vec![insert_one_model]).await.unwrap();
91+
let bulk_write_events = events.get_command_started_events(&["bulkWrite"]);
92+
let insert_operation = bulk_write_events[0]
93+
.command
94+
.get_array("ops")
95+
.unwrap()
96+
.first()
97+
.unwrap()
98+
.as_document()
99+
.unwrap();
100+
assert!(insert_operation.contains_key("insert"));
101+
let insert_document = insert_operation.get_document("document").unwrap();
102+
let (key, _) = insert_document.iter().next().unwrap();
103+
assert_eq!(key, "_id");
104+
}

0 commit comments

Comments
 (0)