181 lines
5.6 KiB
YAML
181 lines
5.6 KiB
YAML
description: "replaceOne-dots_and_dollars"
|
|
|
|
schemaVersion: "1.0"
|
|
|
|
createEntities:
|
|
- client:
|
|
id: &client0 client0
|
|
observeEvents: [ commandStartedEvent ]
|
|
- database:
|
|
id: &database0 database0
|
|
client: *client0
|
|
databaseName: &database0Name crud-tests
|
|
- collection:
|
|
id: &collection0 collection0
|
|
database: *database0
|
|
collectionName: &collection0Name coll0
|
|
- collection:
|
|
id: &collection1 collection1
|
|
database: *database0
|
|
collectionName: &collection1Name coll1
|
|
collectionOptions:
|
|
writeConcern: { w: 0 }
|
|
|
|
initialData: &initialData
|
|
- collectionName: *collection0Name
|
|
databaseName: *database0Name
|
|
documents:
|
|
- { _id: 1 }
|
|
|
|
tests:
|
|
- description: "Replacing document with top-level dotted key on 3.6+ server"
|
|
runOnRequirements:
|
|
- minServerVersion: "3.6"
|
|
operations:
|
|
- name: replaceOne
|
|
object: *collection0
|
|
arguments:
|
|
filter: { _id: 1 }
|
|
replacement: &dottedKey { _id: 1, a.b: 1 }
|
|
expectResult: &replaceResult
|
|
matchedCount: 1
|
|
modifiedCount: 1
|
|
upsertedCount: 0
|
|
expectEvents: &expectEventsDottedKey
|
|
- client: *client0
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
update: *collection0Name
|
|
updates:
|
|
- q: { _id: 1 }
|
|
u: *dottedKey
|
|
multi: { $$unsetOrMatches: false }
|
|
upsert: { $$unsetOrMatches: false }
|
|
outcome:
|
|
- collectionName: *collection0Name
|
|
databaseName: *database0Name
|
|
documents:
|
|
- *dottedKey
|
|
|
|
- description: "Replacing document with top-level dotted key on pre-3.6 server yields server-side error"
|
|
runOnRequirements:
|
|
- maxServerVersion: "3.4.99"
|
|
operations:
|
|
- name: replaceOne
|
|
object: *collection0
|
|
arguments:
|
|
filter: { _id: 1 }
|
|
replacement: *dottedKey
|
|
expectError:
|
|
isClientError: false
|
|
expectEvents: *expectEventsDottedKey
|
|
outcome: *initialData
|
|
|
|
- description: "Replacing document with dollar-prefixed key in embedded doc on 5.0+ server"
|
|
runOnRequirements:
|
|
- minServerVersion: "5.0"
|
|
operations:
|
|
- name: replaceOne
|
|
object: *collection0
|
|
arguments:
|
|
filter: { _id: 1 }
|
|
replacement: &dollarPrefixedKeyInEmbedded { _id: 1, a: { $b: 1 } }
|
|
expectResult: *replaceResult
|
|
expectEvents: &expectEventsDollarPrefixedKeyInEmbedded
|
|
- client: *client0
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
update: *collection0Name
|
|
updates:
|
|
- q: { _id: 1 }
|
|
u: *dollarPrefixedKeyInEmbedded
|
|
multi: { $$unsetOrMatches: false }
|
|
upsert: { $$unsetOrMatches: false }
|
|
outcome:
|
|
- collectionName: *collection0Name
|
|
databaseName: *database0Name
|
|
documents:
|
|
- *dollarPrefixedKeyInEmbedded
|
|
|
|
- description: "Replacing document with dollar-prefixed key in embedded doc on pre-5.0 server yields server-side error"
|
|
runOnRequirements:
|
|
- maxServerVersion: "4.99"
|
|
operations:
|
|
- name: replaceOne
|
|
object: *collection0
|
|
arguments:
|
|
filter: { _id: 1 }
|
|
replacement: *dollarPrefixedKeyInEmbedded
|
|
expectError:
|
|
isClientError: false
|
|
expectEvents: *expectEventsDollarPrefixedKeyInEmbedded
|
|
outcome: *initialData
|
|
|
|
- description: "Replacing document with dotted key in embedded doc on 3.6+ server"
|
|
runOnRequirements:
|
|
- minServerVersion: "3.6"
|
|
operations:
|
|
- name: replaceOne
|
|
object: *collection0
|
|
arguments:
|
|
filter: { _id: 1 }
|
|
replacement: &dottedKeyInEmbedded { _id: 1, a: { b.c: 1 } }
|
|
expectResult: *replaceResult
|
|
expectEvents: &expectEventsDottedKeyInEmbedded
|
|
- client: *client0
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
update: *collection0Name
|
|
updates:
|
|
- q: { _id: 1 }
|
|
u: *dottedKeyInEmbedded
|
|
multi: { $$unsetOrMatches: false }
|
|
upsert: { $$unsetOrMatches: false }
|
|
outcome:
|
|
- collectionName: *collection0Name
|
|
databaseName: *database0Name
|
|
documents:
|
|
- *dottedKeyInEmbedded
|
|
|
|
- description: "Replacing document with dotted key in embedded doc on pre-3.6 server yields server-side error"
|
|
runOnRequirements:
|
|
- maxServerVersion: "3.4.99"
|
|
operations:
|
|
- name: replaceOne
|
|
object: *collection0
|
|
arguments:
|
|
filter: { _id: 1 }
|
|
replacement: *dottedKeyInEmbedded
|
|
expectError:
|
|
isClientError: false
|
|
expectEvents: *expectEventsDottedKeyInEmbedded
|
|
outcome: *initialData
|
|
|
|
- description: "Unacknowledged write using dollar-prefixed or dotted keys may be silently rejected on pre-5.0 server"
|
|
runOnRequirements:
|
|
- maxServerVersion: "4.99"
|
|
operations:
|
|
- name: replaceOne
|
|
object: *collection1
|
|
arguments:
|
|
filter: { _id: 1 }
|
|
replacement: *dollarPrefixedKeyInEmbedded
|
|
expectResult:
|
|
acknowledged: { $$unsetOrMatches: false }
|
|
expectEvents:
|
|
- client: *client0
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
update: *collection1Name
|
|
updates:
|
|
- q: { _id: 1 }
|
|
u: *dollarPrefixedKeyInEmbedded
|
|
multi: { $$unsetOrMatches: false }
|
|
upsert: { $$unsetOrMatches: false }
|
|
writeConcern: { w: 0 }
|
|
outcome: *initialData
|