2025-03-17 20:58:26 +01:00

191 lines
5.6 KiB
YAML

description: "poc-crud"
schemaVersion: "1.4"
createEntities:
- client:
id: &client0 client0
observeEvents: [ commandStartedEvent ]
- database:
id: &database0 database0
client: *client0
databaseName: &database0Name crud-tests
- database:
id: &database1 database1
client: *client0
databaseName: &database1Name admin
- collection:
id: &collection0 collection0
database: *database0
collectionName: &collection0Name coll0
- collection:
id: &collection1 collection1
database: *database0
collectionName: &collection1Name coll1
- collection:
id: &collection2 collection2
database: *database0
collectionName: &collection2Name coll2
collectionOptions:
readConcern: { level: majority }
initialData:
- collectionName: *collection0Name
databaseName: *database0Name
documents:
- { _id: 1, x: 11 }
- { _id: 2, x: 22 }
- collectionName: *collection1Name
databaseName: *database0Name
documents:
- { _id: 1, x: 11 }
- collectionName: *collection2Name
databaseName: *database0Name
documents:
- { _id: 1, x: 11 }
- { _id: 2, x: 22 }
- { _id: 3, x: 33 }
- collectionName: &out aggregate_out
databaseName: *database0Name
documents: []
tests:
- description: "BulkWrite with mixed ordered operations"
operations:
- name: bulkWrite
object: *collection0
arguments:
requests:
- insertOne:
document: { _id: 3, x: 33 }
- updateOne:
filter: { _id: 2 }
update: { $inc: { x: 1 } }
- updateMany:
filter: { _id: { $gt: 1 } }
update: { $inc: { x: 1 } }
- insertOne:
document: { _id: 4, x: 44 }
- deleteMany:
filter: { x: { $nin: [ 24, 34 ] } }
- replaceOne:
filter: { _id: 4 }
replacement: { _id: 4, x: 44 }
upsert: true
ordered: true
expectResult:
deletedCount: 2
insertedCount: 2
insertedIds: { $$unsetOrMatches: { 0: 3, 3: 4 } }
matchedCount: 3
modifiedCount: 3
upsertedCount: 1
upsertedIds: { 5: 4 }
outcome:
- collectionName: *collection0Name
databaseName: *database0Name
documents:
- {_id: 2, x: 24 }
- {_id: 3, x: 34 }
- {_id: 4, x: 44 }
- description: "InsertMany continue-on-error behavior with unordered (duplicate key in requests)"
operations:
- name: insertMany
object: *collection1
arguments:
documents:
- { _id: 2, x: 22 }
- { _id: 2, x: 22 }
- { _id: 3, x: 33 }
ordered: false
expectError:
expectResult:
# insertMany throws BulkWriteException, which may optionally include
# an intermediary BulkWriteResult
$$unsetOrMatches:
deletedCount: 0
insertedCount: 2
# Since the map of insertedIds is generated before execution it
# could indicate inserts that did not actually succeed. We omit
# this field rather than expect drivers to provide an accurate
# map filtered by write errors.
matchedCount: 0
modifiedCount: 0
upsertedCount: 0
upsertedIds: { }
outcome:
- collectionName: *collection1Name
databaseName: *database0Name
documents:
- { _id: 1, x: 11 }
- { _id: 2, x: 22 }
- { _id: 3, x: 33 }
- description: "ReplaceOne prohibits atomic modifiers"
operations:
- name: replaceOne
object: *collection1
arguments:
filter: { _id: 1 }
replacement: { $set: { x: 22 }}
expectError:
isClientError: true
expectEvents:
- client: *client0
events: []
outcome:
- collectionName: *collection1Name
databaseName: *database0Name
documents:
- { _id: 1, x: 11 }
- description: "readConcern majority with out stage"
runOnRequirements:
- minServerVersion: "4.1.0"
topologies: [ replicaset, sharded ]
serverless: "forbid"
operations:
- name: aggregate
object: *collection2
arguments:
pipeline: &pipeline
- $sort: { x : 1 }
- $match: { _id: { $gt: 1 } }
- $out: *out
expectEvents:
- client: *client0
events:
- commandStartedEvent:
command:
aggregate: *collection2Name
pipeline: *pipeline
readConcern: { level: majority }
# The following two assertions were not in the original test
commandName: aggregate
databaseName: *database0Name
outcome:
- collectionName: *out
databaseName: *database0Name
documents:
- { _id: 2, x: 22 }
- { _id: 3, x: 33 }
- description: "Aggregate with $listLocalSessions"
runOnRequirements:
- minServerVersion: "3.6.0"
# serverless does not support either of the current database-level aggregation stages ($listLocalSessions and
# $currentOp)
serverless: forbid
operations:
- name: aggregate
object: *database1
arguments:
pipeline:
- $listLocalSessions: { }
- $limit: 1
- $addFields: { dummy: "dummy field"}
- $project: { _id: 0, dummy: 1}
expectResult:
- { dummy: "dummy field" }