141 lines
4.4 KiB
YAML
141 lines
4.4 KiB
YAML
description: "findOneAndReplace-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
|
|
|
|
initialData: &initialData
|
|
- collectionName: *collection0Name
|
|
databaseName: *database0Name
|
|
documents:
|
|
- &initialDocument { _id: 1 }
|
|
|
|
tests:
|
|
- description: "Replacing document with top-level dotted key on 3.6+ server"
|
|
runOnRequirements:
|
|
- minServerVersion: "3.6"
|
|
operations:
|
|
- name: findOneAndReplace
|
|
object: *collection0
|
|
arguments:
|
|
filter: { _id: 1 }
|
|
replacement: &dottedKey { _id: 1, a.b: 1 }
|
|
expectResult: *initialDocument
|
|
expectEvents: &expectEventsDottedKey
|
|
- client: *client0
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
findAndModify: *collection0Name
|
|
query: { _id: 1 }
|
|
update: *dottedKey
|
|
new: { $$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: findOneAndReplace
|
|
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: findOneAndReplace
|
|
object: *collection0
|
|
arguments:
|
|
filter: { _id: 1 }
|
|
replacement: &dollarPrefixedKeyInEmbedded { _id: 1, a: { $b: 1 } }
|
|
expectResult: *initialDocument
|
|
expectEvents: &expectEventsDollarPrefixedKeyInEmbedded
|
|
- client: *client0
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
findAndModify: *collection0Name
|
|
query: { _id: 1 }
|
|
update: *dollarPrefixedKeyInEmbedded
|
|
new: { $$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: findOneAndReplace
|
|
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: findOneAndReplace
|
|
object: *collection0
|
|
arguments:
|
|
filter: { _id: 1 }
|
|
replacement: &dottedKeyInEmbedded { _id: 1, a: { b.c: 1 } }
|
|
expectResult: *initialDocument
|
|
expectEvents: &expectEventsDottedKeyInEmbedded
|
|
- client: *client0
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
findAndModify: *collection0Name
|
|
query: { _id: 1 }
|
|
update: *dottedKeyInEmbedded
|
|
new: { $$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: findOneAndReplace
|
|
object: *collection0
|
|
arguments:
|
|
filter: { _id: 1 }
|
|
replacement: *dottedKeyInEmbedded
|
|
expectError:
|
|
isClientError: false
|
|
expectEvents: *expectEventsDottedKeyInEmbedded
|
|
outcome: *initialData
|