runOn:
  - { minServerVersion: "4.3.4" }

data:
  - { _id: 1, x: 11 }
  - { _id: 2, x: 22 }

collection_name: &collection_name 'findOneAndDelete_hint'

tests:
  -
    description: "FindOneAndDelete with hint string"
    operations:
      -
        object: collection
        name: findOneAndDelete
        arguments:
          filter: &filter { _id: 1 }
          hint: "_id_"
        # original document is returned by default
        result: &result { _id: 1, x: 11 }
    expectations:
      -
        command_started_event:
          command:
            findAndModify: *collection_name
            query: *filter
            hint: "_id_"
            remove: true
    outcome: &outcome
      collection:
        data:
          - { _id: 2, x: 22 }
  -
    description: "FindOneAndDelete with hint document"
    operations:
      -
        object: collection
        name: findOneAndDelete
        arguments:
          filter: &filter { _id: 1 }
          hint: { _id: 1 }
        # original document is returned by default
        result: &result { _id: 1, x: 11 }
    expectations:
      -
        command_started_event:
          command:
            findAndModify: *collection_name
            query: *filter
            hint: { _id: 1 }
            remove: true
    outcome: &outcome
      collection:
        data:
          - { _id: 2, x: 22 }
