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

collection_name: &collection_name "test"
database_name: &database_name "command-monitoring-tests"

tests:
  -
    description: "A successful update one"
    operation:
      name: "updateOne"
      arguments:
        filter:
          _id: { $gt: 1 }
        update:
          $inc: { x: 1 }
    expectations:
      -
        command_started_event:
          command:
            update: *collection_name
            ordered: true
            updates:
              -
                q: { _id: { $gt: 1 }}
                u: { $inc: { x: 1 }}
                multi: false
                upsert: false
          command_name: "update"
          database_name: *database_name
      -
        command_succeeded_event:
          reply: { ok: 1.0, n: 1 }
          command_name: "update"
  -
    description: "A successful update one with upsert when the upserted id is not an object id"
    operation:
      name: "updateOne"
      arguments:
        filter:
          _id: 4
        update:
          $inc: { x: 1 }
        upsert: true
    expectations:
      -
        command_started_event:
          command:
            update: *collection_name
            ordered: true
            updates:
              -
                q: { _id: 4 }
                u: { $inc: { x: 1 } }
                multi: false
                upsert: true
          command_name: "update"
          database_name: *database_name
      -
        command_succeeded_event:
          reply: { ok: 1.0, n: 1, upserted: [{ index: 0, _id: 4 }] }
          command_name: "update"
  -
    description: "A successful update one command with write errors"
    operation:
      name: "updateOne"
      arguments:
        filter:
          _id: { $gt: 1 }
        update:
          $nothing: { x: 1 }
    expectations:
      -
        command_started_event:
          command:
            update: *collection_name
            ordered: true
            updates:
              -
                q: { _id: { $gt: 1 }}
                u: { $nothing: { x: 1 }}
                multi: false
                upsert: false
          command_name: "update"
          database_name: *database_name
      -
        command_succeeded_event:
          reply:
            ok: 1.0
            n: 0
            writeErrors:
              - { index: 0, code: 42, errmsg: "" }
          command_name: "update"