|
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 | +}; |
2 | 11 |
|
3 | 12 | #[tokio::test(flavor = "multi_thread")] |
4 | 13 | async fn run_unified() { |
@@ -52,3 +61,44 @@ async fn run_unified() { |
52 | 61 | .skip_tests(&skipped_tests) |
53 | 62 | .await; |
54 | 63 | } |
| 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